2014-10-25 3 views
0

클릭하면 마커의 내용을 편집하기 위해 JQuery-Ajax-Function을 트리거하는 버튼이 포함 된 팝업과 함께 마커를 만들고 싶습니다.leaflet.js - 팝업을 식별하는 방법은 무엇입니까?

버튼의 onclick() 속성을 사용하면 팝업의 좌표를 Ajax-Function으로 전달하는 방법을 찾지 못하는 것 같습니다. 각 팝업/마커를 명확하게 식별 할 수있는 유일한 방법이기 때문에 좌표를 전달하고 싶습니다.

이 지금까지 내 코드입니다 :

function onMapClick(eventData) { 
    var popup = L.popup() 
     .setLatLng(eventData.latlng) 
     .setContent("<input type=\"button\" onclick=\"editMarker(" + eventData.latlng + ")\" value=\"Click to edit!\">") 

    L.marker(eventData.latlng, { draggable : true }) 
     .bindPopup(popup) 
     .on("click", openMarker) 
     .on("contextmenu", deleteMarker) 
     .on("dblclick", editMarker) 
     .addTo(map); 
} 

function editMarker(eventData) { 
    alert("Editing marker at " + eventData); 
} 

그러나,이 방법의 onclick에 대한 매개 변수() "하는 LatLng는 (XX, -yy)"입니다 정의되지 않은 함수 호출 물론 결과있다. 나는 그들을 편집 기능에 전달하기 위해 팝업의 순수 좌표를 얻는 방법을 찾지 못했습니다.

a) 팝업을 명확하게 식별하고 b) 해당 ID를 다른 기능으로 전달하는 가장 좋은 방법은 무엇입니까?

답변

0

모든 전단지 객체에는 _leaflet_id이 있으므로 사용자 ID로 사용할 수 있습니다.

팝업을 열 때 발생하는 open 이벤트에 바인딩 할 수도 있습니다. 이 이벤트는 열려있는 팝업에 대한 참조를 전달합니다. 다음과 같이 바인딩하여 사용할 수 있습니다.

popup.on("open", popupOpen); 

// some other code as needed  

function popupOpen(pop) { 
    this.currentPop = pop; 
    console.log(pop.target._leaflet_id); 
} 
관련 문제