Bewegen Sie den Marker reibungslos entlang zweier GPS-Koordinaten

10

Ich versuche, einen Marker von einer GPS-Koordinate zur anderen zu animieren. Ich verwende derzeit Google Maps, um dies zu erreichen. Obwohl mein Algorithmus richtig erscheint, kann Google Maps die GPS-Position nur schlecht in das richtige Pixel auf der Karte konvertieren, wodurch die Animation beim Verkleinern der Karte nicht so flüssig wird . Vergrößert ist es sehr flüssig und deshalb vermute ich, dass der "Zick-Zack" durch Google verursacht wird, das eine schlechte LatLng-> Pixel-Konvertierung durchführt.

Die beste Lösung wäre für mich, direkt mit den Pixelkoordinaten der Marker (x, y) umzugehen, aber es gibt leider keine öffentliche Methode, um einem Marker die Pixelposition zuzuweisen.

Der Code ist hier verfügbar: http://dev.syskall.com/map/

Wie würden Sie die Animation beim Verkleinern flüssiger machen? Alternativ wäre ich daran interessiert, ein Äquivalent zu Google Maps zu verwenden, mit dem ich das erreichen kann, was ich versuche, wenn dies mit Google Maps nicht möglich ist.

PS: Ich bin mir nicht sicher, ob dies der richtige Ort ist, um meine Frage zu stellen. Lassen Sie mich wissen, wenn dies nicht der Fall ist.

Oli
quelle

Antworten:

2

Sie können die Bibliothek " Marker-Animation animieren" verwenden, um einen reibungslosen Übergang von Markern von einem Ort zum anderen zu ermöglichen.

Sie können Ihren Marker folgendermaßen initialisieren:

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

Ihr Marker wird also beim Start vom Startort zum angegebenen animiert:

marker.setPosition(givenPosition);

PS Ich bin der Autor der Bibliothek.

Viskin
quelle
Kann Ihre Bibliothek das Symbol in einen Winkel drehen? basierend auf dem letzten Lat, Lon, der zum nächsten Lat Lon wechselt?
Tim Maxey
Siehe Diskussion hier . Für jeden Animationsschritt wird ein Ereignis ausgelöst, bei dem Sie Koordinaten abrufen und versuchen können, Ihren Marker zu drehen.
Viskin
1

Sie können auch den folgenden Ansatz in Betracht ziehen:

  • Generieren Sie eine Markersammlung zwischen zwei Koordinaten pro Standort
  • Umschalten eines bestimmten Markers mithilfe der marker.setVisibility(value)Funktion

Vollständiges Beispiel

JSFiddle

Vadim Gremyachev
quelle