谷歌 map 有一个函数 isLocationOnEdge(point, polyline, tolerance)
,它接受一个以度为单位的公差值,并用它来确定一个点是否落在折线附近。
Leaflet(或某些插件)中有没有类似的东西可以做同样的事情?
最佳答案
用于此类操作的少数库是 Turf 。
对于您的情况,一个简单的方法是:
turf.buffer
从多段线创建一个多边形(草皮在地球表面需要一段距离或度数)。 turf.inside
检查您的点是否在该多边形内。 不幸的是,
turf.buffer
只是一个 approximation ,它没有考虑大地测量……因此,对于大公差,您将具有变形的形状。一个确切的方法可能是:
turf.pointOnLine
来查找折线的最近点。 turf.distance
测量这两个点之间的距离,并与您的容差进行比较(甚至只是 Leaflet latLng.distanceTo
,但您必须将 GeoJSON 点转换回 Leaflet LatLngs)。 关于leaflet - Leaflet 中是否有与 Google Maps 中的 isLocationOnEdge() 类似的内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38383315/