GlideGeoPoint Developer Guide

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 5 Minuten Lesedauer
  • 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.

    Wichtige Aspekte des Geotyp-Datentyps sind:
    • 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.

    Hinweis:
    GlideGeoPoint- API-Werte werden immer in Längengrad-/Breitengradreihenfolge aufgelistet.
    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:

    • Geopunkt ist ein Geopunktfeld
    • Längengrad und Breitengrad sind Dezimalkonstanten
    • Radius ist eine Dezimalkonstante (in Zählern)
    Hinweis:
    Das Kleiner-als-Symbol (<) in diesem Ausdruck ist erforderlich und wird nur als Trennzeichen verwendet. Alle anderen Vergleichsoperatoren sind ungültig.

    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)