我对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”。

07-25 20:48