GlideGeoPoint-Entwicklerleitfaden
Der GlideGeoPoint-Entwicklerleitfaden enthält Informationen zur Berechnung von Entfernungen zwischen Breiten- und Längengradwerten (Geopunkten), 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 Längen- und Breitengradpaar in einem einzigen Feld speichern. Geopunkte können jedes Mal nützlich sein, wenn Sie einen geografischen Point of Interest speichern möchten, um zu fragen, wie weit zwei Points of Interest voneinander entfernt sind, oder um nach allen Punkten innerhalb einer bestimmten Entfernung von einem anderen Punkt zu suchen. Sie können beispielsweise die Geopoint-Funktionalität verwenden, um schnell alle Lieferorte Ihrer Kunden zu bestimmen und dann die Liefergebühren basierend auf der Entfernung zum Geschäft anzupassen.
- Er 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 beträgt [-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 durch Kommas getrenntes Paar angezeigt: „Längengrad, Breitengrad“. Klammern können den Ausdruck optional umgeben.
- Sowohl Längen- als auch Breitengrade werden mit einer Genauigkeit von bis zu 6 Dezimalstellen gespeichert.
Weitere Informationen zum Datentyp „Geopunkt“ finden Sie unter Function field.
In den Beispielen in diesem Leitfaden wird davon ausgegangen, dass die benutzerdefinierte Tabelle u_geopointmit den Feldern u_name und u_locationgefüllt wird, wobei u_name vom Typ „string“ ist und die Namen der Großstädte auflistet und u_location vom Typ „geopoint“ ist und den Längen- und Breitengrad 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 Zeichenfolgennotation.
- Legen Sie den Wert des Geopunktfelds
u_locationmithilfe einer Zeichenfolge fest. Die Zeichenfolge besteht aus einem durch Kommas getrennten Paar von Längen- und Breitengradwerten. Das folgende Beispiel zeigt, wie ein neuer Geopunkt in der Tabelleu_geopointin Zeichenfolgennotation festgelegt wird.Hinweis:GlideGeoPoint- API-Werte werden immer in der Reihenfolge Längengrad und Breitengrad 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_locationmit einem GlideGeoPoint-Objekt 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 mit der GlideGeoPoint-API
Verwenden Sie die API-Funktion getDisplayValue() GlideGeoPoint, 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 veranschaulicht die Verwendung der Funktion getDisplayValue() zum Abrufen aller Datensätze aus der Tabelle u_geopoint, die das Feld u_location vom Typ 'geopoint' enthält. Sie können dieses Beispielskript 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.
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)
Berechnet die Entfernung zwischen zwei Geopunkten
Verwenden Sie die Glide-Funktion „ distance_sphere “, um die Entfernung zwischen Geopunkten in Metern zurückzugeben.
Mit der Geopunkt-Glide-Funktion ( distance_sphere) können Sie die Entfernung zwischen zwei Geopunkten berechnen. Die Funktion gibt die Entfernung in Metern zurück. Distanz_Kugel 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:
glidefunction:distance_sphere(geopoint1, geopoint2)glidefunction:distance_sphere(geopoint1, longitude2, width2)glidefunction:distance_sphere(longitude1, width1, longitude2, width2)
Beachten Sie bei der Verwendung dieser Syntaxen Folgendes:
- geopoint1 und geopoint2 sind Tabellenelemente vom Typ 'geopoint'.
- Längengrad1, 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 Metern angibt
Das folgende Beispielskript definiert die Funktion „ distance_sphere “, um die Entfernung zwischen allen im Feld „u_location“ der Tabelle „u_geopoint“ gespeicherten Geopoints und dem Punkt -0,189937 Längengrad, 51,473584 Breitengrad (ungefähr der Standort London) zu berechnen. Die Funktion wird der GlideRecord-Abfrage hinzugefügt, um Ergebnisse zu erzeugen.
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 Städten im Feld u_location in Metern 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
Filtern Sie die Entfernung zwischen zwei Geopunkten
Verwenden Sie die Abfragebedingung DISTANCE_SPHERE_WITHIN, um nach Datensätzen zu filtern, die einen Geopunktwert innerhalb des Radius eines definierten Längen- und Breitengrads aufweisen.
DISTANCE_SPHERE_WITHIN muss der Syntax geopointDISTANCE_SPHERE_WITHINlongitude,latitude entsprechen <radius wobei:
„Geopunkt“ist ein Geopunkt-FeldLängengradundBreitengradsind DezimalkonstantenRadiusist eine Dezimalkonstante (in Metern).
DISTANCE_SPHERE_WITHIN akzeptiert Kilometer- oder Zählerwerte in der Anforderung, gibt jedoch immer den Ausgabewert in Metern 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 (ungefähr der Standort London) entfernt ist. Bei Ausführung werden drei Datensätze zurückgegeben, die Städte innerhalb des angegebenen Radius um 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)