2017-03-02 1 views
1

Ich habe Polylinie programmgesteuert zeichnen (nicht mit Leaflet Draw) in polygone mit Hilfe von Leaflet Draw Plugin auf Karte, ich möchte nur die Punkte der Polylinie, die in Polygon und sind Entferne diese draußen. Haben Sie eine Idee, wie Sie das mit einem Broschüren-Plugin machen? Jede Hilfe wird sehr geschätzt. DankEntfernen Sie Punkte von Polylinien, die außerhalb von Polygon sind mit Leaflet

Hier ist ein Screenshot:

enter image description here

Das erwartete Ergebnis:

enter image description here

Ich habe Forschung auf Unterschied Methode ** Rasen“Bibliothek als @ Sam vorgeschlagen , so kann ich endlich diese Methode auf meine Zeichnung Polygon und Linie anwenden, hier ist ein Code-Schnipsel:

var line = path.toGeoJSON(); 
 
var polygon = selectedPoly.toGeoJSON(); 
 
var difference, result = []; 
 
difference = turf.difference(line, polygon); 
 
if (difference) 
 
{ 
 
    result.push(difference); 
 
    var inter = L.geoJson(result).addTo(map); 
 
}

Dies ist ein Screenshot von dem Ergebnis:

enter image description here

Jetzt möchte ich diesen Teil der Linie entfernen und nur den Abschnitt innerhalb Polygon zu halten, habe ich versucht zu tun das funktioniert aber nicht. Kannst du mir bitte helfen? Danke

Antwort

1

Ich arbeite mit turfjs, um nach überlappenden Polygonen in Broschüre zu überprüfen.

map.on('draw:created', function (e) { 
     var intersection = []; 
     otherPolysLayer.eachLayer(function (layer) { 
     if (!_.isUndefined(turf.intersect(e.layer.toGeoJSON(),))) { 
      intersection.push(layer); 
     } 
    }) 
}); 

Sie könnten die oben ändern, so dass anstatt sie für die gesamte polygone prüft, Sie mit der difference Methode überprüfen würde.

Differenz: findet die Differenz zwischen zwei Polygonen durch die zweiten Polygons aus dem ersten Ausschnitt.

Ich habe für eine anständige Bibliothek für eine gute Weile gesucht und sah in blättchen pip, kevlindev unter anderem, aber ich finde, dass Rasen wirklich nur aus der Box funktioniert.

aktualisieren

http://jsfiddle.net/ddce1wh5/ wie über dieses? Ich habe Schnittpunkt benutzt, weil das anscheinend der Teil ist, den du behalten möchtest, den ich falsch entschuldige. Die folgenden http://jsfiddle.net/mcqL1y90/ verwenden wir ein Array von Linien, die entweder die Schnittlinie verwendet, oder wenn keine Kreuzung stattfindet, nimmt es die Linie selbst, um auf der Karte zu zeichnen.

+0

Vielen Dank @Sam für Ihre Klarstellung, ich werde versuchen, ** Unterschied ** Methode von ** Rasen ** auf Polylinie und Polygone anzuwenden. Nochmals vielen Dank – nermiiine

+0

Ich benutze Turfjs-Bibliothek, wie Sie @ Sam gesagt, so kann ich jetzt Unterschied Schicht, jetzt habe ich Problem, wie Teil der Linie außerhalb von Polygon zu entfernen, bearbeite ich den Beitrag, um den Screeshot und meinen Code hinzuzufügen Schnipsel – nermiiine

+0

Ich kann keine Lösung bis jetzt finden :( – nermiiine

Verwandte Themen