2017-05-16 14 views
0

JS에 익숙하지 않으며 아래의 쿼리가 간단한 것처럼 보일 수 있습니다.리플렛 그리기를 사용하여 그려진 원의 중심을 찾고 2에서 lat12 사이의 거리를 계산합니다.

쿼리 : 지도에 여러 개의 원을 그렸으며 서클에서 사용할 수있는 모든 아이콘 세부 정보를 가져와야합니다.

위도가 긴 원의 중심을 가져 와서 해당 원의 중심에서지도의 모든 마커의 거리를 계산하려고 시도하고 있습니다. if (거리 < = 반경) 마커가 원 안에 있다고 결론 내립니다.

  1. 원의 중심이 결정됩니다.
  2. 센터와 마커 사이의 거리를 계산하는 방법은 무엇입니까? 사전에

감사합니다 ..

답변

2

의 당신이 어딘가에 뭔가가 있다고 가정하자 :

edit: { 
    featureGroup: editableLayers, //REQUIRED!! 
    remove: false 
} 
: 당신이 당신의 L.Control.Draw이 옵션을 추가하는 것도

var editableLayers = new L.FeatureGroup(); 

L.Draw 설명서에 나와 있습니다.

이제 서클을 검색 할 수 있습니다

var circleList = []; 
editableLayers.eachLayer(function (l) { 
    if (l instanceof L.Circle) { 
     circleList.push(l); 
    } 
}); 

같은 방법으로 마커를 검색 :

var markersInside = []; 
var i; 
for (i=0; i<markerList.length; i++) { 
    var j; 
    var m = markerList[i]; 
    var mposition = m.getLatLng(); 
    for (j=0; j<circleList; j++) { 
     var c = circleList[j]; 
     var cposition = c.getLatLng(); 
     var cradius = c.getRadius(); 
     if (cposition.distanceTo(mposition) <= cradius) { 
      markersInside.push(m); 
      break; 
     } 
    } 
} 
:

var markerList = []; 
editableLayers.eachLayer(function (l) { 
    if (l instanceof L.Marker) { 
     markerList.push(l); 
    } 
}); 

지금 당신이 어떤 원 안에있는 마커를 원하는

Here is a fiddle 인위적으로 featureGroup을 선언합니다.

leaflet doc 꽤 많이 쓰고 잘 쓰여져 있습니다.

+0

안녕 줄리앙, 도와 줘서 고마워. 여기에 의심의 여지가 있었는데, L.Draw.Event.CREATED의 콜백에서 아이콘 유형의 마커를 검색하려고 시도했는데 editableLayers에 액세스하려고 시도 할 때 Circle 유형의 레이어가 하나만 표시됩니다. 참고 : ICON 종류 마커가 추가되었습니다. –