Scripting pour les pages de carte

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 5 minutes de lecture
  • Le champ Script du formulaire de page de carte permet l’utilisation d’attributs ou de code personnalisé pour définir les caractéristiques de la carte, telles que l’apparence du marqueur, les informations d’affichage, etc.

    Scripting des attributs d’élément de carte

    Les attributs suivants sont disponibles.
    Remarque :
    Pour créer un élément sur la carte, utilisez la méthode map.addItem(glideRecord). Transmettez un objet GlideRecord valide à addItem().
    Attribut Description
    nom Nom utilisé pour l’identification.
    latitude Si vous définissez une adresse, la latitude n’est pas nécessaire.
    longitude Si vous définissez une adresse, la longitude n’est pas nécessaire.
    icône URL de l’icône à afficher pour le marqueur. Si aucune icône personnalisée n’est spécifiée, le marqueur Google par défaut est utilisé.
    icon_width Largeur de l’icône. La valeur par défaut est 32.
    icon_height Hauteur de l’icône. La valeur par défaut est 32.
    table_name Table dont les enregistrements s’affichent lorsque l’icône du marqueur est sélectionnée. Utilisé avec l’attribut sys_id .
    sys_id Sys_id de l’enregistrement qui s’affiche lorsque l’icône du marqueur est sélectionnée. Utilisé avec l’attribut table_name .
    vue Vue du formulaire affichée dans la boîte de dialogue lorsque l’icône du marqueur est sélectionnée.
    HTML Code HTML arbitraire pour la fenêtre contextuelle. Si elle est utilisée, cette valeur remplace la boîte de dialogue.
    marker_label Texte d’étiquette d’icône de marqueur facultatif.
    label_offset_left Attribut facultatif utilisé pour marker_label définir la position horizontale de l’étiquette du marqueur. La valeur par défaut est 0.
    label_offset_top Attribut facultatif utilisé avec marker_label pour définir la position verticale de l’étiquette du marqueur. La valeur par défaut est 0.

    Scripting : comportement de la page de carte personnalisée pour smartphone

    Si vous prévoyez d’accéder à la page de carte à partir d’un smartphone, vous pouvez définir le comportement personnalisé de l’interface du smartphone à l’aide de la isMobile variable. Vous pouvez utiliser la variable pour définir un isMobile comportement personnalisé pour la vue smartphone de la carte. Par exemple, vous pouvez définir des valeurs différentes pour les icon_width attributs et icon_height lorsque isMobile la valeur est vrai.

    Script de page de carte de base

    Ce script affiche tous les emplacements d’incidents actifs et critiques.
    //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";
    }

    Script de page de carte isMobile

    Ce script affiche tous les emplacements d’incidents actifs et critiques avec des paramètres personnalisés pour les utilisateurs de smartphones.
    //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";
     }
    }

    Script de page de carte avancé

    Ce script affiche le nombre d’incidents ouverts par emplacement. La taille de l’icône varie en fonction du nombre d’incidents ouverts pour l’emplacement. À l’aide du paramètre html, il affiche également le nom de l’emplacement et le nombre d’incidents, ainsi qu’un lien vers la liste des incidents associés.
    //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";
     }
     }
    }

    Script de l’étiquette de marqueur de page de carte

    Les étiquettes de marqueur vous permettent d’ajouter du texte dynamique aux marqueurs. Cet exemple affiche le nombre d’incidents actifs à chaque emplacement.
    Figure 1. Étiquettes des marqueurs de carte
    //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;
     
     }
    }