GlideGeoPoint-Entwicklerleitfaden
Das GlideGeoPoint-Entwicklerleitfaden enthält Informationen zum Berechnen von Entfernungen zwischen Breiten- und Längengradwerten (Geopunkte), zum Rückgeben von Standorten innerhalb bestimmter Geopunkt- und Radiuswerte und zur Verwendung zusätzlicher Funktionen von unterstützt GlideGeoPoint API-Funktionen.
Die Geo point field type Ermöglicht das Speichern eines Breiten- und Längengradpaars in einem einzelnen Feld. Geopunkte können jederzeit nützlich sein, wenn Sie einen geografischen Punkt speichern möchten, um zu fragen, wie weit ein Teil zwei Punkte von Interesse voneinander entfernt sind, oder um nach allen Punkten in einer bestimmten Entfernung von einem anderen Punkt zu suchen. Sie können beispielsweise die Geopoint-Funktion verwenden, um schnell alle Lieferorte Ihres Kunden zu bestimmen und dann die Liefergebühren basierend auf der Entfernung vom Store anzupassen.
- Sie besteht aus einem Paar von Dezimalzahlen, die Längen- und Breitengradwerte 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.
- Geopoint-Werte werden immer als Eingabe akzeptiert und als kommagetrenntes Paar angezeigt: „Längengrad,Breitengrad“. Klammern können den Ausdruck optional umgeben.
- Sowohl Längen- als auch Breitengradwerte werden bis zu 6 Dezimalstellen der Genauigkeit gespeichert.
Weitere Informationen zum Geopoint-Datentyp finden Sie unter Function field.
Die Beispiele in diesem Leitfaden gehen davon aus, dass eine anwenderdefinierte Tabelle, u_Geopoint , Wird mit Feldern ausgefüllt u_Name Und u_location , Wo u_Name Ist vom Typ „Zeichenfolge“ und listet die Namen der wichtigsten Städte und auf u_location Ist vom Typ „Geopunkt“ und listet die Breiten-/Längengradpunkte jeder Stadt auf.
Erstellen Sie Geopunkte mit der GlideGeoPoint-API
Verwenden Sie GlideGeoPoint API zum Einfügen neuer Datensätze und Erstellen neuer Geopunkte.
Die GlideGeoPoint – Global Mit der API können Sie Geopoint-Werte 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 von Zeichenfolgennotation oder einem GlideGeoPoint-Objekt festlegen.
- Einfügen eines neuen Datensatzes mit Zeichenfolgennotation.
- Legen Sie den Wert des Geopoint-Felds fest
u_locationMit einer Zeichenfolge. Die Zeichenfolge besteht aus einem kommagetrennten Paar von Längen- und Breitengradwerten. Das folgende Beispiel zeigt, wie ein neuer Geopunkt in festgelegt wirdu_GeopointTabelle mit Zeichenfolgennotation.Hinweis:GlideGeoPoint API-Werte werden immer in Längen- und Breitengradreihenfolge aufgeführt.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(); - Mit dem GlideGeoPoint-Objekt wird ein neuer Datensatz eingefügt.
- Legen Sie den Wert des Geopoint-Felds fest
u_locationMit einem GlideGeoPoint-Objekt.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 Geopoint-Werte mit der GlideGeoPoint-API
Verwenden Sie GetDisplayValue() GlideGeoPoint-API-Funktion zum Lesen aller Geopoint-Werte aus einer bestimmten Tabelle.
Mit der standardmäßigen GlideGeoPoint-API können Sie einen Geopoint-Wert über abrufen GlideGeoPoint – getDisplayValue() Funktion. Es ist jedoch möglich, alle in einer ganzen Tabelle definierten Geopunkte zu lesen. Das folgende Beispielskript demonstriert die Verwendung von GetDisplayValue() Funktion zum Abrufen aller Datensätze aus u_Geopoint Tabelle, die enthält u_location Feld vom Typ „Geopoint“. Sie können dieses Beispielskript an Ihren eigenen 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 zurück u_Geopoint Tabelle. Der Anzeigewert eines Geopunkts enthält den Längengrad gefolgt vom Breitengrad, getrennt durch ein Komma und umgeben 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)
Berechnen Sie die Entfernung zwischen zwei Geopunkten
Verwenden Sie Distance_Sphere Glide-Funktion, um die Entfernung zwischen Geopunkten in Metern zurückzugeben.
Die Geopoint-Glide-Funktion, Distance_Sphere , Ermöglicht Ihnen die Berechnung der Entfernung zwischen zwei Geopunkten. Die Funktion gibt die Entfernung in Metern zurück. Distance_Sphere Kann in 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(geopoint1, geopoint2)Glidefunktion:distance_Sphere(geopoint1, longitude2, Breiten2)Glidefunktion:distance_Sphere(longitude1, Breiten1, longitude2, Breiten2)
Beachten Sie bei Verwendung dieser Syntaxen Folgendes:
- Geopoint1 und geopoint2 sind Tabellenelemente vom Typ „Geopoint“.
- Längen1, 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 darstellt
Das folgende Beispielskript definiert ein Distance_Sphere Funktion zur Berechnung der Entfernung zwischen allen in gespeicherten Geopunkten u_location Feld von u_Geopoint Tabelle und Punkt -0,189937 Längengrad, 51,473584 Breitengrad (ungefähr der Standort von London). Die Funktion wird der GlideRecord-Abfrage hinzugefügt, um Ergebnisse zu erhalten.
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 in auf u_location Feld in Metern.
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 DISTANCE_SPHERE_WITHIN Abfragebedingung zum Filtern nach Datensätzen mit einem Geopunkt-Wert innerhalb des Radius eines definierten Breitengrads und Längengradpunkts.
DISTANCE_SPHERE_WITHIN Muss der Syntax folgen GeopointDISTANCE_SPHERE_WITHINlongitude,Breitengrad<Radius Wobei:
GeopunktIst ein Geopoint-Feld LängengradUndBreitengradSind Dezimalkonstanten RadiusIst eine Dezimalkonstante (in Metern)
Die DISTANCE_SPHERE_WITHIN Akzeptiert Kilometer- oder Zählerwerte in der Anforderung, gibt den Ausgabewert jedoch immer in Metern zurück.
Das folgende Beispielskript zeigt, wie eine codierte Abfrage erstellt wird, die nur Datensätze mit zurückgibt u_location Weniger als 1.000.000 Kilometer vom Punkt entfernt -0,189937 Längengrad, 51,473584 Breitengrad (ungefähr der Standort von London). Bei der Ausführung 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)