我正在使用Google Map Map API
isLocationOnEdge

var isLocationNear = google.maps.geometry.poly.isLocationOnEdge(latlng, new google.maps.Polyline({
  path: google.maps.geometry.encoding.decodePath(result.routes[0].overview_polyline)
}), .00001);

我不了解公差与公里数有何关系
isLocationOnEdge(point:LatLng, poly:Polygon|Polyline, tolerance?:number)

坐一下,我想检测用户是否在 map 上绘制的多段线的100m以内。如何解决这个问题。

最佳答案

this post中的评论之一:

公差,它基于纬度和经度所需的小数位精度。

例如,如果说(33.00276,-96.6824)在多段线上,如果公差为0.00001,则如果将点更改为(33.00278,-96.6824),则该点将始终在多段线上。

因此,如果要在多义线的大约100m内找到检测位置,则可以将0.001用作公差值。

例如,如果您的位置是(1.001,12),则多段线中的点之一是(1,12),则您的位置与多段线之间的距离约为111.319米。 (1.001,12)和(1,12)之间的公差为0.001,因此isLocationOnEdge()将返回true。

如果您的位置是(1.002,12),则到(1,12)的距离将约为222.638米。它们之间的公差为0.02,因此如果您使用0.001作为isLocaitonOnEdge()的公差值,它将返回false。

您可以从以下JSFiddle中看到示例代码:https://jsfiddle.net/j7cco3b0/1/

10-08 03:44