マップページのスクリプティング
[マップ ページ] フォームの [スクリプト] フィールドでは、属性またはカスタム コードを使用して、マーカーの外観、表示情報などのマップ特性を定義できます。
マップアイテム属性のスクリプティング
次の属性を使用できます。注:
マップ上にアイテムを作成するには、 map.addItem(glideRecord) メソッドを使用します。有効な GlideRecord を に渡します addItem()。
| 属性 | 説明 |
|---|---|
| name | 識別に使用される名前。 |
| latitude | 住所を定義する場合、緯度は必要ありません。 |
| longitude | 住所を定義する場合、経度は必要ありません。 |
| アイコン | マーカーに表示するアイコンの URL。カスタム アイコンが指定されていない場合は、デフォルトの Google マーカーが使用されます。 |
| icon_width | アイコンの幅。デフォルトは 32 です。 |
| icon_height | アイコンの高さ。デフォルトは 32 です。 |
| table_name | マーカーアイコンがクリックされたときにレコードが表示されるテーブル。属性 sys_id とともに使用されます。 |
| sys_id | マーカーアイコンがクリックされたときに表示されるレコードのSys_id。属性 table_name とともに使用されます。 |
| view | マーカーアイコンがクリックされたときにダイアログボックスに表示されるフォームのビュー。 |
| HTML | ポップアップウィンドウの任意の HTML コード。使用すると、この値はダイアログ ボックスをオーバーライドします。 |
| marker_label | オプションのマーカーアイコンラベルテキスト。 |
| label_offset_left | マーカーラベルの水平位置を定義するために使用する marker_label オプションの属性。既定値は 0 です。 |
| label_offset_top | マーカーラベルの垂直位置を定義するために使用されるオプションの属性 marker_label 。既定値は 0 です。 |
スマートフォンのカスタムマップページ動作のスクリプティング
スマートフォンからマップページにアクセスする場合は、変数を使用して isMobile カスタムのスマートフォンインターフェイスの動作を設定できます。この isMobile 変数を使用して、マップのスマートフォン ビューのカスタム動作を設定できます。たとえば、 と 属性が true の場合isMobileに異なる値icon_widthicon_heightを設定できます。基本的なマップページスクリプト
このスクリプトは、すべてのアクティブで重要なインシデントの場所を表示します。
//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";
}isMobile マップページスクリプト
このスクリプトは、すべてのアクティブで重大なインシデントの場所を、スマートフォンユーザー向けのカスタム設定とともに表示します。
//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";
}
}詳細マップページスクリプト
このスクリプトは、オープンインシデントの数を場所別に表示します。場所のオープンインシデントの数に基づいて、アイコンのサイズが変わります。html パラメーターを使用すると、場所の名前とインシデントの数、および関連するインシデントのリストへのリンクも表示されます。//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";
}
}
}
マップページマーカーラベルスクリプト
マーカーラベルを使用すると、マーカーに動的なテキストを追加できます。この例では、各場所のアクティブなインシデント数を表示します。//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;
}
}