我正在尝试设置一个加载KMZ文件并使用谷歌地图显示它的系统,然后测试用户是否在KMZ创建的多边形范围内点击了。我通过这些论坛和网络搜索过,但没有找到可行的解决方案。
我在加载和读取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>
正如您所看到的,我正在使用硬编码的long和lattitude值进行测试,并且它给出了错误“Uncaught TypeError:b.get不是函数”。 单击一个按钮时会触发testlimit函数。
我最初有更多代码,但由于它不起作用,这就是我最终的地方。任何帮助,将不胜感激。
答案 0 :(得分:0)
好吧,没关系,显然gpolygon变量是一个数组。
所以它应该是
polzone = zone.docs[0].gpolygons[0];
有一天,我应该留在床上,我猜......