2014-03-24 35 views
6

我想知道是否實際上有一些方法來使用leaflet.js在我的位置附近找到標記。首先想到的是存儲我的位置lat和lng,然後遍歷一系列lat和lng標記,將它們放置在一個數組中,然後對該數組進行排序。我不確定這是否是一個好選擇,因爲如果地圖上有一百萬個標記需要一段時間。如何找到最接近的標記leaflet.js

僞代碼

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]) 
    } 
} 
} 

我其實開始的地圖和不知道這麼多的方法,我也喜歡用開放街道地圖這個項目,但是,如果有人知道並使用谷歌的aproach地圖或其他服務將受到歡迎。

回答

5

嘗試leaflet-knn,這確實近鄰查找:給定一個點和一堆其他的點,找到最近的鄰居(因爲它在錫說)

+1

我正在檢查它,但它似乎是一個節點模塊,有一種方法,我可以在客戶端呢?... srry我沒有得到它的文檔。 –

+0

是的,只需下載https://raw.github.com/mapbox/leaflet-knn/master/leaflet-knn.min.js – tmcw

4

Leaflet.GeometryUtil是我找到了最好的解決辦法爲此(https://github.com/makinacorpus/Leaflet.GeometryUtil)。 使用L.GeometryUtil.closestLayer。

使用比傳單更實用,因爲您可以發送一個圖層數組(標記爲例子),而不是隻有一個geojson圖層。 但更重要的是,它似乎更快(約90%與一組500個+標誌,冷啓動,在Chrome 36快,雖然FF31它可比)

+0

嘿,非常酷我會去看看它!如果作品都給你的要點:) –

+0

我發現的一個問題是它只給你一個單一的點,看起來像確切的中心。它可以讓你使用半徑,但是我們有可以改變尺寸的標記。我將使用'iconSize',但這仍然看起來像插件可以完成的事情。 – trysis