我的項目涉及從一個包含大約600+ kmz/kml文件的目錄加載多個kmz文件。最多5個文件將在用戶移動地圖時加載,並單擊按鈕加載相關的kmz文件。將會進行檢查以確保變焦足夠大,從而覆蓋的區域不會太寬。如何使用geoxml3獲取KMZ或KML文件的界限?
要載入相關的kmz/kml文件,其想法是如果kmz/kml的地標甚至部分落入視口內,則會加載該文件。要快速加載這些kmz/kml文件,我想到了以下步驟:
第1步:分別提取每個kmz/kml文件的邊界並將其存儲在文件中。我知道如何獲得視口,map.getBounds()
和kmz中的特定多邊形的邊界,geoXmlDoc.placemarks[i].polygon.bounds
。但是有沒有辦法讓整個kmz文件包含所有的點,線,多邊形?
我明白這一步需要完成一次才能生成包含所有kmz/kml文件邊界的邊界文件。我試圖通過一個循環分別加載每個文件並調用getBounds的視口,但不幸的是,視口並不完全符合kmz的界限。視口通常較大。
第2步:當用戶將地圖移動到新位置並單擊加載相關的kmz文件時,如果視口邊界與任何kmz邊界相交,則只有合併邊界數組將被檢查。
if (currentBounds.intersects(all_bounds_array[i]))
{
// load the kmz file for index i
}
感謝@duncan,您的解決方案效果很好。我還發現geoxml3對每kmz分析文檔都有一個bounds屬性。所以我想要的其實是現成的。 ** [This](http://www.geocodezip.com/geoxml3_test/v3_geoxml3_kmltest_linktoB.html?type=m&filename=us_states_noPoint.xml)**示例的源文件有一行代碼:map.fitBounds(geoXmlDoc.bounds); –
當然,我之後只是'geoXmlDoc.bounds'位。 –