Scripting pour les pages de carte

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 5 minutes de lecture
  • Le champ Script du formulaire 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 de l’é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 GlideRecord valide à addItem().
    Attribut Description
    name 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’utilisateur clique sur l’icône du marqueur. Utilisé avec l’attribut sys_id .
    sys_id Sys_id de l’enregistrement qui s’affiche lorsque l’utilisateur clique sur l’icône du marqueur. Utilisé avec l’attribut table_name .
    vue Vue du formulaire affiché dans la boîte de dialogue lorsque l’utilisateur clique sur l’icône du marqueur.
    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 de l’étiquette de l’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 de 0.
    label_offset_top Attribut facultatif utilisé pour marker_label définir la position verticale de l’étiquette du marqueur. La valeur par défaut est de 0.

    Scripting du 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 attributs et icon_height lorsque isMobile la icon_width 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 critiques actifs 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. Elle fait varier la taille de l’icône 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 du marqueur de la 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;
     
     }
    }