簡體   English   中英

傳單中的標記,單擊事件

[英]Marker in leaflet, click event

var map = L.map('map');
var marker = L.marker([10.496093,-66.881935]).on('click', onClick);
function onClick(e) {alert(e.latlng);}
marker.addTo(map)

當我單擊標記時,警報消息為:undefined

但如果我把它放在變量圖中,它就可以了! (顯示緯度和經度)

map.on('click', onClick); 

有人知道為什么它在標記中不起作用嗎?

接受的答案是正確的。 但是,我需要更清晰一些,所以萬一其他人也這樣做:

Leaflet允許事件在您在地圖上執行的任何操作上觸發,在本例中為標記。

因此,您可以按照上述問題的建議創建標記:

L.marker([10.496093,-66.881935]).addTo(map).on('mouseover', onClick);

然后創建onClick函數:

function onClick(e) {
    alert(this.getLatLng());
}

現在,只要您將鼠標懸停在該標記上,它就會觸發當前緯度/經度的警報。

但是,您可以使用“click”,“dblclick”等代替“mouseover”而不是警告lat / long,您可以使用onClick的主體來執行您想要的任何其他操作:

L.marker([10.496093,-66.881935]).addTo(map).on('click', function(e) {
    console.log(e.latlng);
});

以下是文檔: http//leafletjs.com/reference.html#events

我找到了解決方案:

function onClick(e) {alert(this.getLatLng());}

使用了標記的getLatLng()方法

這是一個函數調用的jsfiddle: https ://jsfiddle.net/8282emwn/

var marker = new L.Marker([46.947, 7.4448]).on('click', markerOnClick).addTo(map);

function markerOnClick(e)
{
  alert("hi. you clicked the marker at " + e.latlng);
}

其他相關信息:常見的需求是將標記所代表的對象的ID傳遞給某個ajax調用,以便從服務器獲取更多信息。

我們這樣做時似乎:

marker.on('click', function(e) {...

e指向MouseEvent,它不允許我們到達標記對象。 但是有一個內置的this對象,奇怪的是,要求我們使用this.options來獲取options對象,讓我們傳遞任何我們需要的東西。 在上面的例子中,我們可以在一個選項中傳遞一些ID,讓我們在上面的函數中說objid ,我們可以通過調用來獲取值: this.options.objid

派對稍晚,在尋找標記點擊事件的示例時發現了這一點。 原始海報得到的未定義錯誤是因為onClick函數在定義之前被引用。 交換第2行和第3行它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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