2009-12-02 15 views

risposta

11

Si sposta un oggetto OpenLayers.Feature.Vector chiamando metodi sul suo oggetto geometry, non sul vettore stesso. Questi metodi includono spostare, ruotare, ridimensionare e trasformare.

Nota che non troverai nessuno dei metodi definiti sull'oggetto base OpenLayers.Geometry ma solo sull'oggetto figlio appropriato (nota che esistono più livelli di ereditarietà nelle geometrie di OpenLayers). OpenLayers.Geometry.Collection è un buon esempio.

È possibile trovare un ottimo esempio di spostamento dei vettori OpenLayers here.

+1

Va bene, sono ora in grado di utilizzare il metodo 'OpenLayers.Geometry.Point.move()' per spostare la funzione da una certa quantità. Ma ho bisogno di spostare la funzione in una posizione specifica. C'è un modo semplice per farlo o devo calcolare l'importo che devo spostare. –

+0

Il metodo di spostamento agisce sfalsando le proprietà x e y sulla geometria. Se utilizzi un Punto (come indicato sopra), puoi eseguire questa operazione: function movePoint (point, x, y) { point.x = x; point.y = y; point.clearBounds(); } Si può dare un'occhiata alla fonte per lo spostamento di un punto qui: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Point.js Lavorare con geometrie più complicate richiederà più lavoro Controlla l'implementazione dello spostamento per Raccolta qui: http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Geometry/Collection.js – atogle

+0

Grazie, la funzione movePoint() funziona bene. –

6

questo ha funzionato per me:

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

Sembra che potresti semplicemente impostare i valori 'x' e' y' di un punto direttamente per evitare quella computazione inutile. –

+0

Il tuo oggetto geometrico è feature.geometry o sth else? Ho provato questo, ma non funziona, perché ?: var feature = vectorLayer.getFeatureById (id); feature.geometry.move (lon, lat); @danielB –

Problemi correlati