Leaflet.Draw将标记保存到DB

时间:2015-03-17 11:21:12

标签: leaflet

我正在尝试使用字段

将标记保存到数据库

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);

});

1 个答案:

答案 0 :(得分:0)

每次Leaflet.Draw创建新形状时,都会调用'draw:created'函数。每次调用该方法时,都会在'#save_point'元素中添加一个新的'click'侦听器。因此,第二次调用'draw:created'(并且用户单击'#save_point'),将调用两个侦听器。第三次,将调用三名听众。

在调用insertPlaques方法后,您应该使用off()删除点击侦听器,或者考虑使用one()之类的方法添加点击侦听器而不是on()({{3 }})