Bibliothek zur Bereitstellung grundlegender Geospatialoperationen wie Entfernungsberechnung, Umwandlung von Dezimalkoordinaten in Sexagesimal und umgekehrt usw. Diese Bibliothek ist derzeit 2D , was bedeutet, dass die Höhe/Höhe noch nicht von ihren Funktionen unterstützt wird!
Ein detaillierter Changelog finden Sie in ChangeLog.md
npm install geolibyarn add geolibEs gibt einen UMD -Build und ein ES -Modul Build. Sie können entweder den UMD -Build im Knoten wie jede andere Bibliothek verwenden:
const geolib = require ( 'geolib' ) ;oder im Browser mithilfe eines einfachen Skriptelements:
< script src =" lib/geolib.js " > </ script > Wenn Sie es im Browser laden, können Sie über window.geolib auf alle Funktionen zugreifen.
Wenn Sie mit einem Bundler (wie Webpack oder Paket) zusammenarbeiten oder über eine Umgebung verfügen, die ES -Module nativ unterstützt, können Sie entweder bestimmte Funktionen direkt aus dem Paket importieren:
import { getDistance } from 'geolib' ;Oder laden Sie die gesamte Bibliothek:
import * as geolib from 'geolib' ;oder Sie können einzelne Funktionen direkt importieren, um potenziell Treeshaking zu verwenden (empfohlen):
import getDistance from 'geolib/es/getDistance' ; Diese Bibliothek ist in TypeScript geschrieben. Sie müssen TypeScript nicht kennen, um Geolib zu verwenden, aber die Typdefinitionen geben Ihnen wertvolle Informationen über die allgemeine Nutzung, Eingabeparameter usw.
Alle Methoden, die mit Koordinaten arbeiten, akzeptieren entweder ein Objekt mit einem lat / latitude und einer lon / lng / longitude -Eigenschaft oder ein Geojson -Array, wie: [lon, lat] . Alle Werte können entweder in dezimaler ( 53.471 ) oder sexagesimaler Format ( 53° 21' 16" ) erfolgen.
Entfernungswerte sind immer Schwimmer und repräsentieren die Entfernung in Messgeräten .
getDistance(start, end, accuracy = 1)Berechnet den Abstand zwischen zwei Geo -Koordinaten.
Diese Funktion erfordert bis zu 3 Argumente. Erste 2 Argumente müssen gültig sein GeolibInputCoordinates (z {latitude: 52.518611, longitude: 13.408056} ). Koordinaten können im Sexagesimal oder im Dezimalformat vorliegen. Das dritte Argument ist Genauigkeit (in Metern). Standardmäßig beträgt die Genauigkeit 1 Meter. Wenn Sie ein genaueres Ergebnis benötigen, können Sie es auf einen niedrigeren Wert einstellen, z. B. auf 0.01 für die Genauigkeit des Zentimeteres. Sie können es höher einstellen, um das Ergebnis auf den nächsten Wert abgerundet zu haben, der durch Ihre gewählte Genauigkeit teilbar ist (z. B. 25428 mit einer Genauigkeit von 100 wird 25400 ).
getDistance (
{ latitude : 51.5103 , longitude : 7.49347 } ,
{ latitude : "51° 31' N" , longitude : "7° 28' E" }
) ; // Working with W3C Geolocation API
navigator . geolocation . getCurrentPosition (
( position ) => {
console . log (
'You are ' ,
geolib . getDistance ( position . coords , {
latitude : 51.525 ,
longitude : 7.4575 ,
} ) ,
'meters away from 51.525, 7.4575'
) ;
} ,
( ) => {
alert ( 'Position could not be determined.' ) ;
}
) ;Gibt die Entfernung in Messgeräten als numerischen Wert zurück.
getPreciseDistance(start, end, accuracy = 1) Berechnet den Abstand zwischen zwei Geo -Koordinaten. Diese Methode ist genauer als getDistance , insbesondere für lange Strecken, aber auch langsamer. Es verwendet die Vincenty Inverse -Formel für Ellipsoide.
Es dauert die gleichen (bis zu 3) Argumente wie getDistance .
geolib . getPreciseDistance (
{ latitude : 51.5103 , longitude : 7.49347 } ,
{ latitude : "51° 31' N" , longitude : "7° 28' E" }
) ;getCenter(coords)Berechnet das geografische Zentrum aller Punkte in einer Sammlung von GEO -Koordinaten. Nimmt eine Reihe von Koordinaten und berechnet das Zentrum.
geolib . getCenter ( [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;Gibt ein Objekt zurück:
{
"latitude" : centerLat ,
"longitude" : centerLon
}getCenterOfBounds(coords)Berechnet das Zentrum der Grenzen der Geo -Koordinaten.
Nimmt eine Reihe von Koordinaten, berechnen Sie den Rand dieser und geben das Zentrum dieses Rechtecks zurück.
Bei Polygonen wie politischen Grenzen (z. B. Staaten) kann dies ein näheres Ergebnis für die menschliche Erwartung führen als getCenter , da diese Funktion durch ungleichmäßige Verteilung des Punktes auf verschiedenen Seiten gestört werden kann.
Stellen Sie sich vor, der US -Bundesstaat Oklahoma: getCenter , der einen südlichen Punkt gibt, denn die südliche Grenze enthält viel mehr Knoten als die anderen.
geolib . getCenterOfBounds ( [
{ latitude : 51.513357512 , longitude : 7.45574331 } ,
{ latitude : 51.515400598 , longitude : 7.45518541 } ,
{ latitude : 51.516241842 , longitude : 7.456494328 } ,
{ latitude : 51.516722545 , longitude : 7.459863183 } ,
{ latitude : 51.517443592 , longitude : 7.463232037 } ,
] ) ;Gibt ein Objekt zurück:
{
"latitude" : centerLat ,
"longitude" : centerLng
}getBounds(points)Berechnet die Grenzen der GEO -Koordinaten.
geolib . getBounds ( [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;Es gibt minimaler und maximaler Breitengrad und minimaler und maximaler Längengrad als Objekt zurück:
{
"minLat" : minimumLatitude ,
"maxLat" : maximumLatitude ,
"minLng" : minimumLongitude ,
"maxLng" : maximumLongitude ,
}isPointInPolygon(point, polygon)Überprüft, ob sich ein Punkt in einem Polygon befindet oder nicht.
geolib . isPointInPolygon ( { latitude : 51.5125 , longitude : 7.485 } , [
{ latitude : 51.5 , longitude : 7.4 } ,
{ latitude : 51.555 , longitude : 7.4 } ,
{ latitude : 51.555 , longitude : 7.625 } ,
{ latitude : 51.5125 , longitude : 7.625 } ,
] ) ; Gibt true oder false zurück
isPointWithinRadius(point, centerPoint, radius)Überprüft, ob sich ein Punkt in einem Kreis befindet oder nicht.
// checks if 51.525/7.4575 is within a radius of 5 km from 51.5175/7.4678
geolib . isPointWithinRadius (
{ latitude : 51.525 , longitude : 7.4575 } ,
{ latitude : 51.5175 , longitude : 7.4678 } ,
5000
) ; Gibt true oder false zurück
getRhumbLineBearing(origin, destination)Holen Sie sich eine Rhumb -Linie von zwei Punkten. Informieren Sie sich über den Unterschied zwischen Rhumb Line und Great Circle mit Wikipedia. Die Rhumb -Linie sollte in den meisten Fällen in Ordnung sein:
http://en.wikipedia.org/wiki/rhumb_line#general_and_mathematical_description
Die Funktion basiert stark auf der großartigen PHP-Version von Doug Vanderweide (lizenziert unter GPL 3.0) http://www.dougv.com/2009/07/13/calculations-the-beaking-compass-rose-direction-between--two-longitude-coordinatin-php/php/
geolib . getRhumbLineBearing (
{ latitude : 52.518611 , longitude : 13.408056 } ,
{ latitude : 51.519475 , longitude : 7.46694444 }
) ;Renditen berechnetes Lager als Zahl.
getGreatCircleBearing(origin, destination)Bekommt großen Kreislager von zwei Punkten. Dies ist genauer als das Lager von Rhumb Line, aber auch langsamer.
geolib . getGreatCircleBearing (
{ latitude : 52.518611 , longitude : 13.408056 } ,
{ latitude : 51.519475 , longitude : 7.46694444 }
) ;Renditen berechnetes Lager als Zahl.
getCompassDirection(origin, destination, bearingFunction = getRhumbLineBearing) Ruft die Kompassrichtung von einer Ursprungskoordinate zu einer Zielkoordinate ab. Optional kann eine Funktion zur Bestimmung des Lageres als dritter Parameter übergeben werden. Standard ist getRhumbLineBearing .
geolib . getCompassDirection (
{ latitude : 52.518611 , longitude : 13.408056 } ,
{ latitude : 51.519475 , longitude : 7.46694444 }
) ; Gibt die Richtung zurück (zB NNE , SW , E ,…) als String.
orderByDistance(point, arrayOfPoints)Sortiert ein Array von Koordnungen durch Entfernung zu einer Referenzkoordinate.
geolib . orderByDistance ( { latitude : 51.515 , longitude : 7.453619 } , [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.518 , longitude : 7.45425 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;Gibt eine Reihe von Punkten zurück, die nach ihrer Entfernung zum Bezugspunkt geordnet sind.
findNearest(point, arrayOfPoints) Findet den einzigen nächsten Punkt einer Referenzkoordinate. Es ist eigentlich nur eine Komfortmethode, die orderByDistance unter der Motorhaube verwendet und das erste Ergebnis zurückgibt.
geolib . findNearest ( { latitude : 52.456221 , longitude : 12.63128 } , [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
{ latitude : 55.751667 , longitude : 37.617778 } ,
{ latitude : 48.8583 , longitude : 2.2945 } ,
{ latitude : 59.3275 , longitude : 18.0675 } ,
{ latitude : 59.916911 , longitude : 10.727567 } ,
] ) ;Gibt den Punkt zurück, der dem Referenzpunkt am nächsten liegt.
getPathLength(points, distanceFunction = getDistance) Berechnet die Länge einer Sammlung von Koordinaten. Erwartet eine Reihe von Punkten als erstes Argument und optional eine Funktion, um die Entfernung als zweites Argument zu bestimmen. Standard ist getDistance .
geolib . getPathLength ( [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;Gibt die Länge des Pfades in Metern als Zahl zurück.
getDistanceFromLine(point, lineStart, lineEnd, accuracy = 1)Erholt den Mindestabstand von einem Punkt zu einer Linie von zwei Punkten.
geolib . getDistanceFromLine (
{ latitude : 51.516 , longitude : 7.456 } ,
{ latitude : 51.512 , longitude : 7.456 } ,
{ latitude : 51.516 , longitude : 7.459 }
) ;Gibt die kürzeste Entfernung zur angegebenen Zeile als Zahl zurück.
Hinweis: Wenn alle Punkte zu nahe beieinander liegen, kann die Funktion die NAN zurückgeben. In diesem Fall hilft es normalerweise, die Genauigkeit leicht zu erhöhen (z. B. 0.01 ).
getBoundsOfDistance(point, distance)Berechnet die Grenzkoordinaten aller Punkte auf der Erdoberfläche weniger als oder gleich dem angegebenen Großkreisabstand.
geolib . getBoundsOfDistance (
{ latitude : 34.090166 , longitude : - 118.276736555556 } ,
1000
) ;Gibt ein Array mit den Koordinaten der südwestlichen und nordöstlichen Koordinaten zurück.
isPointInLine(point, lineStart, lineEnd)Berechnet, wenn der angegebene Punkt in einer von Start und Ende gebildeten Zeile liegt.
geolib . isPointInLine (
{ latitude : 0 , longitude : 10 } ,
{ latitude : 0 , longitude : 0 } ,
{ latitude : 0 , longitude : 15 }
) ;sexagesimalToDecimal(value)Umwandle eine sexagesimale Koordinate in Dezimalformat
geolib . sexagesimalToDecimal ( `51° 29' 46" N` ) ;Gibt den neuen Wert als Dezimalzahl zurück.
decimalToSexagesimal(value)Konvertiert eine Dezimalkoordinate in das sexagesimale Format
geolib . decimalToSexagesimal ( 51.49611111 ) ; // -> 51° 29' 46`Gibt den neuen Wert als sexagesimale Zeichenfolge zurück.
geolib.getLatitude(point, raw = false)geolib.getLongitude(point, raw = false)Gibt den Breitengrad/Längengrad für einen bestimmten Punkt zurück und wandelt sie in Dezimalheit um. Wenn das zweite Argument auf wahr ist, wandelt es den Wert nicht in Dezimalheit um.
geolib . getLatitude ( { lat : 51.49611 , lng : 7.38896 } ) ; // -> 51.49611
geolib . getLongitude ( { lat : 51.49611 , lng : 7.38896 } ) ; // -> 7.38896Gibt den Wert als Dezimalzahl oder in seinem ursprünglichen Format zurück, wenn das zweite Argument auf true festgelegt wurde.
toDecimal(point) Überprüft, ob sich eine Koordinate bereits im Dezimalformat befindet, und wenn nicht, konvertiert sie. Funktioniert mit einzelnen Werten (z. B. 51° 32' 17" ) und vollständigen Koordinaten (z. B. {lat: 1, lon: 1} ), solange es in einem unterstützten Format ist.
geolib . toDecimal ( `51° 29' 46" N` ) ; // -> 51.59611111
geolib . toDecimal ( 51.59611111 ) ; // -> 51.59611111Gibt einen Dezimalwert für den angegebenen Eingangswert zurück.
computeDestinationPoint(point, distance, bearing, radius = earthRadius)Berechnet den Zielpunkt bei einem Anfangspunkt, einem Abstand (in Metern) und einem Lager (in Grad). Wenn kein Radius in Verzug des mittleren Erdradius von 6.371.000 Metern gegeben wird.
Achtung: Diese Formel ist nicht 100% genau (aber sehr nahe).
geolib . computeDestinationPoint (
{ latitude : 52.518611 , longitude : 13.408056 } ,
15000 ,
180
) ; geolib . computeDestinationPoint (
[ 13.408056 , 52.518611 ]
15000 ,
180
) ;Gibt das Ziel im selben Format wie die Eingabekoordinaten zurück. Wenn Sie also einen Geojson -Punkt bestehen, erhalten Sie einen Geojson -Punkt.
getAreaOfPolygon(points)Berechnet die Oberfläche eines Polygons.
geolib . getAreaOfPolygon ( [
[ 7.453635617650258 , 51.49320556213869 ] ,
[ 7.454583481047989 , 51.49328893754685 ] ,
[ 7.454778172179346 , 51.49240881084831 ] ,
[ 7.453832678225655 , 51.49231619246726 ] ,
[ 7.453635617650258 , 51.49320556213869 ] ,
] ) ;Gibt das Ergebnis als Anzahl in quadratischen Metern zurück.
getCoordinateKeys(point)Erhält die Eigenschaftsnamen, die in der normalisierten Form in dem Punkt verwendet werden:
geolib . getCoordinateKeys ( { lat : 1 , lon : 1 } ) ;
// -> { latitude: 'lat', longitude: 'lon' } Gibt ein Objekt mit einem latitude und einer longitude Eigenschaft zurück. Ihre Werte sind die Eigenschaftsnamen für Breitengrad und Längengrad, die im bestandenen Punkt verwendet werden. Sollte wahrscheinlich nur intern verwendet werden.
getCoordinateKey(point, keysToLookup) Wird von getCoordinateKeys unter der Motorhaube verwendet und gibt den Eigenschaftsnamen aus einer Liste möglicher Namen zurück.
geolib . getCoordinateKey ( { latitude : 1 , longitude : 2 } , [ 'lat' , 'latitude' ] ) ;
// -> latitude Gibt den Namen der Eigenschaft als Zeichenfolge zurück oder undefined , wenn nein keine Übereinstimmung gab.
isValidCoordinate(point)Überprüft, ob ein bestimmter Punkt mindestens einen Breitengrad und eine Länge hat und sich in einem unterstützten Format befindet.
// true:
geolib . isValidCoordinate ( { latitude : 1 , longitude : 2 } ) ;
// false, longitude is missing:
geolib . isValidCoordinate ( { latitude : 1 } ) ;
// true, GeoJSON format:
geolib . isValidCoordinate ( [ 2 , 1 ] ) ; Gibt true oder false zurück.
getSpeed(startPointWithTime, endPointWithTime)Berechnet die Geschwindigkeit zwischen zwei Punkten innerhalb einer bestimmten Zeitspanne.
geolib . getSpeed (
{ latitude : 51.567294 , longitude : 7.38896 , time : 1360231200880 } ,
{ latitude : 52.54944 , longitude : 13.468509 , time : 1360245600880 }
) ;Geben Sie die Geschwindigkeit in Metern pro Sekunde als Zahl zurück.
convertSpeed(value, unit) Konvertiert das Ergebnis von getSpeed in ein menschlicheres freundlicheres Format. Derzeit sind verfügbare Einheiten mph und kmh .
unit kann einer von: sein:
geolib . convertSpeed ( 29.8678 , 'kmh' ) ;Gibt den konvertierten Wert als Zahl zurück.
convertDistance(value, unit)Umwandelt eine bestimmte Entfernung (in Metern) in eine andere Einheit.
unit kann einer von: sein:
geolib . convertDistance ( 14200 , 'km' ) ; // 14.2
geolib . convertDistance ( 500 , 'km' ) ; // 0.5Gibt den konvertierten Abstand als Zahl zurück.
convertArea(value, unit) Konvertiert das Ergebnis von getAreaForPolygon in eine andere Einheit.
unit kann einer von: sein:
geolib . convertArea ( 298678 , 'km2' ) ) ;Gibt den konvertierten Bereich als Zahl zurück.
wktToPolygon(wkt)Konvertiert den bekannten Text (auch bekannt als Wkt) in Polygon, den Geolib versteht. https://en.wikipedia.org/wiki/well-noken-_text_repesentation_of_geometry#geometric_objects
geolib . wktToPolygon ( 'POLYGON ((30 10.54321, 40 40, 20 40, 10 20, 30 10))' ) ;
// [
// { latitude: 10.54321, longitude: 30 },
// { latitude: 40, longitude: 40 },
// { latitude: 40, longitude: 20 },
// { latitude: 20, longitude: 10 },
// { latitude: 10, longitude: 30 },}
// ]Gibt die Auswahl der Koordinaten zurück.
In Version 3.0.0 versuche ich, ein bisschen zu den Wurzeln zurückzukehren . Geolib wurde einmal gestartet, weil ich eine Handvoll Methoden brauchte, um sehr spezifische Geo -bezogene Aufgaben auszuführen, z. B. die Entfernung oder die Richtung zwischen zwei Punkten. Da es sich damals um eine der ersten Bibliotheken auf NPM handelte, um diese Art von Dingen auf sehr einfache Weise zu machen, wurde es sehr beliebt (mit mehr als 300.000 Downloads pro Monat ab April 2019!) Und infolgedessen erhielt sie im Laufe der Jahre viele Beiträge. Viele von denen ich nur zusammengeführt habe, solange sie begleitete Tests hatten, ohne Konsistenz, Konventionen, Komplexität, Kodierungsstil oder sogar die Gesamtqualität der Funktionen zu betrachten, die ich manchmal nicht einmal vollständig verstanden habe.
Ich habe die Codebasis jetzt vollständig aufgeräumt, die gesamte Bibliothek "von Grund auf" umgebaut, alle Funktionsargumente vereinigt, einige Funktionen entfernt, bei denen ich nicht sicher war, ob sie hier sein sollten (fügen Sie sie frei, sie zurückzuführen.
Die Unterstützung der Höhenunterstützung wurde fallen und einige Funktionen, die die Bibliothek unnötigerweise wirklich groß machten (z. B. isPointInsideRobust allein lag über 700 [!] Codezeilen und wurde im Grunde genommen aus einer anderen Bibliothek stammen).
Ich habe Grunzen aus dem Build -Prozess entfernt und "moderne" Tools wie Eslint und schöner hinzugefügt. Ich wechselte von Travis CI zu Circle CI und bin dabei, den Veröffentlichungsprozess neuer Versionen mithilfe semantic-release und conventional-commits weiter zu automatisieren. Ich habe auch von reinem JavaScript zu Typscript umgestellt, weil ich denke, dass es einige Vorteile hat.
getDistance -Funktion von der langsamen, genauen zu einem schnellen, leicht ungenauen. Die alte getDistance -Funktion heißt jetzt getPreciseDistance , während die alte Funktion getDistanceSimple jetzt die Standardfunktion getDistance ist. Sie können jedoch getPreciseDistance als Argument für jede Funktion übergeben, die die Entfernungsberechnung intern verwendet.getBoundsOfDistance() gibt nun die genauen Koordinaten zurück, da die künstliche Dezimalstelle der 8 -Dezimalstelle entfernengetCompassDirection() gibt ein Objekt nicht mehr mit einer exakten und rauen Richtung zurück, sondern nur die genaue Richtung als ZeichenfolgegetCompassDirection() ist keine String ("Kreis", "Linie"), sondern eine Funktion zur Bestimmung des Lagers (Sie können getRhumbLineBearing oder getGreatCircleBearing übergeben). Die Funktion empfängt den Ursprung und das Ziel als erstes und zweites Argument. Wenn kein drittes Argument angegeben wurde, wird getRhumbLineBearing(origin, dest) standardmäßig verwendet.roughCompassDirection(exact) wenn Sie wirklich nur eine sehr raue (und potenziell ungenaue oder unangemessene) Richtung benötigen. Benutze es besser nicht.orderByDistance() ändert seine Eingabe nicht mehr und fügt den zurückgegebenen Koordinaten keine distance und key hinzu.getSpeed() wird jetzt immer als Meter pro Sekunde zurückgegeben. Es kann mithilfe der neuen Convenience -Funktion convertSpeed(mps, targetUnit) konvertiert werden.findNearest() nimmt keine offset mehr ab und limit Argumente mehr. Es ist nur eine Komfortmethode, um den einzigen nächsten Punkt aus einer Reihe von Koordinaten zu erhalten. Wenn Sie mehr als einen benötigen, schauen Sie sich die Implementierung an und implementieren Sie Ihre eigene Logik mit orderByDistance52° 46' 21.0004" zurückgeben, aber es ist auch genauer als zuvor.computeDestinationPointgetBoundsgetBoundsOfDistancegetCentergetCenterOfBoundsgetCompassDirectiongetDistanceFromLinegetPathLengthgetRhumbLineBearinggetSpeedisDecimalisPointInLineisPointNearLineisSexagesimalorderByDistancegetKeys in getCoordinateKeys umbenanntvalidate in isValidCoordinate umbenanntgetLat umbenannt in getLatitudegetLon umbenannt in getLongitudelatitude -> Umbenannt in getLatitudelongitude -> Umbenannt in getLongitudeconvertUnit -> zur Konvertierung angewandt, weil der Name zu mehrdeutig waruseDecimal in toDecimal umbenanntdecimal2sexagesimal in decimalToSexagesimal umbenanntsexagesimal2decimal in sexagesimalToDecimal umbenanntgetDistance umbenannt in getPreciseDistancegetDistanceSimple in getDistance umbenanntisPointInside in isPointInPolygon umbenanntisPointInCircle in isPointWithinRadius umbenanntgetBearing umbenannt in getGreatCircleBearing , um expliziter zu seingetElev -> entferntelevation -> entferntcoords -> entfernt (kann als GetCoordinate oder GetnormalizedCoordinate neu eingestuft werden)ll -> entfernt (weil WTF?)preparePolygonForIsPointInsideOptimized -> aufgrund fehlender Dokumentation und fehlenden Tests entferntisPointInsideWithPreparedPolygon -> aufgrund fehlender Dokumentation entferntisInside alias -> entfernt ( isPointWithinRadius mehrdeutig) - isPointInPolygonwithinRadius -> entfernt, verwenden Sie isPointWithinRadiusgetDirection -> entfernt (unnötige Unordnung) - Verwenden Sie getCompassDirectiongetAreaOfPolygon , um die Fläche eines Polygons zu berechnengetCoordinateKey , um einen Eigenschaftsnamen zu erhalten (z. B. lat oder lng eines Objekts, das auf einer Reihe möglicher Namen basiert)