2009-12-02 8 views

Antwort

11

Sie verschieben ein OpenLayers.Feature.Vector Objekt, indem Sie Methoden auf seinem Objekt geometry aufrufen, nicht den Vektor selbst. Zu diesen Methoden gehören Verschieben, Drehen, Größenänderung und Transformation.

Beachten Sie, dass Sie keine der Methoden finden, die für das OpenLayers.Geometry-Basisobjekt definiert sind, sondern nur für das entsprechende untergeordnete Objekt (beachten Sie, dass es innerhalb von OpenLayers-Geometrien mehrere Vererbungsebenen gibt). OpenLayers.Geometry.Collection ist ein gutes Beispiel.

Sie können ein großartiges Beispiel für das programmatische Verschieben von OpenLayers Vektoren here finden.

+1

Okay, ich bin jetzt in der Lage 'OpenLayers.Geometry.Point.move()' Methode zu verwenden, um die Funktion um einen gewissen Betrag zu bewegen. Aber ich muss das Feature an einen bestimmten Ort verschieben. Gibt es einen einfachen Weg das zu tun oder muss ich den Betrag berechnen, um den ich es verschieben muss? –

+0

Die Verschiebungsmethode funktioniert, indem die X- und Y-Eigenschaften in der Geometrie ausgeglichen werden. Wenn Sie einen Punkt verwenden (wie oben angegeben), können Sie Folgendes tun: Funktion movePoint (Punkt, x, y) { point.x = x; point.y = y; point.clearBounds(); } Sie können hier einen Punkt an der Quelle einen Blick für die Bewegung: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Point.js mit komplizierteren Geometrien Arbeiten wird mehr Arbeit erfordern. Schauen Sie sich die Move-Implementierung für Collection hier an: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Collection.js – atogle

+0

Danke, die movePoint() -Funktion funktioniert gut. –

6

Das ist für mich gearbeitet:

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

Scheint so, als könnten Sie einfach die 'x' und' y' Werte eines Punktes direkt setzen, um unnötige Berechnungen zu vermeiden. –

+0

Ist Ihr Geometrieobjekt feature.geometry oder etw sonst? Ich habe das versucht, aber nicht funktioniert, warum ?: var feature = vectorLayer.getFeatureById (id); feature.geometry.move (lon, lat); @danielB –

Verwandte Themen