2009-12-02 13 views
8

OpenLayers.Feature.Vector के लिए एपीआई दस्तावेज कहता है कि वेक्टर के पास बिल्कुल कोई तरीका नहीं है।ओपनलेयर वेक्टर प्रोग्रामेटिक रूप से कैसे स्थानांतरित करें?

मुझे पता है कि उपयोगकर्ता को OpenLayers.Control.DragFeature मानचित्र पर नियंत्रण जोड़कर वेक्टर को कैसे स्थानांतरित करने दें। तो यदि उपयोगकर्ता वेक्टर को स्थानांतरित कर सकता है तो प्रोग्राम को प्रोग्रामिक रूप से स्थानांतरित करने के लिए बा को भी एक तरीका है। लेकिन मैं यह नहीं समझ सकता कि इसे कैसे किया जाए।

उत्तर

11

आप OpenLayers.Feature.Vector ऑब्जेक्ट को अपने geometry ऑब्जेक्ट पर विधियों को कॉल करके, वेक्टर के रूप में नहीं बुलाते हैं। इन तरीकों में कदम, घुमाएं, आकार बदलें, और परिवर्तन शामिल हैं।

ध्यान दें कि आपको OpenLayers.Geometry बेस ऑब्जेक्ट पर परिभाषित विधियों में से कोई भी नहीं मिलेगा, लेकिन केवल उपयुक्त बच्चे ऑब्जेक्ट पर (ध्यान दें कि ओपनलेयर ज्यामिति के भीतर विरासत के कई स्तर हैं)। OpenLayers.Geometry.Collection एक अच्छा उदाहरण है।

आप प्रोग्रामेटिक रूप से ओपनलेयर वैक्टर here को स्थानांतरित करने का एक शानदार उदाहरण पा सकते हैं।

+1

ठीक है, मैं अब कुछ राशि से सुविधा ले जाने के लिए उपयोग करने के लिए 'OpenLayers.Geometry.Point.move()' विधि में सक्षम हूँ। लेकिन मुझे सुविधा को एक विशिष्ट स्थान में स्थानांतरित करने की आवश्यकता है। क्या ऐसा करने का कोई आसान तरीका है या क्या मुझे उस राशि की गणना करना है जो मुझे इसे स्थानांतरित करना है। –

+0

चाल विधि ज्यामिति पर एक्स और वाई गुणों को ऑफ़सेट करके काम करती है। यदि आप एक प्वाइंट (ऊपर बताए गए अनुसार) का उपयोग कर रहे हैं तो आप यह कर सकते हैं: फ़ंक्शन मूवपॉइंट (पॉइंट, एक्स, वाई) { point.x = x; point.y = y; प्वाइंट.क्लरबाउंड्स(); } आप यहाँ एक बिंदु से आगे बढ़ के लिए स्रोत पर एक नज़र ले जा सकते हैं: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Point.js अधिक जटिल geometries के साथ कार्य करना अधिक काम की आवश्यकता होगी। यहां संग्रह के लिए कदम कार्यान्वयन देखें: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Collection.js – atogle

+0

धन्यवाद, movePoint() funktion अच्छी तरह से काम करता है। –

6

यह मेरे लिए काम किया:

geometry.move(Y_NextPosition - Y_CurrentPosition, X_NextPosition - X_CurrentPosition) 
+0

ऐसा लगता है कि आप उस अनावश्यक गणना से बचने के लिए सीधे एक बिंदु के 'x' और' y' मान सेट कर सकते हैं। –

+0

क्या आपकी ज्यामिति वस्तु सुविधा है। ज्यामिति या अन्यथा? मैंने कोशिश की लेकिन काम नहीं किया, क्यों ?: var सुविधा = vectorLayer.getFeatureById (आईडी); feature.geometry.move (लोन, लैट); @danielB –

संबंधित मुद्दे