2014-10-25 2 views
0

Я хотел бы создать маркер вместе со всплывающим окном, содержащим кнопку, которая при щелчке должна вызвать JQuery-Ajax-функцию, чтобы редактировать содержимое всплывающего окна.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 (хм, -yy)», который по результатам курса в качестве вызова неопределенной функции. Я не нашел способа получить чистые координаты всплывающего окна, чтобы передать их функции редактирования.

Каким будет лучший способ: a) четко определить всплывающее окно и b) передать этот идентификатор другой функции?

ответ

0

Все объекты листовки имеют связанный с ними связанный с ним _leaflet_id, поэтому вы должны использовать его как свой идентификатор.

Вы также можете привязать к событию open, которое запускается при всплывании всплывающего окна. Это событие передает ссылку на всплывающее окно, которое открывается. Вы можете связать и использовать следующее:

popup.on("open", popupOpen); 

// some other code as needed  

function popupOpen(pop) { 
    this.currentPop = pop; 
    console.log(pop.target._leaflet_id); 
} 
Смежные вопросы