2016-03-01 63 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];

其中的一个日子,我应该留在床上,我猜...