Leaflet 1.0升级spliceLatLngs替代方案?

Jos*_* E. 5 javascript leaflet

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

line.spliceLatLngs(index, 1, new L.LatLng(lat, lng));
Run Code Online (Sandbox Code Playgroud)

然而,随着最近的升级,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();
Run Code Online (Sandbox Code Playgroud)

但是有了这个替代方案,它似乎摆脱了尾随坐标.:(

我只是遗漏了将坐标拼接成现有折线的明显缺陷吗?

先感谢您!

Nex*_*ddo 1

您可以创建一个辅助函数来替换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);
    }
Run Code Online (Sandbox Code Playgroud)