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)
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)