Javascript 传单-如何通过layer.getLatLngs循环?

Javascript 传单-如何通过layer.getLatLngs循环?,javascript,leaflet,Javascript,Leaflet,我正在尝试使用下面的命令循环一个层,在控制台中我只得到输出“0” 但是,如果我为结果设置一个div,而不循环遍历它们,我就会得到数据 $("#draw_coordinates").text(layer.getLatLngs()); 上述产出: LatLng(56.511018, -25.554199),LatLng(53.107217, -21.972656),LatLng(56.848972, -21.09375) 我怎样才能在横向循环 理想情况下,我希望在我的div中以字符串形式返回下面

我正在尝试使用下面的命令循环一个层,在控制台中我只得到输出“0”

但是,如果我为结果设置一个div,而不循环遍历它们,我就会得到数据

$("#draw_coordinates").text(layer.getLatLngs());
上述产出:

LatLng(56.511018, -25.554199),LatLng(53.107217, -21.972656),LatLng(56.848972, -21.09375)
我怎样才能在横向循环

理想情况下,我希望在我的div中以字符串形式返回下面的内容,这是一个倒转了latlngs的列表列表

[[-25.554199,56.511018],[-21.972656, 53.107217],[-21.09375, 56.848972]]
编辑:

使用:-

    layer.getLatLngs().forEach(function(latlng, idx){
        console.log(latlng);
    });
在控制台中返回一个数组,如何将latlngs作为字符串

Array (4)
0 {lat: 56.05976947910657, lng: -11.162109375, equals: function, toString: function, distanceTo: function, …}
1 {lat: 54.20101023973888, lng: -13.359375000000002, equals: function, toString: function, distanceTo: function, …}
2 {lat: 52.948637884883205, lng: -7.053222656250001, equals: function, toString: function, distanceTo: function, …}
3 {lat: 54.62297813269033, lng: -4.965820312500001, equals: function, toString: function, distanceTo: function, …}

Array Prototype

如果您使用的是var,这是一种常见的Javascript行为

提升是一种JavaScript机制,其中变量和函数声明在代码执行之前移动到其作用域的顶部

不可避免地,这意味着无论函数和变量声明在哪里,它们都会移动到其作用域的顶部,而不管其作用域是全局的还是局部的

如果要反转坐标数组顺序,请调用:

let coordinates = layer.getLatLngs()
coordinates.reverse()
为避免“0”问题,应改为使用

您可以使用Array.forEach()函数:

layer.getLatLngs().forEach(function(latlng, idx){
    console.log(latlng);
});
要获得lat和lng值:

layer.getLatLngs().forEach(function(latlng, idx){
    console.log(latlng);
    console.log(latlng.lat);
    console.log(latlng.lng);
    var str = "This is lat: "+latlng.lat+" and this is lng: "+latlng.lng";
    console.log(str);

    //Or use the latlng.toString() function
    console.log(latlng.toString());

});
有时latlng数组有一个“父”数组。您可以使用
L.LineUtil.isFlat(layer.getLatLngs())
检查这一点

对于循环:

var latlngs = layer.getLatLngs();

if(!L.LineUtil.isFlat(latlng)){
   latlngs = latlngs[0];
}

latlngs.forEach(function(latlng, idx){
    console.log(latlng);
    console.log(latlng.lat);
    console.log(latlng.lng);
    var str = "This is lat: "+latlng.lat+" and this is lng: "+latlng.lng";
    console.log(str);

    //Or use the latlng.toString() function
    console.log(latlng.toString());

});

这会在控制台中返回一个数组,我怎么才能得到lat long值呢?我在控制台中添加了一个输出的屏幕截图,其中很多是由于未知的原因而未定义的?在我看来,在OP的例子中,
layer.getLatLngs()
会返回一个LatLngs数组,当它被自动转换为字符串时,它可能会被隐藏,但这解释了为什么
console.log(latlng)
会输出一组latlng。虽然在某些情况下,您关于提升的说法是正确的,但我不认为这是问题的根本原因。此外,OP使用的是传单,而不是谷歌地图。你是对的。他使用的是传单,而不是谷歌地图。谢谢你的提醒。
layer.getLatLngs().forEach(function(latlng, idx){
    console.log(latlng);
    console.log(latlng.lat);
    console.log(latlng.lng);
    var str = "This is lat: "+latlng.lat+" and this is lng: "+latlng.lng";
    console.log(str);

    //Or use the latlng.toString() function
    console.log(latlng.toString());

});
var latlngs = layer.getLatLngs();

if(!L.LineUtil.isFlat(latlng)){
   latlngs = latlngs[0];
}

latlngs.forEach(function(latlng, idx){
    console.log(latlng);
    console.log(latlng.lat);
    console.log(latlng.lng);
    var str = "This is lat: "+latlng.lat+" and this is lng: "+latlng.lng";
    console.log(str);

    //Or use the latlng.toString() function
    console.log(latlng.toString());

});