Javascript 如何查找最近的标记传单.js

Javascript 如何查找最近的标记传单.js,javascript,arrays,google-maps,maps,leaflet,Javascript,Arrays,Google Maps,Maps,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 =

我想知道是否真的有什么方法可以使用传单.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])
     }
 }
}
var mylatng=[34,56];
var标记=[[20,30],[10,20],[12,-100],[54,90],-10,-20],[20,20];
var closests=[];
函数findNearestMarker(myPosition,nearestMarkers){
对于(变量i=0;i

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

试试看,它会查找最近的邻居:给定一个点和一堆其他点,它会找到最近的邻居(正如罐头上所说)

传单。GeometryUtil是我找到的最好的解决方案()。 使用L.GeometryUtil.closestLayer

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

您可以使用turf.js库


我正在检查它,但它似乎是一个节点模块,有一种方法可以在客户端使用它?…Sry我没有在文档中看到它。是的,下载就行了嘿,很酷,我要检查一下!如果一切正常,我会给你分数:)我发现的一个问题是,它只给你一个分数,看起来像一个精确的中心。它允许你使用半径,但我们有可以改变大小的标记。我将使用
iconSize
,但这似乎仍然是插件可以完成的。