繁体   English   中英

Leaflet js:如何在地图上绘制任何标记结束时获取 Lat 和 lng

[英]Leaflet js: How to get Lat and lng at the end of drawing any marker on Map

我得到了一个接近的代码,但我不确定,因为我是第一次使用 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);
});

请看一下代码,我不确定它是否解决了我的目的,因为这里的代码与带有地图的点击事件一起工作。

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

取决于您使用什么来绘制多边形/形状。 如果您使用的是 leaflet.draw,您会执行以下操作:

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

然后将点保存到您的数据库中。

阅读 Leaflet.draw文档,它非常完整和简单。

    map.on('draw:created', function(e) {
        var latlngs = e.layer['_latlngs'];
        console.log(latlngs)
    });

如果矩形输出:

0: Object { lat: 51.50084993084658, lng: -0.05254515762210588 }
1: Object { lat: 51.52007317336922, lng: -0.05254515762210588 }
2: Object { lat: 51.52007317336922, lng: 0.006832403235339513 }
3: Object { lat: 51.50084993084658, lng: 0.006832403235339513 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM