javascript - 传单获取编号

标签 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();
});

最佳答案

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

layer.getLatLngs().map(function(point) {
    return [point.lat, point.lng];
});

还有一个演示

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)
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.js"></script>

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

layer.toGeoJSON().geometry.coordinates

这是另一个多边形的演示

var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];
var layer = L.polygon(latlngs);
console.log(layer.toGeoJSON().geometry.coordinates)
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.js"></script>

关于javascript - 传单获取编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378454/

相关文章:

javascript - 在 React 组件上内联组合 CSS 和自定义 CSS 属性

r - 在传单 Shiny 中拖动标记后如何更新坐标?

leaflet - React-Leaflet-Draw : accessing a polygon's array of coordinates on save

javascript - 将键/值对附加到Leaflet中的L.Control.layer

leaflet - 用传单风水师在多边形上打洞

javascript - 为什么对象在 JS 中用括号括起来?

javascript - .next() 在 .each() 循环中不起作用

javascript - 如何访问 CLI 参数的多个值

javascript - 下载 html2canvas 图像到桌面

javascript - Leaflet - 获取弹出窗口中标记的纬度和经度