我使用turf.js创建一个名为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
对象的数组(因为this plugin中的L.animatedMarker
需要latlngs ),我想知道是否有一种方法来提取LatLng
数组,就像getLatLngs
方法在传单对象上所做的那样。
答案 0 :(得分:1)
您首先需要从您添加它的图层中获取对实际图层的引用,在这个实例中,这将是您的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中包含的图层对象中获取它:
var key = Object.keys(featureLayer._layers)[0];
var latLngs = featureLayer._layers[key].getLatLngs();
或者如果你的featureLayer中有多个图层并且不想使用事件,你可以遍历featureLayer并从那里抓取它:
featureLayer.eachLayer(function (layer) {
var latLngs = layer.getLatLngs();
});