2011-04-15 110 views
2

一旦启动Google地图或Google地球插件实例,是否可以延迟加载KML文件?也许有一个“边界框”事件,我可以使用队列所需的KML文件?懒惰/需求加载谷歌地图或谷歌地球插件KML?

编辑=>找到了答案:

发现这个小TID位(http://code.google.com/apis/maps/documentation/javascript/events.html):

注意:如果你想检测视口中的 变化,一定要使用 特定bounds_changed事件 而不是成分zoom_changed 和center_changed事件。由于Maps API独立触发了后者事件 ,所以直到 视口权威性更改后,getBounds()可能不会 报告有用的结果。 如果您希望在发生此类 事件后获得Bounds(),请务必改为听取 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相应 于当前 视或空的边框,如果没有 地球的一部分,是可见

+0

但是,为什么当这个功能本身在Kml中可用?使用KmlRegions以及诸如refreshMode和viewRefreshMode之类的东西您可以完全控制何时,何地以及如何显示数据,而无需执行任何操作,除非在api中加载数据...没有事件,不需要任何showMarkers方法,除了加载。另外,您的'kml应用程序'在支持Kml的应用程序中也是如此,例如Google Earth桌面客户端等。 – Fraser 2012-02-16 01:05:59

回答