2016-11-14 1 views
5

До апгрейда листовки 1.0 я использовал метод spliceLatLngs поместить координаты внутри объекта полилинии, как:Листовка 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(); 

Но с этой альтернативой, кажется, избавиться от завершающих координат. :(

Могу ли я просто отсутствует что-то очевидное сращивание координатой в существующую полилинию?

Спасибо заранее!

+0

Что данные назначены ли не заявление еще по существу гарантировать тянущуюся координат получает удалены –

+0

@TheBrofessor Если набор данных является нулевым я ожидаю? удалите координату, но если это правда, я ожидаю, что она удалит данные из latLngs. Данные здесь обычно являются latLng –

+0

Может ли [this] (https://github.com/Leaflet/Leaflet.draw/issues/458) быть полезным? – MarcoL

ответ

0

Вы можете создать вспомогательную функцию, которая заменит spliceLatLngs, здесь пример написан в машинописном:?

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); 
    }