谷歌 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/

    10-13 00:50