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