Adding information about colors in the maps

Berati Sahin
Tera Contributor

Hi everyone, our instance is London. I created a map according to the transportation type. In this map, there are several markers that are in a different color. In order to recognize which color belongs to which transportation type, I want to add an info message to the map. In other words, yellow indicates the company vehicle, red indicates the public service vehicle, etc. How can I add an info box about the coloring?

Thank you in advance, have a nice day...

 

find_real_file.png

find_real_file.png

4 REPLIES 4

Slava Savitsky
Giga Sage

I don't think you can put a text box on top of the map. Try placing this text somewhere else on the page, i.e. above, beneath or next to the map.

Hi Slava,

Anywhere in the map is convenient. But I dont know how I can settle this infobox or anything shows info of markers. If you help me about the settlement of infobox to anywhere in the map, I will be so grateful to you. Thank you

riyanka5
Kilo Expert

Hi Berati,

 

Please check if the marker_label helps you from the below link.

 

https://docs.servicenow.com/bundle/london-platform-user-interface/page/administer/navigation-and-ui/...

 

Thanks,

Riyanka

Saurabh singh4
Kilo Guru

Hi Sahin

check this out

 

The Script field on the Map Page form allows the use of attributes or custom code to define map characteristics, such as marker appearance, display information, and more.

Scripting map item attributes

The following attributes are available.
Note: To create an item on the map, use the map.addItem(glideRecord) method. Pass a valid GlideRecord to addItem().
AttributeDescription
nameName used for identification.
latitudeIf you define an address, latitude is not necessary.
longitudeIf you define an address, longitude is not necessary.
iconURL of the icon to display for the marker. If a custom icon is not specified, the default Google marker is used.
icon_widthWidth of the icon. The default is 32.
icon_heightHeight of the icon. The default is 32.
table_nameTable whose records display when the marker icon is clicked. Used with the sys_id attribute.
sys_idSys_id of the record that displays when the marker icon is clicked. Used with the table_name attribute.
viewView of the form displayed in the dialog box when the marker icon is clicked.
htmlArbitrary HTML code for the pop-up window. If used, this value overrides the dialog box.
marker_labelOptional marker icon label text.
label_offset_leftOptional attribute that is used with marker_label to define the horizontal position of the marker label. The default is 0.
label_offset_topOptional attribute that is used with marker_label to define the vertical position of the marker label. The default is 0.

Scripting custom map page behavior for smartphone

If you plan to access the map page from a smartphone, you may want to set custom smartphone interface behavior using the isMobile variable. You can use the isMobile variable to set custom behavior for the smartphone view of the map. For example, you might set different values for the icon_width and icon_height attributes when isMobile is true.

Basic map page script

This script displays all active, critical incident locations.
//setup new GlideRecord query on the incident table
var 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(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 map page script

This script displays all active, critical incident locations with custom settings for smartphone users.
//setup new GlideRecord query on the incident table
var 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(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";
 }
}

Advanced map page script

This script displays the number of open incidents by location. It varies the size of the icon based on the number of open incidents for the location. Using the html parameter, it also displays the location name and number of incidents, as well as a link to the list of related incidents.
//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";
 }
 }
}

Map page marker label script

Marker labels allow you to add dynamic text to markers. This example displays the active incident count at each location.
Map marker labels
//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;
 
 }
}



Please mark my answer correct and helpful, If this helps you in any way
Saurabh singh