我想知道是否有一些方法可以使用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])
}
}
}
我实际上是从地图开始并且不知道这么多方法,我也想使用这个项目的开放街道地图,但是,如果有人知道并使用谷歌地图或其他服务,它将受到欢迎。
答案 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库