Javascript 无法检查点是否位于多段线上。Islocationonedge功能不工作

Javascript 无法检查点是否位于多段线上。Islocationonedge功能不工作,javascript,google-maps-api-3,google-directions-api,Javascript,Google Maps Api 3,Google Directions Api,我有一条路线和路线上的一个点。但是,当我使用islocationonedge函数进行检查时,它不起作用。我已经调整了容忍度,但这并不能解决问题。我知道这一点在路线上,但为什么islocationonedge功能不能确认这一点?我做错了什么 var addresses = [ [ [43.674687, -79.430955], [43.668560, -79.394924] ], [ [43.674934, -79.426182], [43.6754

我有一条路线和路线上的一个点。但是,当我使用islocationonedge函数进行检查时,它不起作用。我已经调整了容忍度,但这并不能解决问题。我知道这一点在路线上,但为什么islocationonedge功能不能确认这一点?我做错了什么

 var addresses = [
  [
    [43.674687, -79.430955],
    [43.668560, -79.394924]
  ],
  [
    [43.674934, -79.426182],
    [43.675452, -79.423602]
  ],
  [
    [43.640381, -79.394508],
    [43.640575, -79.394586]
  ]
];


 var directionsRenderer = new google.maps.DirectionsRenderer();
 var directionsService = new google.maps.DirectionsService();
    var map = new google.maps.Map(document.getElementById("map"), {
      zoom: 7,
      center: {
        lat: 41.85,
        lng: -87.65
      }
    });
    
    directionsRenderer.setMap(map);
    
    var start = new google.maps.LatLng(43.674687, -79.430955); 
    var end = new google.maps.LatLng(43.668560, -79.394924); 

    directionsService.route(
      {
        origin: start,
        destination: end,
        travelMode: "DRIVING"
      },
      function(response, status) {
        if (status === "OK") {
      directionsRenderer.setDirections(response);
      var paths = response.routes[0].overview_path;
          var polyline = new google.maps.Polyline({
          path: paths
          });

         if (google.maps.geometry.poly.isLocationOnEdge(new google.maps.LatLng(addresses[1][1]), polyline, 1e-3)) {
    alert("Working");
  } else {
      alert("not working");
  }
                    
        } else {
          window.alert("Directions request failed due to " + status);
        }
 
      }
       
    );
  

isLocationOnEdge函数根据以下参数接受2或3个参数:

isLocationOnEdge(点、多边形[、公差])
参数:
点:LatLng
多边形:多边形|多段线
公差:数字可选
返回值:布尔值
计算给定点是否位于指定公差范围内的多段线或多边形边上或附近。当提供点的纬度和经度与边上最近点之间的差值小于公差时,返回true。公差默认为10-9度

参数必须是

地址[1][1]
是一个数字数组。
google.maps.LatLng
构造函数接受两个数字,而不是两个数字的数组。发件人:

建造商板条
LatLng(lat,lng[,noWrap])
参数:
lat:编号
液化天然气:数量
noWrap:布尔可选
创建表示地理点的板条对象。纬度在[-90,90]范围内以度为单位指定。经度在[-180,180]范围内以度为单位指定。将noWrap设置为true可启用此范围之外的值。注意纬度和经度的顺序

代码片段:

“严格使用”;
函数initMap(){
变量地址=[
[
[43.674687, -79.430955],
[43.668560, -79.394924]
],
[
[43.674934, -79.426182],
[43.675452, -79.423602]
],
[
[43.640381, -79.394508],
[43.640575, -79.394586]
]
];
var directionsrender=new google.maps.directionsrender();
var directionsService=new google.maps.directionsService();
var map=new google.maps.map(document.getElementById(“map”){
缩放:7,
中心:{
拉脱维亚:41.85,
液化天然气:-87.65
}
});
方向渲染器.setMap(map);
var start=newgoogle.maps.LatLng(43.674687,-79.430955);
var end=new google.maps.LatLng(43.668560,-79.394924);
方向服务.路线({
来源:start,
目的地:完,
travelMode:“驾驶”
},
功能(响应、状态){
如果(状态==“正常”){
directionsRenderer.setDirections(响应);
var path=response.routes[0]。概述\u路径;
var polyline=新的google.maps.polyline({
路径:路径,
地图:地图
});
var marker=new google.maps.marker({
职位:新google.maps.LatLng(地址[1][1][0],地址[1][1][1]),
地图:地图,
标题:“1”,
图标:{
url:“https://maps.gstatic.com/intl/en_us/mapfiles/markers2/measle.png",
大小:新谷歌地图大小(7,7),
主播:新google.maps.Point(3.5,3.5)
}
})
if(google.maps.geometry.poly.isLocationOnEdge(新的google.maps.LatLng(地址[1][1][0],地址[1][1][1]),多段线,1e-3)){
document.getElementById('status').innerHTML=“工作”;
}否则{
document.getElementById('status').innerHTML=“不工作”;
}
}否则{
窗口警报(“由于“+状态,指示请求失败”);
}
}
);
}
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#地图{
身高:90%;
}
/*可选:使示例页面填充窗口*/
html,
身体{
身高:100%;
保证金:0;
填充:0;
}

方向服务