我正在尝试使用字段
将标记保存到数据库lat , lon ,标记说明。
如果地图上只有一个标记,一切都很好,但是当我添加第二个标记时,我的代码会生成2个sql-s而不是1个,并重复第一个添加的标记信息。
这是我的代码:
map.on('draw:created', function (e) {
var type = e.layerType;
var layer = e.layer;
var marker_lat = layer._latlng.lat;
var marker_lng = layer._latlng.lng;
// Here I open Popup to save Marker discription
$('#point_description').modal('show');
// Here save marker lat, Lng + marker description
$(document).on('click', '#save_point', function () {
var point_description_text = $('#point_description_text').val();
insertPlaques(marker_lat, marker_lng, point_description_text, modal_window);
});
drawnItems.addLayer(layer);
});
答案 0 :(得分:0)
每次Leaflet.Draw创建新形状时,都会调用'draw:created'函数。每次调用该方法时,都会在'#save_point'元素中添加一个新的'click'侦听器。因此,第二次调用'draw:created'(并且用户单击'#save_point'),将调用两个侦听器。第三次,将调用三名听众。
在调用insertPlaques方法后,您应该使用off()
删除点击侦听器,或者考虑使用one()
之类的方法添加点击侦听器而不是on()
({{3 }})