我尝试使用事件处理程序向Map添加标记。我可以使用回调函数管理此操作,但当我将函数与事件处理程序分离时,就无法管理此操作。
回调(http://fiddle.jshell.net/rhewitt/U6Gaa/7/):
map.on('click', function(e){
var marker = new L.marker(e.latlng).addTo(map);
});
单独功能(http://jsfiddle.net/rhewitt/U6Gaa/6/):
function newMarker(e){
var marker = new L.marker(e.latlng).addTo(map);
}
4条答案
按热度按时间roejwanj1#
在你的代码中,函数在错误的作用域中。试着将函数移到map函数中,而不是它自己的作用域中…
即,而不是:
使用(注意2个括号进一步向下移动)
d8tt03nd2#
主要的问题是你在函数
addMarker
中使用的变量map
不是你存储创建的map的变量。有几种方法可以解决这个问题,但最简单的方法是将创建的map赋值给第一行声明的变量map
。下面是代码:koaltpgm3#
这里有一个演示,它添加了4个标记,当你点击Map.
并在第5次单击鼠标时再次将其全部删除:
为了使标记的计数和删除更容易,我将它们添加到LayerGroup对象中,而不是添加到Map中。
但是您也可以使用
.addTo(map);
调用将它们添加到Map中。另外,对其他答案的评论-我认为在创建标记或任何其他Leaflet.js对象时,您不需要
new
关键字。5hcedyr04#