2016-03-01 66 views
0

我試圖建立一個系統,加載KMZ文件並使用谷歌地圖顯示它,然後測試用戶是否點擊了由KMZ。我通過這些論壇和網絡搜索了所有內容,但沒有找到可行的解決方案。谷歌地圖api和GeoXML3試圖使用contains問題

我沒有問題加載和閱讀KMZ文件和多邊形在地圖上完美顯示。但是,當我嘗試使用由geoXML3返回的多邊形數據來測試位置是否在邊界內時,根據我的處理方式,我會得到各種各樣的錯誤。 我在本地加載geoxml3.js文件併爲KMZ文件解析器,正如我所說的那樣工作正常,所以我不會包含所有這些。 KMZ文件是服務器本地的,並且讀取正常。

這是我有:

<script> 
var zone; 
var polzone; 
function initMap() { 
    var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 11, 
    center: {lat: 0, lng: 0} 
    }); 

    zone = new geoXML3.parser({map: map}); 
    zone.parse('test.kmz'); 
} 

function testlimit(){ 
    polzone = zone.docs[0].gpolygons[0]; 
    console.log(google.maps.geometry.poly.containsLocation(new google.maps.LatLng("0", "0"), polzone)); 

} 
</script> 

正如你可以看到我用硬編碼的長和lattitude值只是測試和它給我的錯誤「遺漏的類型錯誤:b.get不是一個函數」。 單擊按鈕時會觸發testlimit函數。

我最初有更多的代碼,但因爲它不工作,這是我最終結束了。任何幫助,將不勝感激。

+1

你可以創建一個小提琴展示您的問題? – xkcd149

+0

好吧,我試圖做到這一點,我只是不知道如何加載kmz文件到那裏。 – user1770717

+0

看起來問題是專門從geoXML對象中調用多邊形。人們應該如何從geoXML3分析器創建的對象中獲取Google地圖多邊形。對不起,如果這是一個愚蠢的問題,但我以前從未使用它,並且很少有關於它如何工作的文檔。 – user1770717

回答

0

好吧,沒關係,顯然gpolygon變量是一個數組。 所以應該 polzone = zone.docs[0].gpolygons[0];

其中的一個日子,我應該留在牀上,我猜...