传单获取编号

dar*_*ime 2 javascript leaflet

我正在尝试将 layer.GetLatLngs 转换为只有数字的数组,

[[17.68397, 1.98629],[17.6777, 1.96555],[17.66679, 1.9648],[17.6611, 1.99233]]

问题是输出是沿着的

LatLng(17.50438, 1.04772),LatLng(17.48686, 1.05775)

将数字仅转换为数组的最佳方法是什么?

//代码片段

map.on('draw:created', function (e) {

var type = e.layerType,
    layer = e.layer;
if (type === 'polygon') {
    layer.on('click', function() {
        window.alert(polys);    
    });
}

drawnItems.addLayer(layer);
polys = layer.getLatLngs();
});
Run Code Online (Sandbox Code Playgroud)

nik*_*shr 6

getLatlngs返回一个LatLng对象数组。要获取坐标对列表,您可以使用Array.map变换每个对象。例如,

layer.getLatLngs().map(function(point) {
    return [point.lat, point.lng];
});
Run Code Online (Sandbox Code Playgroud)

还有一个演示

layer.getLatLngs().map(function(point) {
    return [point.lat, point.lng];
});
Run Code Online (Sandbox Code Playgroud)
var latlngs = [
    [45.51, -122.68],
    [37.77, -122.43],
    [34.04, -118.2]
];
var layer = L.polyline(latlngs);
var resp = layer.getLatLngs().map(function(point) {
    return [point.lat, point.lng];
});

console.log(resp)
Run Code Online (Sandbox Code Playgroud)

或者,如果您的意图是获取图层的表示,请toGeoJSON改用获取底层几何图形:

layer.toGeoJSON().geometry.coordinates
Run Code Online (Sandbox Code Playgroud)

这是另一个带有多边形的演示

<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.js"></script>
Run Code Online (Sandbox Code Playgroud)
layer.toGeoJSON().geometry.coordinates
Run Code Online (Sandbox Code Playgroud)