尝试使用containsLocation的Google Maps api和GeoXML3问题

时间:2016-03-01 14:11:42

标签: javascript google-maps geoxml3

我正在尝试设置一个加载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函数。

我最初有更多代码,但由于它不起作用,这就是我最终的地方。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

好吧,没关系,显然gpolygon变量是一个数组。 所以它应该是 polzone = zone.docs[0].gpolygons[0];

有一天,我应该留在床上,我猜......