Maps 传单:如何在geoJSON多段线上使用“getLatLngs”?

Maps 传单:如何在geoJSON多段线上使用“getLatLngs”?,maps,leaflet,mapbox,geojson,turfjs,Maps,Leaflet,Mapbox,Geojson,Turfjs,我创建了一个名为bezier的geoJSON多段线对象,如下所示: var linestring = turf.linestring( [[121.465, 31.233], [121.500634, 31.233499], [121.588107, 31.190172], [121.501545, 31.207394], [121.337514, 31.196079]] , { "stroke": "#25561F",

我创建了一个名为
bezier
的geoJSON多段线对象,如下所示:

var linestring = turf.linestring(
        [[121.465, 31.233], [121.500634, 31.233499], [121.588107, 31.190172], [121.501545, 31.207394], [121.337514, 31.196079]]
        , {
            "stroke": "#25561F",
            "stroke-width": 5
        });

var bezier = turf.bezier(linestring, 50000, 0.85);

bezier.properties = {
    "stroke": "#6BC65F",
    "stroke-width": 5,
    "description": "Bezier line from polyline"
}

L.mapbox.featureLayer().setGeoJSON(bezier).addTo(map);

然后,我使用
bezier.geometry.coordinates
访问它的点阵列。。但是我真正需要的是
LatLng
对象的数组(因为
L.animatedMarker
中需要LatLng),我想知道是否有一种方法可以提取
LatLng
数组,就像
getLatLngs
方法在传单对象上所做的那样。

您首先需要从添加到的层中获取对实际层的引用,在本例中,这将是您的L.mapbox.featureLayer。一旦你得到了它,你就可以使用
getLatLngs
方法了。您可以通过多种方式执行此操作:

使用
layeradd
事件,最干净的方式:

var featureLayer = L.mapbox.featureLayer().addTo(map);

featureLayer.on('layeradd', function (e) {
    var latLngs = e.layer.getLatLngs();
})

var featureLayer = L.mapbox.featureLayer().setGeoJSON(bezier).addTo(map);
如果您只想像现在这样插入一个层,您还可以直接从featurelayer中包含的layers对象获取它:

var key = Object.keys(featureLayer._layers)[0];
var latLngs = featureLayer._layers[key].getLatLngs();
或者,如果您的featureLayer中有多个层,并且不想使用事件,您可以在featureLayer上循环并从那里获取它:

featureLayer.eachLayer(function (layer) {
    var latLngs = layer.getLatLngs();
});

什么是
GeoJSON多段线
?没有这样的事。你是说GeoJSON行字符串功能吗?或者您是指通过
L.GeoJSON
层从GeoJSON LineString功能创建的
L.Polyline
对象?你也在谈论“传单对象”。你的问题很让人困惑,至少对我来说是这样。为什么不提供一些代码或更好的JSfiddle或Plunker来演示您的问题呢?@iH8很抱歉造成混淆。。添加了创建GeoJSON
bezier
的代码。。在
bezier
上是否有更简单的方法使用
getLatLngs