在Google Maps api v3中完成多边形绘制时的句柄

TMS*_*TMS 7 javascript dom rendering google-maps google-maps-api-3

似乎在Google Maps api v3中绘制多边形是异步的.尝试单击此示例中的"加载"按钮:

http://jsfiddle.net/rmXXF/

文字"完成"写得比绘制网格的时间早得多!看起来矩形网格的绘制是异步的.我希望在绘制网格后显示文本DONE!这有一些事件处理程序吗?

代码的重要部分在于功能action():

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

请注意,地图'idle'事件不适用于此,因为地图未移动/缩放.你可以在这里试试:http: //jsfiddle.net/92Hxj/

也许它与谷歌地图有关,但与浏览器渲染?在任何情况下,都应该存在一些事件处理程序.

Dav*_*der 9

通过在绘制所有多边形后触发一个小的重新映射,这将添加到相同的内部谷歌地图事件队列中,如下例所示:http://jsfiddle.net/rmXXF/40/

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

my_map.setCenter(new google.maps.LatLng(my_map.getCenter().lat(), my_map.getCenter().lng() + .000000001));
Run Code Online (Sandbox Code Playgroud)

  • 非常好,大卫.我做了一个更改 - 使用addListenerOnce (4认同)