Leaflet js:如何在地图

时间:2016-03-24 05:08:33

标签: javascript leaflet

我得到了一个接近的代码,但我不确定因为我是第一次使用Leaflet js。

我的意图是:假设Leaflet js显示地图或非地理数据,我有一个与Leaflet js相关的工具栏。当用户点击工具栏上的任何标记开始在地图上绘图时,工具栏上有许多标记,如圆形,多边形,方形等,然后当标记的绘制完成时,我怎么知道?

我怎么能附加一个函数,它将作为绘图完成的回调函数,该函数也让我知道标记的Lat和lng。如果我知道Lat和lng然后我可以保存在db中,稍后我们可以重复使用它来绘制形状。

以下代码

var map = L.map('mapcanvas').setView([51.505, -0.09], 13);

map.on('click', function(e){
    // Place marker
    var marker = new L.marker(e.latlng).addTo(map);

    // Ajax query to save the values:
    var data = {
        lat: e.latlng.lat,
        lng: e.latlng.lng
    }

    // saving lat and lng to db by ajax call
    var request = new XMLHttpRequest();
        request.open('POST', '/my/url', true);
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        request.send(data);
});

请看一下代码,我不确定它是否解决了我的目的,因为这里的代码适用于带地图的点击事件。

所以当我们点击地图时,标记绘图就完成了。所以请阅读我的帖子,了解我在寻找什么,并建议我如何实现它。感谢

1 个答案:

答案 0 :(得分:1)

取决于您用于绘制多边形/形状的内容。如果你正在使用leaflet.draw,你会做类似的事情:

map.on('draw:created', function(e) {
    var points = JSON.stringify(e.layer.toGeoJSON());
});

然后将积分保存到您的数据库。

阅读leaflet.draw documentation,它非常完整和直截了当。