4

google.maps.geometry.poly.isLocationOnEdge() メソッドに問題があります。フィドルで、水平線をクリックしようとすると、期待どおりに true が返されますが、垂直線をクリックすると false が返されます。なんで?

ありがとう!

ここにフィドルがあり、ここにコードがあります:

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);
4

2 に答える 2

0

リスナーがポリラインをクリックする場合、containsLocationはdavidkonradによるフィドルでのみ機能します。リスナーがマップ上にある場合は、3 つの LatLng によって形成される三角形のどこでも「true」になります。ユーザーがマップ自体をクリックできない場合は問題ありませんが、特定の要件では機能しない可能性があります。

悲しいことに、垂直線が機能しない理由もわかりません (ただし、垂直線だけではなく、水平線以外では機能していないようです)。

于 2014-01-09T22:28:58.570 に答える