Scripting pour les pages de carte
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.//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;
}
}