8 votes

Gérer lorsque le dessin des polygones est terminé dans l'API Google Maps v3

Il semble que le dessin des polygones soit asynchrone dans google maps api v3. Essayez de cliquer sur le bouton "Charger" dans cet exemple:

http://jsfiddle.net/rmXXF/

le texte "DONE" est écrit bien plus tôt que la grille n'est dessinée! Il semble que le dessin de la grille de rectangles soit asynchrone. Je veux que le texte DONE soit affiché APRÈS que la grille soit dessinée! Y a-t-il un gestionnaire d'événements pour cela?

La partie importante du code se trouve dans la fonction action():

polygons = draw_all_squares(map); // dessiner la grille ici
document.getElementById('status').innerHTML = 'DONE'; // affiché 2 secondes
                                                      // avant la grille!

Remarquez que l'événement 'idle' de la carte ne fonctionne pas pour cela, car la carte ne bouge/pas de zoom. Vous pouvez essayer ici: http://jsfiddle.net/92Hxj/

Peut-être que cela n'a pas grand chose à voir avec google maps mais avec le rendu du navigateur? Dans tous les cas, un gestionnaire d'événements pour cela devrait être présent.

10voto

David Mulder Points 6381

En déclenchant un petit recentrage de la carte après avoir dessiné tous les polygones, cela est ajouté à la même file d'événements interne de Google Maps comme on peut le voir dans cet exemple : http://jsfiddle.net/rmXXF/40/

google.maps.event.addListener(map, 'idle', function() {
 document.getElementById('status').innerHTML = 'TERMINÉ';
});

et

my_map.setCenter(new google.maps.LatLng(my_map.getCenter().lat(), my_map.getCenter().lng() + .000000001));

3voto

Zach Points 101

Vous devriez utiliser un overlay et écouter l'événement 'rectanglecomplete' du gestionnaire de dessin. Je peux coder un exemple après le déjeuner.

David a raison. J'ai mal lu la documentation. Je m'excuse. Il devrait recevoir la récompense.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X