Spostare il marker in modo uniforme lungo due coordinate GPS


10

Sto cercando di animare un marcatore da una coordinata GPS a un'altra. Attualmente sto utilizzando Google Maps per raggiungere questo obiettivo e, sebbene il mio algoritmo sembra corretto, Google Maps sta facendo un cattivo lavoro nel convertire la posizione GPS nel pixel giusto sulla mappa, il che rende l'animazione non così fluida quando la mappa viene ingrandita . Ingrandito, è molto fluido ed è per questo che sospetto che lo "zig zag" sia causato da una cattiva conversione di LatLng-> pixel da parte di Google.

La soluzione migliore sarebbe per me gestire direttamente le coordinate dei pixel dei marker (x, y), ma sfortunatamente non esiste un metodo pubblico per assegnare la posizione dei pixel a un marker.

Il codice è disponibile qui: http://dev.syskall.com/map/

Come rendere l'animazione più fluida quando si esegue lo zoom indietro? In alternativa, sarei interessato a utilizzare un equivalente di Google Maps che mi consentirebbe di realizzare ciò che sto cercando di fare se non fosse possibile con Google Maps.

PS: Non sono sicuro se questo è il posto giusto per porre la mia domanda, fammi sapere se non è il caso.

Risposte:



2

È possibile utilizzare la libreria marker-animate-discreta per far passare agevolmente i marker da una posizione all'altra.

Puoi inizializzare il tuo marker in questo modo:

var marker = new SlidingMarker({
   //your original marker options
   //...
});

Quindi il tuo marker si animerà dalla posizione iniziale a quella data in questa chiamata:

marker.setPosition(givenPosition);

PS Sono l'autore della biblioteca.


La tua libreria ha la possibilità di ruotare l'icona di un angolo? basato sull'ultimo lat, lon si trasferisce al prossimo lat lon?
Tim Maxey,

Vedi la discussione qui . C'è un evento generato per ogni passaggio dell'animazione, in cui è possibile ottenere le coordinate e provare a ruotare il marker.
viskin,


1

Potresti anche considerare il seguente approccio:

  • genera una raccolta marker tra due coordinate per ogni posizione
  • attiva / disattiva un marcatore specifico usando la marker.setVisibility(value)funzione

Esempio completo

JSFiddle

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.