2016-11-14 1 views
5

Vor einem Upgrade von Leaflet 1.0 ich die spliceLatLngs Verfahren wurde unter Verwendung von Koordinaten innerhalb eines Polylinienobjekt zu stellen wie:Prospekt 1.0 Upgrade spliceLatLngs Alternative?

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

jedoch mit der jüngsten Aktualisierung wurde spliceLatLngs wegen Refactoring, wie die neuen Polylinien sind mit der verschachtelte Koordinatenfelder.

ich versucht, eine Alternative zu tun wie so:

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

Aber mit dieser Alternative scheint es der nacheilenden loszuwerden koordinieren. :(

Bin ich etwas offensichtlich fehlt nur eine Koordinate Spleiß in eine vorhandene Polylinie?

Vielen Dank im Voraus!

+0

Was Daten zugewiesen wird, nicht die else-Anweisung garantieren im wesentlichen die hintere entfernt wird Koordinate –

+0

@TheBrofessor Wenn der Datensatz null ich erwarten? entferne die Koordinate, aber wenn es wahr ist, erwarte ich, dass es die Daten von den LatLngs entfernt. Die Daten hier sind in der Regel ein latLng –

+0

Kann [this] (https://github.com/Leaflet/Leaflet.draw/issues/458) hilfreich sein? – MarcoL

Antwort

0

Sie können eine Hilfsfunktion erstellen, die spliceLatLngs, hier ein Beispiel ersetzen wird geschrieben in Typoskript:

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