GlideGeoPoint-Entwicklerleitfaden

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

    Wichtige Aspekte des Geotyp-Datentyps:
    • 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_location mithilfe 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 Tabelle u_geopoint in 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_location mit 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.

    Hinweis:
    GlideGeoPoint- API-Werte werden immer in der Reihenfolge Längengrad und Breitengrad 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.

    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-Feld
    • Längengrad und Breitengrad sind Dezimalkonstanten
    • Radius ist eine Dezimalkonstante (in Metern).
    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 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)