如何找到最近的标记leaflet.js

How to find closest marker leaflet.js

本文关键字:leaflet js 何找 最近      更新时间:2023-09-26

我想知道是否有一些方法可以在我使用leaflet.js的位置附近找到标记。我想到的第一个想法是存储我的位置的lat和lng,然后迭代lat和lng标记数组,将它们放在一个数组中,然后对该数组进行排序。我不确定这是否是一个好的选择,因为如果你在地图上有一百万个标记,这将需要一段时间。

伪代码
var myLatLng = [34,56];
var markers = [[20,30],[10,20],[12,-100],[54,90],[-10, -20],[20,20]];
var closests = [];
function findNearestMarker (myPosition, nearestMarkers){
 for(var i = 0; i < nearestMarkers.length){
     if((nearestMarkers[i][0] - myPosition[0]) < 100 && (nearestMarkers[i][1] - myPosition[1]) < 100 ){
         closests.push(nearestMarkers[i])
     }
 }
}

我实际上是从地图开始的,不知道这么多的方法,我也喜欢在这个项目中使用开放的街道地图,但是,如果有人知道并使用谷歌地图或其他服务,它将受到欢迎。

试试leaflet-knn,它做最近邻查找:给定一个点和一堆其他点,它会找到最近的邻居(就像它在锡上说的)

传单。geometrytil是我找到的最好的解决方案(https://github.com/makinacorpus/Leaflet.GeometryUtil)。使用L.GeometryUtil.closestLayer。

它比leaflet-knn更实用,因为你可以发送一组层(例如标记),而不仅仅是一个geojson层。但更重要的是,它似乎更快(大约90%的速度与一组500+标记,冷启动,在Chrome 36上,虽然在FF31上它是可比的)

你可以使用turf.js库

http://turfjs.org/examples/turf-nearest/