2010-10-02 7 views
3

J'ai écrit un petit algorithme qui anime le mouvement des marqueurs de d'un point à un autre. L'algorithme ressemble à ceci dans pseudocode:Comment animer un marqueur en douceur avec Google Maps?

lat_delta = new_lat - old_lat; 
lng_delta = new_lng - old_lng; 

for(alpha=0; alpha < 1; alpha += 0.1) { 
    lat = old_lat + (alpha * lat_delta); 
    lng = old_lng + (alpha * lng_delta); 
    update_marker(lat, lng); 
} 

Le code complet est disponible à http://dev.syskall.com/map/ et http://dev.syskall.com/map/commute.js.

Le problème que j'ai rencontré est que lorsque la carte est réduite, l'animation semble "zigzag". Cela étant dit, lorsque vous zoomez, l'animation est beaucoup plus lisse.

Je crois que cela peut être dû au fait que mon animation est basée sur coordonnées lat, lng et non pixels sur l'écran. Lorsque vous effectuez un zoom arrière, Google Maps n'est pas aussi précis que et doit contourner la position latlng en quelque sorte.

Bien sûr, la mise en œuvre actuelle est très bien quand la carte est agrandie mais pas si bien quand il est en zoom arrière.

Y a-t-il un moyen de contourner ce problème?

Répondre

0

Oui ... l'API gives you methods pour obtenir les coordonnées de pixels de tous vos marqueurs sur la carte. Je fais ce qui suit:

obtenir les co-ords de pixels de votre marqueur

render un marqueur factice sur cet endroit

enlever le marqueur d'origine

animer votre mannequin au nouveau spot en utilisant des valeurs de pixels

place un nouveau marqueur de carte sur place

Enlever le mannequin

Au début et à la fin, vous pouvez utiliser l'API pour obtenir des pixels et vice versa.

+0

Le problème est que vous ne pouvez positionner les marqueurs qu'à travers les objets Latlng. Impossible de paramétrer directement les pizzas:/ –

+0

et la conversion à partir de coordonnées de pixels me pose le même problème que celui que je tente de résoudre: google effectue une mauvaise conversion latlng vers pixel –

+0

Le premier problème peut être résolu en récupérant le latlang à partir du coords pixel, pour lesquels il existe une méthode ... mais si vous pensez que la qualité de la conversion est mauvaise, alors il n'y a pas grand chose à faire :( –

Questions connexes