在升级Leaflet 1.0之前,我使用spliceLatLngs方法将坐标放置在折线对象内,例如:

line.spliceLatLngs(index, 1, new L.LatLng(lat, lng));

但是,随着最近的升级,spliceLatLngs被重构,因为新的折线与嵌套的坐标数组是一样的。

我试图做一个这样的选择:
var latLngs = line.getLatLngs();

// Because I don't need the multi-dimensional array here
if (line instanceof L.Polygon) {
    latLngs = latLngs[0];
}

if (data) {
    latLngs.splice(index, 1, data);
} else {
    latLngs.splice(index, 1);
}
line.redraw();

但是使用这种替代方法似乎可以摆脱尾随坐标。 :(

我是否只是缺少明显的东西来将坐标拼接到现有折线中?

先感谢您!

最佳答案

您可以创建一个辅助函数来替换spliceLatLngs
这是一个用Typescript编写的示例:

 spliceLatLngs(polyline: L.Polyline, start: number, deleteCount: number, ...items: L.LatLng[]) {
        const latlngs: L.LatLng[] = polyline.getLatLngs();
        latlngs.splice(start, deleteCount, ...items);
        polyline.setLatLngs(latlngs);
    }

09-20 04:20