2011-04-15 158 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

回答