繁体   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