我正在尝试将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();
});
答案 0 :(得分:3)
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>
答案 1 :(得分:0)
我希望以下代码可以工作。请检查并让我知道。快乐编码:)
let string = "LatLng(17.50438, 1.04772),LatLng(17.48686, 1.05775)",
splittedArray = string.split("LatLng"),
outputArray = [];
splittedArray.forEach(o => {
if(o){
let extractedLTLNG = o.match(/\(([^)]+)\)/)[1].split(",");
let tempArray = [extractedLTLNG[0], extractedLTLNG[1]];
outputArray.push(tempArray);
}else{
return;
}
})
console.log(outputArray);