如何找到最近的标记leaflet.js
How to find closest marker leaflet.js
我想知道是否有一些方法可以在我使用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/相关文章:
- 保存leaflet.js的当前视图
- 根据用户输入的leaflet.js过滤标记
- 如何在Leaflet.js中按属性过滤TopoJSON功能
- 是否可以同时使用Leaflet.js中的中心和边界属性
- 传单错误:对象 #<对象> 在 file:///android_asset/www/leaflet.js:6 没有方法“
- 使用引导程序设置全屏leaflet.js映射
- 将文本框覆盖在leaflet.js地图上
- leaflet.js:setView()完成动画时引发的事件.这怎么可能
- 在leaflet.js和leaflet.snap中编辑多边形
- 将自己添加为Leaflet.js上的Basemap提供者
- 如何使突出显示的大纲出现在leaflet.js鼠标悬停和超链接
- 如何在多个地图图例与leaflet.js之间切换
- 如何使用knockout.js与leaflet.js地图标记
- 使用Leaflet.js我如何在拖端获得地图的纬度
- Leaflet.Js - MarkerCluster -弹出并不总是显示
- 错误的Leaflet.js贴位置,在拖动时扣到位
- 在Leaflet.js中点击event来启用和禁用图层
- Leaflet.js map.on('click', function..对我没用
- 设置leaflet.js地图显示当前位置
- Node.js与Express和Jade模板不显示leaflet.js地图