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

时间:2014-03-24 23:43:56

标签: javascript arrays google-maps maps leaflet

我想知道是否有一些方法可以使用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])
     }
 }
}

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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

使用它比传单更实用,因为您可以发送图层数组(例如标记),而不仅仅是geojson图层。 但更重要的是,它似乎更快(使用500多个标记,冷启动,在Chrome 36上快了约90%,尽管在FF31上可比较)

答案 2 :(得分:1)

您可以使用turf.js库

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