[英]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);
});
我找到了解決方案:
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.