GlideGeoPoint Developer Guide
Das GlideGeoPoint-Entwicklerhandbuch enthält Informationen zur Berechnung von Entfernungen zwischen Breiten- und Längengradwerten (Geopunkte), zur Rückgabe von Standorten innerhalb der angegebenen Geopunkt- und Radiuswerte und zur Verwendung zusätzlicher Funktionen, die von unterstützten GlideGeoPoint- API-Funktionen bereitgestellt werden.
Mit Geo point field type können Sie ein Breiten- und Längengradpaar in einem einzelnen Feld speichern. Geopunkte können jedes Mal nützlich sein, wenn Sie ein geografisches Point of Interest speichern möchten, um zu fragen, wie weit ein Teil zwei Points of Interest voneinander entfernt ist, oder um nach allen Punkten innerhalb einer bestimmten Entfernung von einem anderen Punkt zu suchen. Sie können beispielsweise die Geopunkt-Funktion verwenden, um schnell alle Lieferorte Ihrer Kunden zu bestimmen und dann die Liefergebühren basierend auf der Entfernung zum Geschäft anzupassen.
- Sie besteht aus einem Paar Dezimalzahlen, die Längen- und Breitengrade darstellen.
- Der Bereich für den Längengrad ist (-180, 180]. Jeder Wert außerhalb dieses Bereichs wird auf den entsprechenden Wert innerhalb dieses Bereichs normalisiert.
- Der Bereich für den Breitengrad ist [-90, 90]. Jeder Wert außerhalb dieses Bereichs wird auf den entsprechenden Wert innerhalb dieses Bereichs normalisiert.
- Geopunktwerte werden immer als Eingabe akzeptiert und als kommagetrenntes Paar angezeigt: „Längengrad,Breitengrad“. Der Ausdruck kann optional von Klammern umgeben werden.
- Sowohl Längen- als auch Breitengradwerte werden mit einer Genauigkeit von bis zu 6 Dezimalstellen gespeichert.
Weitere Informationen zum Datentyp „Geopunkt“ finden Sie unter Function field.
Die Beispiele in diesem Leitfaden gehen davon aus, dass die anwenderdefinierte Tabelle u_geopointmit den Feldern u_name und u_locationgefüllt ist, wobei u_name vom Typ „string“ ist und die Namen von Großstädten auflistet und u_location vom Typ „geopoint“ ist und den Breiten-/Längengrad auflistet Punkte jeder Stadt.
Erstellen Sie Geopunkte mit der GlideGeoPoint-API
Verwenden Sie die GlideGeoPoint- API, um neue Datensätze einzufügen und neue Geopunkte zu erstellen.
Mit der GlideGeoPoint : global API können Sie Geopunktwerte festlegen und abrufen. Sie können jedoch zusätzliche Funktionen zum Einfügen neuer Datensätze ausführen, indem Sie Geopunkte direkt in einem Skript mithilfe der Zeichenfolgennotation oder eines GlideGeoPoint-Objekts festlegen.
- Einfügen eines neuen Datensatzes in Zeichenfolgenschreibweise.
- Legen Sie den Wert des Geopunktfelds
„u_location“mithilfe einer Zeichenfolge fest. Die Zeichenfolge besteht aus einem durch Kommas getrennten Längen- und Breitengradwert. Das folgende Beispiel zeigt, wie ein neuer Geopunkt in der Tabelle„u_geopoint“in Zeichenfolgenschreibweise festgelegt wird.Hinweis:GlideGeoPoint- API-Werte werden immer in Längengrad-/Breitengradreihenfolge aufgelistet.const longitude = "-87.628018"; const latitude = "41.885778"; const geopoint = longitude + "," + latitude; const myGeoPoint = new GlideRecord("u_geopoint"); myGeoPoint.initialize(); myGeoPoint.setValue("u_name", "Chicago"); myGeoPoint.setValue("u_location", geopoint); myGeoPoint.insert(); - Einfügen eines neuen Datensatzes mit dem GlideGeoPoint-Objekt.
- Legen Sie den Wert des Geopunktfelds
„u_location“mithilfe eines GlideGeoPoint-Objekts fest.const longitude = -87.628018; const latitude = 41.885778; const geopoint = new GlideGeoPoint(longitude, latitude); const myGeoPoint = new GlideRecord("u_geopoint"); myGeoPoint.initialize(); myGeoPoint.setValue("u_name", "Chicago"); myGeoPoint.setValue("u_location", geopoint); myGeoPoint.insert();
Lesen Sie Geopunktwerte mithilfe der GlideGeoPoint-API
Verwenden Sie die GlideGeoPoint-API-Funktion getDisplayValue(), um alle Geopunktwerte aus einer bestimmten Tabelle zu lesen.
Mit der standardmäßigen GlideGeoPoint-API können Sie einen Geopunktwert über die Funktion GlideGeoPoint – getDisplayValue() abrufen. Es ist jedoch möglich, alle in einer gesamten Tabelle definierten Geopunkte zu lesen. Das folgende Beispielskript zeigt, wie mit der Funktion getDisplayValue() alle Datensätze aus der Tabelle „ u_geopoint “ abgerufen werden, die das Feld „ u_location “ vom Typ „geopoint“ enthält. Sie können dieses Beispielskript verwenden und an Ihren spezifischen Anwendungsfall anpassen.
const myGeoPoint = new GlideRecord("u_geopoint");
myGeoPoint.query();
while (gr.next())
gs.info("Name: {0} Location: {1}",
myGeoPoint.getDisplayValue('u_name'),
myGeoPoint.getDisplayValue('u_location'));
Die Ausgabe gibt alle Datensätze in der Tabelle „u_geopoint“ zurück. Der Anzeigewert eines Geopunkts enthält den Längengrad gefolgt vom Breitengrad, getrennt durch ein Komma und in Klammern eingeschlossen.
Name: London Location: (-0.189937, 51.473584)
Name: Puerto Rico Location: (-66.561301, 18.291136)
Name: Glasgow Location: (-4.223964, 55.867846)
Name: Chicago Location: (-87.628018, 41.885778)
Name: Tasmania Location: (146.757677, -42.173578)
Name: Bermuda Location: (-64.761595, 32.315798)
Name: Miami Location: (-80.206458, 25.767242)
Name: Sydney Location: (151.205230, -33.890115)
Name: Perth Location: (115.871253, -31.971583)
Name: Dublin Location: (-6.304994, 53.348317)
Berechnen Sie die Entfernung zwischen zwei Geopunkten
Verwenden Sie die Glide-Funktion „ distance_sphere “, um die Entfernung zwischen Geopunkten in Zählern zurückzugeben.
Mit der Geopunkt-Glide-Funktion „ distance_sphere“ können Sie die Entfernung zwischen zwei Geopunkten berechnen. Die Funktion gibt die Entfernung in Zählern zurück. „ distance_sphere “ kann bei der Definition eines Funktionsfeldelements in einer Tabelle oder über ein Skript verwendet werden. Drei Syntaxen werden unterstützt, und alle Parameter sind erforderlich:
glideFunktion:distance_sphere(Geopunkt 1, Geopunkt 2)glidefunction:distance_sphere(Geopunkt1, Längengrad2, Breitengrad2)GlideFunktion:Distanz_Kugel(Längengrad1, Breitengrad1, Längengrad2, Breitengrad2)
Beachten Sie bei der Verwendung dieser Syntaxen Folgendes:
- geopoint1 und geopoint2 sind Tabellenelemente vom Typ „geopoint“.
- Längengrad 1, Längengrad 2, Breitengrad 1, Breitengrad 2 sind numerische Tabellenelemente oder Konstanten
- In allen Fällen ist der Rückgabewert dieser Funktion eine Dezimalzahl, die die Entfernung zwischen zwei Geopunkten in Zählern darstellt
Das folgende Beispielskript definiert die Funktion „ distance_sphere “, um die Entfernung zwischen allen im Feld „u_location“ der Tabelle „ u_geopoint“ gespeicherten Geopunkten und dem Punkt -0,189937 Längengrad, 51,473584 Breitengrad (entspricht ungefähr dem Standort London) zu berechnen. Die Funktion wird der GlideRecord-Abfrage hinzugefügt, um Ergebnisse zu liefern.
const distToLondon =
"glidefunction:distance_sphere(u_location, '-0.189937', '51.473584')";
const myGeoPoint = new GlideRecord('u_geopoint');
gr.addFunction(distToLondon);
gr.query();
while(myGeoPoint.next())
gs.info("Name: {0} Dist to London(m): {1}",
myGeoPoint.u_name, gr.getValue(distToLondon));
Die Ausgabe listet die Entfernung zwischen London und Orten im Feld u_location in Meter auf.
Name: London Dist to London(m): 0
Name: Glasgow Dist to London(m): 555985.58456358
Name: Dublin Dist to London(m): 464000.328892816
Name: Miami Dist to London(m): 7123803.25406323
Name: Bermuda Dist to London(m): 5547607.95564083
Name: Puerto Rico Dist to London(m): 6799201.00905107
Name: Perth Dist to London(m): 14485217.5596414
Name: Sydney Dist to London(m): 17001034.4875494
Name: Tasmania Dist to London(m): 17324634.4559516
Filtert die Entfernung zwischen zwei Geopunkten
Verwenden Sie die Abfragebedingung DISTANCE_SPHERE_WITHIN, um nach Datensätzen zu filtern, die einen Geopunktwert im Radius eines definierten Breiten- und Längengrads haben.
DISTANCE_SPHERE_WITHIN muss der Syntax -GeopointDISTANCE_SPHERE_WITHIN-Längengrad,Breitengrad entsprechen <radius wobei:
Geopunktist ein GeopunktfeldLängengradundBreitengradsind DezimalkonstantenRadiusist eine Dezimalkonstante (in Zählern)
DISTANCE_SPHERE_WITHIN akzeptiert Kilometer- oder Meterwerte in der Anforderung, gibt den Ausgabewert jedoch immer in Zählern zurück.
Das folgende Beispielskript zeigt, wie eine codierte Abfrage erstellt wird, die nur Datensätze zurückgibt, deren u_location weniger als 1.000.000 Kilometer vom Punkt -0,189937 Längengrad, 51,473584 Breitengrad (entspricht ungefähr dem Standort London) entfernt liegt. Wenn sie ausgeführt wird, werden drei Datensätze zurückgegeben, die Städte innerhalb des angegebenen Radius von London darstellen.
const myGeoPoint = new GlideRecord("u_geopoint");
myGeoPoint.addEncodedQuery("u_locationDISTANCE_SPHERE_WITHIN-0.189937,51.473584<1000000");
myGeoPoint.query();
while(gr.next())
gs.info("Name:" + myGeoPoint.getDisplayValue("u_name")
+ " Location:" + myGeoPoint.getDisplayValue("u_location"));
Ausgabe:
Name:London Location:(-0.189937, 51.473584)
Name:Dublin Location:(-6.304994, 53.348317)
Name:Glasgow Location:(-4.223964, 55.867846)
Das folgende Beispielskript entspricht dem ersten, verwendet jedoch eine alternative Syntax für GlideRecord.
const myGeoPoint = new GlideRecord("u_geopoint");
myGeoPoint.addQuery("u_location", "DISTANCE_SPHERE_WITHIN", "-0.189937,51.473584<1000000");
myGeoPoint.query();
while(myGeoPoint.next())
gs.info("Name:" + myGeoPoint.getDisplayValue("u_name")
+ " Location:" + myGeoPoint.getDisplayValue("u_location"));
Ausgabe:
Name:London Location:(-0.189937, 51.473584)
Name:Dublin Location:(-6.304994, 53.348317)
Name:Glasgow Location:(-4.223964, 55.867846)