Płynne przesuwanie znacznika wzdłuż dwóch współrzędnych GPS


10

Próbuję animować znacznik z jednej współrzędnej GPS na drugą. Obecnie używam do tego celu Google Maps i chociaż mój algorytm wydaje się prawidłowy, Google Maps źle sobie radzi z konwertowaniem pozycji GPS na prawy piksel na mapie, co sprawia, że ​​animacja nie jest tak płynna, gdy mapa jest pomniejszona . Zbliżenie jest bardzo płynne i dlatego podejrzewam, że „zygzak” jest spowodowany słabą konwersją LatLng-> pikseli przez Google.

Najlepszym rozwiązaniem byłoby zajęcie się bezpośrednio współrzędnymi pikselowymi znaczników (x, y), ale niestety nie ma publicznej metody przypisywania położenia piksela do znacznika.

Kod jest dostępny tutaj: http://dev.syskall.com/map/

Jak sprawić, by animacja była płynniejsza po pomniejszeniu? Alternatywnie, chciałbym użyć odpowiednika Google Maps, który pozwoliłby mi osiągnąć to, co próbuję zrobić, jeśli nie jest to możliwe z Mapami Google.

PS: Nie jestem pewien, czy jest to właściwe miejsce, aby zadać moje pytanie, daj mi znać, jeśli tak nie jest.

Odpowiedzi:



2

Możesz użyć biblioteki animacji znaczników, która nie rzuca się w oczy, aby umożliwić płynne przechodzenie znaczników z jednej lokalizacji do drugiej.

Możesz zainicjować swój marker w ten sposób:

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

Twój znacznik będzie animowany od miejsca początkowego do podanego w tej rozmowie:

marker.setPosition(givenPosition);

PS Jestem autorem biblioteki.


Czy Twoja biblioteka ma możliwość obracania ikony pod kątem? na podstawie ostatniego lat, lon przenosi się do następnego lat lon?
Tim Maxey,

Zobacz dyskusję tutaj . Dla każdego kroku animacji powstaje zdarzenie, w którym możesz uzyskać współrzędne i spróbować obrócić znacznik.
viskin


1

Możesz również rozważyć następujące podejście:

  • generuj kolekcję znaczników między dwiema współrzędnymi dla każdej lokalizacji
  • przełącz określony znacznik za pomocą marker.setVisibility(value)funkcji

Kompletny przykład

JSFiddle

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.