我对google.maps.geometry.poly.isLocationOnEdge()方法有疑问。摆弄小提琴,尝试单击水平线,按预期返回true,但单击垂直线则返回false。为什么?
谢谢!
这是fiddle,这是代码:
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(0.5, 0.5),
mapTypeId: google.maps.MapTypeId.TERRAIN
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
var poly = new google.maps.Polyline({
path: [
new google.maps.LatLng(0, 0),
new google.maps.LatLng(0, 1),
new google.maps.LatLng(1, 1)
],
map: map
});
google.maps.event.addListener(poly, 'click', function(event){
alert(google.maps.geometry.poly.isLocationOnEdge(event.latLng, this), 0.00001);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
最佳答案
我认为您最好使用containsLocation()
从docs:
要查找给定点是否在多边形内,请传递该点
并将多边形设置为google.maps.geometry.poly.containsLocation()。的
如果点在多边形内或其多边形上,则函数返回true
边缘。
与
确定点是落在多义线上还是附近,或
在多边形的边缘附近,传递点,折线/多边形和
可选的公差值,以度为单位
google.maps.geometry.poly.isLocationOnEdge()。
如果使用containsLocation
,则可以使用
alert(google.maps.geometry.poly.containsLocation(event.latLng, poly));
分叉的小提琴http://jsfiddle.net/VL7Rx/
我真的无法确切解释为什么它不能与
isLocationOnEdge
一起使用。似乎仅在100%垂直折线上存在问题,并且使用0,0,0,1等时,Lng始终为零(0)(单击垂直)-好像该线根本没有任何“宽度” ,“ mapwise”。