2012-03-24 10 views
7

Parece que el dibujo de polígonos es asincrónico en google maps api v3. Trate de hacer clic en el botón "Cargar" en este ejemplo:Manejar al dibujar polígonos se completa en google maps api v3

http://jsfiddle.net/rmXXF/

el texto "hecho" se escribe mucho antes que la cuadrícula se dibuja! Parece que el dibujo de la cuadrícula rectangular es asincrónico. ¡Quiero que se muestre el texto HECHO DESPUÉS de que se dibuje la cuadrícula! ¿Hay algún controlador de eventos para esto?

La parte importante del código está en función action():

polygons = draw_all_squares(map); // draw grid here 
document.getElementById('status').innerHTML = 'DONE'; // displayed 2 seconds 
                 // before the grid! 

Tenga en cuenta que el mapa de eventos 'inactivo' no funciona para esto, porque el mapa no se mueve/zoom. Puede intentar aquí: http://jsfiddle.net/92Hxj/

Tal vez tiene algo que ver no con los mapas de Google pero con la representación del navegador? En cualquier caso, algún controlador de eventos para esto debe estar presente.

+0

Lamentablemente no es así. ¿Cuál es el caso de uso? –

+1

@broady, el caso de uso es casi exactamente lo que se ve en el ejemplo, pero los cuadrados se cargan con ajax. Estoy configurando el indicador de estado en "CARGANDO ..." antes de la solicitud ajax, y lo configuré de nuevo en "HECHO" después de obtener los datos y presentarlos ... pero no funciona: el indicador de estado dice "HECHO" "y el usuario mira unos segundos en un mapa vacío. – TMS

Respuesta

8

Mediante la activación de una pequeña recentrado del mapa después de dibujar todos los polígonos esta se añade a la misma cola de eventos mapas de Google interna como puede verse en este ejemplo: http://jsfiddle.net/rmXXF/40/

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

y

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

Buen hack David, gracias! – TMS

+2

Muy bonito, David. Haría un cambio: use addListenerOnce –

+0

Brillante trabajo. –

3

Debe usar una superposición y escuchar el evento 'rectanglecomplete' del administrador de planos. Puedo codificar un ejemplo después del almuerzo.

David tiene razón. Leí mal la documentación. Pedir disculpas. Él debería obtener la recompensa.

+0

Guau, se ve exactamente como lo que estaba buscando. Un ejemplo sería genial! – TMS

+0

La recompensa debe ser recompensada pronto ... tienes una oportunidad, si tu respuesta está completa. :-) – TMS

+0

Tienes 20 horas todavía. – TMS

Cuestiones relacionadas