我正在使用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/