启动 Google Map 或 Google Earth Plugin 实例后是否可以延迟加载 KML 文件?也许有一个“边界框”事件可以用来对所需的 KML 文件进行排队?
编辑 => 找到答案:
发现这个小花絮(http://code.google.com/apis/maps/documentation/javascript/events.html):
注意:如果您尝试检测视口中的更改,请确保使用特定的 bounds_changed 事件而不是组成 zoom_changed 和 center_changed 事件。因为 Maps API 会独立触发后面的这些事件,所以 getBounds() 可能不会报告有用的结果,直到视口已权威更改之后。如果您希望在此类事件之后 getBounds(),请务必改为监听 bounds_changed 事件。
...这使我在此页面上找到了“视口标记管理”:http ://code.google.com/apis/maps/articles/toomanymarkers.html#viewportmarkermanagement
提出这个基本想法:
google.maps.event.addLisener(map, 'idle', showMarkers);
function showMarkers() {
var bounds = map.getBounds();
// Call you server with ajax passing it the bounds
// In the ajax callback delete the current markers and add new markers
}
同样,对于 GEP,有这样的:
GEView.getViewportGlobeBounds()
返回一个边界框,它完全包含当前可见的地球区域。如果需要包含所有可见的内容,则返回的框将大于严格可见的框。返回与当前视口的边界框相对应的 KmlLatLonBox;如果没有地球的任何部分可见,则返回 null