2016-09-15 54 views
-1

我的項目涉及從一個包含大約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 
} 

回答

1

創建一個空的LatLngBounds對象。忽略地圖的當前邊界。

var bounds = new google.maps.LatLngBounds(); 

循環遍歷KMZ文件的所有內容,擴大與各座標界限在你的文件

bounds.extend(/* your coords */); 
+1

感謝@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); –

+0

當然,我之後只是'geoXmlDoc.bounds'位。 –

相關問題