javascript 瓣叶中的标记,咔哒声事件

zphenhs4  于 2023-02-07  发布在  Java
关注(0)|答案(5)|浏览(120)
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)

当我单击标记时,警告消息为:未定义的
但是如果我把它放在变量Map中,它就起作用了!(显示纬度和经度)

map.on('click', onClick);

有人知道为什么它在马克笔里不起作用吗?

lh80um4z

lh80um4z1#

公认的答案是正确的。但是,我需要更清楚一点,所以如果其他人也这样做:
传单允许事件在你在它的Map上做的任何事情上发生,在这个例子中是一个标记。
因此,您 * 可以 * 按照上面的问题创建一个标记:

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

然后创建onClick函数:

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

现在,无论何时你将鼠标移到那个标记上,它都会发出当前纬度/经度的警报。
但是,您可以使用'click','dblclick'等来代替'mouseover',也可以使用onClick的主体来执行任何其他您想要的操作,而不是lat/long提醒:

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

以下是文档:https://leafletjs.com/reference.html#map-event

qqrboqgw

qqrboqgw2#

下面是一个带有函数调用的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);
}
t98cgbkg

t98cgbkg3#

我找到了解决办法:

function onClick(e) {
   console.log(this.getLatLng());
}

使用了标记的getLatLng()方法

holgip5t

holgip5t4#

其他相关信息:一个常见的需求是将标记所表示的对象的ID传递给某 AJAX 调用,以便从服务器获取更多信息。
似乎当我们这样做时:

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

e指向一个MouseEvent,它不允许我们到达标记对象。但是有一个内置的this对象,奇怪的是,它要求我们使用this.options来到达options对象,该对象允许我们传递任何需要的内容。在上面的例子中,我们可以在一个选项中传递一些ID,比如objid,然后在上面的函数中,我们可以通过调用以下函数来获取值:this.options.objid

envsm3lx

envsm3lx5#

参加聚会有点晚了,在寻找标记器点击事件的例子时发现了这个。楼主得到的未定义错误是因为onClick函数在定义之前被引用了。交换第2行和第3行应该可以工作。

相关问题