2009-12-02 10 views

Répondre

11

Vous déplacez un objet OpenLayers.Feature.Vector en appelant des méthodes sur son objet geometry, pas le vecteur lui-même. Ces méthodes incluent le déplacement, la rotation, le redimensionnement et la transformation.

Notez que vous ne trouverez aucune des méthodes définies sur l'objet de base OpenLayers.Geometry mais uniquement sur l'objet enfant approprié (notez qu'il existe plusieurs niveaux d'héritage dans les géométries OpenLayers). OpenLayers.Geometry.Collection est un bon exemple.

Vous pouvez trouver un excellent exemple de vecteurs OpenLayers en déplacement par programme here.

+1

D'accord, je suis maintenant en mesure d'utiliser 'OpenLayers.Geometry.Point.move()' pour déplacer la fonction d'un certain montant. Mais j'ai besoin de déplacer la fonctionnalité dans un endroit spécifique. Y at-il un moyen simple de le faire ou dois-je calculer le montant que je dois le déplacer. –

+0

La méthode de déplacement fonctionne en décalant les propriétés x et y de la géométrie. Si vous utilisez un point (comme indiqué ci-dessus), vous pouvez le faire: Fonction movePoint (point, x, y) { point.x = x; point.y = y; point.clearBounds(); } Vous pouvez jeter un oeil à la source pour déplacer un point ici: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Point.js Travailler avec des géométries plus complexes nécessitera plus de travail. Découvrez l'implémentation de déplacement pour Collection ici: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Collection.js – atogle

+0

Merci, la fonction movePoint() fonctionne bien. –

6

Cela a fonctionné pour moi:

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

On dirait que vous pouvez simplement définir les valeurs 'x' et' y' d'un point directement pour éviter ce calcul inutile. –

+0

Votre objet géométrique feature.geometry ou sth else? J'ai essayé cela mais ne fonctionne pas, pourquoi ?: var feature = vectorLayer.getFeatureById (id); feature.geometry.move (lon, lat); @danielB –

Questions connexes