Skripterstellung für Kartenseiten

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 5 Minuten Lesedauer
  • Das Feld Skript im Formular „Kartenseite“ ermöglicht die Verwendung von Attributen oder benutzerdefiniertem Code zum Definieren von Kartenmerkmalen, z. B. Darstellung von Markierungen, Anzeige von Informationen usw.

    Skripting Zuordnungselementattribute

    Die folgenden Attribute sind verfügbar.
    Hinweis:
    Um ein Element auf der Karte zu erstellen, verwenden Sie die Methode map.addItem(glideRecord). Übergeben Sie einen gültigen GlideRecord an addItem().
    Attribut Beschreibung
    Name Name, der zur Identifizierung verwendet wird.
    latitude Wenn Sie eine Adresse definieren, ist der Breitengrad nicht erforderlich.
    longitude Wenn Sie eine Adresse definieren, ist der Längengrad nicht erforderlich.
    icon URL des Symbols, das für die Markierung angezeigt werden soll. Wenn kein benutzerdefiniertes Symbol angegeben ist, wird die standardmäßige Google-Markierung verwendet.
    icon_width Breite des Symbols. Der Standardwert ist 32.
    icon_height Höhe des Symbols. Der Standardwert ist 32.
    table_name Tabelle, deren Datensätze angezeigt werden, wenn auf das Markersymbol geklickt wird. Wird mit dem Attribut sys_id verwendet.
    sys_id Sys_id des Datensatzes, der angezeigt wird, wenn auf das Markierungssymbol geklickt wird. Wird mit dem Attribut table_name verwendet.
    Ansicht Ansicht des Formulars, das im Dialogfeld angezeigt wird, wenn auf das Markierungssymbol geklickt wird.
    html Beliebiger HTML-Code für das Popup-Fenster. Wenn verwendet, überschreibt dieser Wert das Dialogfeld.
    Marker_Label Optionaler Bezeichnungstext des Markersymbols.
    Bezeichnung_Offset_Links Optionales Attribut, das mit marker_label verwendet wird, um die horizontale Position der Markerbezeichnung zu definieren. Der Standardwert ist 0.
    Bezeichnung_Offset_Top Optionales Attribut, das mit marker_label verwendet wird, um die vertikale Position der Markerbezeichnung zu definieren. Der Standardwert ist 0.

    Skripting für benutzerdefiniertes Verhalten der Kartenseite für Smartphone

    Wenn Sie von einem Smartphone aus auf die Kartenseite zugreifen möchten, sollten Sie das benutzerdefinierte Verhalten der Smartphone-Oberfläche mit der Variablen isMobile festlegen. Sie können die Variable isMobile verwenden, um ein benutzerdefiniertes Verhalten für die Smartphone-Ansicht der Karte festzulegen. Beispielsweise können Sie unterschiedliche Werte für die Attribute icon_width und icon_height festlegen, wenn isMobile auf „wahr“ festgelegt ist.

    Basisskript für Kartenseite

    Dieses Skript zeigt alle aktiven, kritischen Incident-Orte an.
    //setup new GlideRecord query on the incident table
    var now_GR = new GlideRecord("incident");
    //add condition for priority 1
    gr.addQuery('priority', '1');
    //add condition for active incidents
    gr.addActiveQuery();
    //execute the query
    gr.query();
     
    //loop through the list of incidents returned by the query
    while (gr.next()) {
     
     //create a new map item to display - linked to the current incident record
     var item = map.addItem(now_GR);
     //add the latitude value from the incident's location
     item.latitude = gr.location.latitude;
     //add the longitude value from the incident's location
     item.longitude = gr.location.longitude;
     //link to the icon image
     item.icon = "http://maps.google.com/mapfiles/kml/pal3/icon51.png";
     //set the icon size
     item.icon_width = "16";
     item.icon_height = "16";
    }

    isMobile-Kartenseitenskript

    Dieses Skript zeigt alle aktiven, kritischen Incident-Orte mit benutzerdefinierten Einstellungen für Smartphone-Benutzer an.
    //setup new GlideRecord query on the incident table
    var now_GR = new GlideRecord("incident");
    //add condition for priority 1
    gr.addQuery('priority', '1');
    //add condition for active incidents
    gr.addActiveQuery();
    //execute the query
    gr.query();
     
    //loop through the list of incidents returned by the query
    while (gr.next()) {
     
     //create a new map item to display - linked to the current incident record
     var item = map.addItem(now_GR);
     //add the latitude value from the incident's location
     item.latitude = gr.location.latitude;
     //add the longitude value from the incident's location
     item.longitude = gr.location.longitude;
     //link to the icon image
     item.icon = "http://maps.google.com/mapfiles/kml/pal3/icon51.png";
     
     //set the icon size (use smaller icons for smartphone users)
     if (isMobile) {
       item.icon_width = "12";
       item.icon_height = "12";
     }
     else { 
       item.icon_width = "16";
       item.icon_height = "16";
     }
    }

    Erweitertes Skript für Kartenseite

    Dieses Skript zeigt die Anzahl der offenen Incidents nach Standort an. Die Größe des Symbols hängt von der Anzahl der offenen Incidents für den Standort ab. Mit dem Parameter html werden auch der Name des Standorts und die Anzahl der Incidents sowie ein Link zur Liste der zugehörigen Incidents angezeigt.
    //get the instances url so we can link back to it
    var uri = gs.getProperty("glide.servlet.uri");
    //create an aggregate query on the incident table
    var count = new GlideAggregate('incident');
    //set condition for active incidents
    count.addQuery('active', 'true');
    //set aggregate field to location to get count by location
    count.addAggregate('COUNT', 'location');
    //execute the query
    count.query();
     
    //loop through the results
    while (count.next()) {
     
     //get the current record's location
     var loc = count.location;
     //get the count of incidents for this location
     var locCount = count.getAggregate('COUNT', 'location');
     //only display location is there are active incidents
     if (locCount > 0) {
     //create new new map item for this location
     var item = map.addItem(count);
     //set lat/long from the location record
     item.latitude = loc.latitude;
     item.longitude = loc.longitude;
     //build the link to the list of incidents for the location
     var link = 'href=' + uri + 'incident_list.do?sysparm_query=active%3Dtrue^location%3D' + loc;
     //build the html value to be displayed when you click the map icon
     item.html='<a ' + link + '>' + loc.getDisplayValue() + ' (' + locCount + ')</a>';
     //link to the icon image
     item.icon = "http://maps.google.com/mapfiles/kml/pal3/icon51.png";
     //set the size of the icon based on the number of active incidents
     if (locCount < 5) {
     item.icon_width = "12";
     item.icon_height = "12";
     }
     else if (locCount < 15) {
     item.icon_width = "16";
     item.icon_height = "16";
     }
     else {
     item.icon_width = "32";
     item.icon_height = "32";
     }
     }
    }

    Skript für Kartenseitenmarkerbezeichnung

    Mit Markerbezeichnungen können Sie dynamischen Text zu Markern hinzufügen. In diesem Beispiel wird die Anzahl der aktiven Incidents an jedem Standort angezeigt.
    Abbildung : 1. Kartenmarkerbezeichnungen
    //get the instances url so we can link back to it
    var uri = gs.getProperty("glide.servlet.uri");
    //create an aggregate query on the incident table
    var count = new GlideAggregate('incident');
    //set condition for active incidents
    count.addQuery('active', 'true');
    //set aggregate field to location to get count by location
    count.addAggregate('COUNT', 'location');
    //execute the query
    count.query();
     
    //loop through the results
    while (count.next()) {
     
     //get the current record's location
     var loc = count.location;
     //get the count of incidents for this location
     var locCount = count.getAggregate('COUNT', 'location');
     //only display location is there are active incidents
     if (locCount > 0) {
     //create new new map item for this location
     var item = map.addItem(count);
     //set lat/long from the location record
     item.latitude = loc.latitude;
     item.longitude = loc.longitude; 
     
     //create a marker label with the count
     item.marker_label = locCount;
     //define label offset for proper position
     item.label_offset_left = -4;
     item.label_offset_top = -20;
     
     //option to define table and record for label hyperlink
     //setting table and sys_id will override the use of html parameter
     //item.table = 'cmn_location';
     //item.sys_id = loc;
     
     //build the link to the list of incidents for the location
     var link = 'href=' + uri + 'incident_list.do?sysparm_query=active%3Dtrue^location%3D' + loc;
     //build the html value to be displayed when you click the map icon
     item.html='<a ' + link + '>' + loc.getDisplayValue() + ' (' + locCount + ')</a>';
     
     //link to the icon image
     item.icon = "images/red_marker.png";
     //set the size of the icon based on the number of active incidents
     item.icon_width = 24;
     item.icon_height = 24;
     
     }
    }