2013-08-28 6 views
5

Ich habe eine Website mit Leaflet erstellt, um Polygone auf eine zu zeichnen.Größe des Polygons mit Leaflet geprüft l.draw.polyline

Jetzt möchte ich die Größe des Polygons überprüfen, weil das Polygon eine definierte Größe nicht überschreiten darf, zum Beispiel 5 Quadratkilometer.

Hat jemand eine gute Idee, um die Größe des gezeichneten Polygons zu überprüfen?

Antwort

1

Ich kenne keine Leaflet Plugins, die dies für Sie erreichen können. Der Algorithmus dafür ist jedoch nicht besonders komplex. Überprüfen Sie diese Website: http://www.mathopenref.com/coordpolygonarea2.html enthält den Algorithmus und viele visuelle Beispiele, wie der Algorithmus tatsächlich funktioniert.

function polygonArea(X, Y, numPoints) 
{ 
    area = 0;   // Accumulates area in the loop 
    j = numPoints-1; // The last vertex is the 'previous' one to the first 

    for (i=0; i<numPoints; i++) 
    { area = area + (X[j]+X[i]) * (Y[j]-Y[i]); 
     j = i; //j is previous vertex to i 
    } 
    return area/2; 
} 

Um diesen Algorithmus mit Leaflet Polygone zu verwenden, würden Sie durch das Polygon polygon.getLatLngs() um laufen alle lat/lon-Paare zu erhalten. Legen Sie sie in zwei separate Arrays - eins für X-Koordinaten, eins für Y-Koordinaten. Verwenden Sie diese als Parameter für die obige Funktion und für numPoints Hand es die polygon.getLatLngs().length

Wie die Webseite sagt, ist es egal, wo auf dem Polygon-Pfad dies beginnt. Wenn Sie jedoch gegen den Uhrzeigersinn beginnen, wird Ihr Ergebnis negativ sein. Sie können alle Fälle behandeln, indem Sie einfach den absoluten Wert dessen abrufen, was diese Funktion zurückgibt.

+0

Die geodesicArea war für mich mit einer einfachen CRS-Karte fehlgeschlagen, diese Methode funktionierte jedoch perfekt, also danke! – Ecksters