[英]Leaflet: how to affect all markers on a map?
基本上,我的傳單地圖上有幾個標記。 我正在使用jQuery。 目前,如果我想用AJAX填充標記的彈出窗口,則必須使用以下代碼:
var marker = L.marker([51.5, -0.09]).addTo(map);
var marker2 = L.marker([51.49, -0.09]).addTo(map);
marker.on("click", function ()
{
$.ajax({
type: "GET",
url: "Home/transactionForm",
dataType: "html",
success: function(ajaxresult)
{
marker.setPopupContent(ajaxresult);
},
error: function (ajaxresult) {
alert("Filling the popup failed!");
}
});
});
marker2.on("click", function ()
{
$.ajax({
type: "GET",
url: "Home/transactionForm",
dataType: "html",
success: function(ajaxresult)
{
marker2.setPopupContent(ajaxresult);
},
error: function (ajaxresult) {
alert("Filling the popup failed!");
}
});
});
顯然,這遠非理想。 在jQuery中,這很簡單:
$("#map").on("click", "#marker", function() {
$.ajax({
type: "GET",
url: "Home/transactionForm",
dataType: "html",
success: function(ajaxresult)
{
$(this).setPopupContent(ajaxresult);
},
error: function (ajaxresult) {
alert("Filling the popup failed!");
}
});
我該怎么做呢? 我知道地圖的ID,但無法弄清楚Leaflet為其標記,彈出窗口和其他元素分配的ID。
Leaflet不會向每個標記/彈出窗口添加不同的ID。 它只是將適當的類添加到每個元素。 因此,這些元素並不意味着可以使用jQuery選擇器進行訪問。
如果要使用具有相同url的ajax設置彈出內容(為什么要這樣做),為什么不只是將所有標記添加到列表中,進行遍歷,然后為該列表中的每個標記設置事件處理程序。 像這樣:
var markersArray = [];
markersArray.push(marker1);
markersArray.push(marker2);
for (var marker in markersArray) {
marker.on("click", function () {
$.ajax({
type: "GET",
url: "Home/transactionForm",
dataType: "html",
success: function(ajaxresult)
{
marker.setPopupContent(ajaxresult);
},
error: function (ajaxresult) {
alert("Filling the popup failed!");
}
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.