Déplacer le marqueur en douceur le long de deux coordonnées GPS


10

J'essaie d'animer un marqueur d'une coordonnée GPS à une autre. J'utilise actuellement Google Maps pour y parvenir et, bien que mon algorithme semble correct, Google Maps ne parvient pas à convertir la position GPS au bon pixel sur la carte, ce qui rend l'animation moins fluide lorsque la carte est dézoomée . Zoomé, il est très fluide et c'est pourquoi je soupçonne que le "zig zag" est provoqué par Google effectuant une mauvaise conversion LatLng-> pixel.

La meilleure solution serait pour moi de traiter directement les coordonnées des pixels des marqueurs (x, y) mais il n'y a malheureusement pas de méthode publique pour attribuer l'emplacement des pixels à un marqueur.

Le code est disponible ici: http://dev.syskall.com/map/

Comment rendre l'animation plus fluide lors d'un zoom arrière? Sinon, je serais intéressé à utiliser un équivalent de Google Maps qui me permettrait d'accomplir ce que j'essaie de faire si ce n'est pas possible avec Google Maps.

PS: Je ne sais pas si c'est le bon endroit pour poser ma question, faites-moi savoir si ce n'est pas le cas.

Réponses:



2

Vous pouvez utiliser la bibliothèque de marqueurs-animer-discrète pour faire des marqueurs une transition en douceur d'un emplacement à un autre.

Vous pouvez initialiser votre marqueur comme ça:

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

Ainsi, votre marqueur s'animera du lieu de départ au lieu donné lors de cet appel:

marker.setPosition(givenPosition);

PS Je suis l'auteur de la bibliothèque.


Votre bibliothèque a-t-elle la possibilité de faire pivoter l'icône selon un angle? sur la base du dernier lat, se déplaçant vers le lon suivant?
Tim Maxey

Voir la discussion ici . Un événement est déclenché pour chaque étape de l'animation, où vous pouvez obtenir des coordonnées et essayer de faire pivoter votre marqueur.
viskin


1

Vous pouvez également envisager l'approche suivante:

  • générer une collection de marqueurs entre deux coordonnées pour chaque emplacement
  • basculer un marqueur spécifique en utilisant la marker.setVisibility(value)fonction

Exemple complet

JSFiddle

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.