【发布时间】:2011-12-08 13:12:42
【问题描述】:
是否可以在启动 Google 地图或 Google 地球插件实例后延迟加载 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 如果没有 地球是可见的
【问题讨论】:
-
但是当这个功能在 Kml 中原生可用时,为什么要这样做呢?使用 KmlRegions 以及 refreshMode 和 viewRefreshMode 之类的东西,您可以完全控制何时、何地以及如何显示数据,而无需做任何事情,除了在任一 api 中加载数据......没有事件,不需要任何 showMarkers 方法,除了加载。此外,您的“kml 应用程序”在支持 Kml 的应用程序(如 Google 地球桌面客户端等)中也可以正常工作,
标签: javascript kml google-earth-plugin