簡體   English   中英

傳單:如何影響地圖上的所有標記?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM