谷歌地图 API v3 - google.maps.geometry.poly.containsLocation 第一次不起作用

3

我遇到了一个问题,就是当页面加载时,google.maps.geometry.poly.containsLocation(latLng,polygon)第一次不起作用,但在我开始触发事件后它就可以正常工作。

你有什么想法,为什么会出现这种情况?

谢谢!


你在 JavaScript 控制台中得到了什么错误? - Michael Geary
你的代码长什么样? - duncan
JavaScript控制台显示:Uncaught TypeError: Cannot read property 'poly' of undefined。 - Marcelo Lago
听起来好像是你第一次调用API时它还没有加载。但是由于你没有提供任何代码,这只是一个猜测。 - geocodezip
2
我找到了错误的源头...我需要在最初的Google API调用中指定“libraries=geometry”。请参见类似问题(https://dev59.com/cWTWa4cB1Zd3GeqPBke2)。感谢您的提示! - Marcelo Lago
1个回答

4

主要原因是首次Google API未能正确加载,并且您正在尝试使用它。

var rsul = google.maps.geometry.poly.containsLocation(new google.maps.LatLng(-12.043333, -77.028333), bermudaTriangle);

所以它显示“无法读取未定义的属性 'poly'”

因此,我们需要使用延迟计时器,在页面加载后再执行。

示例:

setTimeout(function() {
    var rsul = google.maps.geometry.poly.containsLocation(new google.maps.LatLng(-12.043333, -77.028333), bermudaTriangle);
    console.log(rsul);
}, 1000);

因此它会给出正确的布尔值。


1
正确的答案不是使用超时,而是添加一个回调函数,在页面加载脚本时执行。 - chesscov77
@Juan 你是否考虑在加载主要的Google Maps JavaScript库时使用回调?尽管我使用了回调,但现在我仍然遇到这个问题。我已经添加了&libraries=geometry。我认为v3版本中存在一个错误。 - Leo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接