2014-03-24 5 views
6

leaflet.js를 사용하여 내 위치 근처에서 마커를 찾을 수있는 방법이 있는지 궁금합니다. 첫 번째 생각은 내 위치의 위도와 경도를 저장 한 다음 배열에 배열을 배치하고 배열을 정렬하는 일련의 위도와 경도를 반복하는 것입니다. 이 옵션이 좋은지 잘 모르겠다면지도에 백만 개의 마커가 있으면 시간이 걸릴 것입니다.가장 가까운 마커 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 레이어 대신 레이어 배열 (예제의 경우 마커)을 보낼 수 있으므로 전단 용도로 사용하는 것이 더 실용적입니다. (FF31에 필적 비록, 빠른 크롬 36에서 500 개 마커, 콜드 스타트, 일련의 약 90 %) 하지만 더 중요한 것은,

+0

안녕하세요. 작품 모두가 당신에게 점수를 준다면 :) –

+0

내가 발견 한 한 가지 문제는 정확한 지점과 같은 단일 지점을 제공한다는 것입니다. 반경을 사용할 수는 있지만 크기를 변경할 수있는 마커가 있습니다. 나는'iconSize'를 사용할 것입니다, 그러나 이것은 여전히 ​​플러그인에 의해 수행 될 수있는 무언가처럼 보입니다. – trysis

관련 문제