¥¼¥í¤«¤é¤Ï¤¸¤á¤ëAzure Âè41²ó ¡ÖAzure Maps¡×¤ò»È¤Ã¤ÆÃÏÍý¾ðÊ󥵡¼¥Ó¥¹¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÄɲ䷤褦 ¤½¤Î£³
¡û¤Ï¤¸¤á¤Ë
º£²ó¤ÏÁ°²ó¤Ë°ú¤Â³¤¡¢Azure Maps¤ò»È¤Ã¤¿ÃÏ¿Þɽ¼¨¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¤¤¤Þ¤¹¡£Á°²ó¼ÂÁõ¤·¤¿¸¡º÷µ¡Ç½¤ò¤è¤ê»È¤¤¤ä¤¹¤¯¤¹¤ë¤¿¤á¤Ë¡¢¥æ¡¼¥¶¡¼¤ÎÆþÎÏÆâÍƤˤè¤Ã¤ÆưŪ¤Ë¸¡º÷·ë²Ì¤òÃÏ¿Þ¾å¤ËÈ¿±Ç¤Ç¤¤ë¤è¤¦¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ø¤È½¤Àµ¤·¤Æ¤¤¤¤Þ¤¹¡£
ËܹƤǤÏÁ°²ó¤Î¼ÂÁõÆâÍƤò¤â¤È¤Ë¿·¤¿¤ËÄɲ乤ë²Õ½ê¤ä½¤Àµ¤¹¤ë²Õ½ê¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£´°Á´¤Ê¥µ¥ó¥×¥ë¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï¤³¤Á¤é¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£
¡û¥æ¡¼¥¶¡¼ÆþÎϤˤè¤ë¥¡¼¥ï¡¼¥É¸¡º÷¤Î¼ÂÁõ
¥æ¡¼¥¶¡¼¤¬ÆþÎϤ·¤¿¥¡¼¥ï¡¼¥É¤Ë¤è¤Ã¤Æ¸¡º÷¤ò¼Â¹Ô¤·¡¢¼èÆÀ¤·¤¿¸¡º÷·ë²Ì¤ò°ìÍ÷ɽ¼¨¤Ç¤¤ë¤è¤¦¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÊѹ¹¤·¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
¡û¸¡º÷¥Ü¥Ã¥¯¥¹¤ÎÄɲÃ
¤Þ¤º¤ÏHTMLÉôʬ¤ò½¤Àµ¤·¡¢²èÌ̾å¤Ë¸¡º÷¥¡¼¥ï¡¼¥É¤òÆþÎϤǤ¤ë¥Õ¥©¡¼¥à¤òÄɲä·¤Þ¤¹¡£
¥¡¼¥ï¡¼¥É¸¡º÷Îΰè¤ÎÄɲáÊindex.html¡Ë
HTMLÉôʬ¤Ë¤Ï¡¢¡Ösearch¡×¤È¤¤¤¦ID¤ò»ý¤ÄÍ×ÁǤòÄɲ䷤Ƥ¤¤Þ¤¹¡£¤³¤ÎÍ×ÁǤˤϸ¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÍÑ¥Õ¥©¡¼¥à¡Ê¡¡Ë¤È¸¡º÷·ë²Ì¤È¤·¤Æ¼èÆÀ¤µ¤ì¤¿°ÌÃÖ¾ðÊó¤ò¥ê¥¹¥È¤Çɽ¼¨¤¹¤ë¤¿¤á¤ÎÎΰè¡Ê¢¡Ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿º£²óÄɲä·¤¿HTML¤ËÂбþ¤¹¤ëCSS¤â¼ÂÁõ¤·¤Þ¤¹¤¬¡¢¤³¤Á¤é¤ÎÀâÌÀ¤Ï³ä°¦¤¹¤ë¤¿¤áźÉդδ°À®ÈǤÎHTML¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£
HTML¤ª¤è¤ÓCSS¤ò¼ÂÁõ¤¹¤ë¤È¡¢¿Þ¤Î¤è¤¦¤ÊÆþÎÏ¥Õ¥©¡¼¥à¤¬²èÌ̺¸¾å¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
¤³¤ì°Ê¹ß¤Ç¤Ï¡¢¤³¤ÎHTML¤ËÂФ·¤Æ¸¡º÷½èÍý¤ª¤è¤Ó¸¡º÷·ë²Ì¤Îɽ¼¨¤¬¤Ç¤¤ë¤è¤¦¤ËJavaScript¤ò¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡ûÃÏ¿Þɽ¼¨¤Î½é´ü²½½èÍý¤Î½¤Àµ
³¤¤¤ÆÃÏ¿Þɽ¼¨¤Î½é´ü²½½èÍý¤ª¤è¤Ó¥¡¼¥ï¡¼¥É¸¡º÷¤Î¼Â¹Ô¤ä¸¡º÷·ë²Ì¤Îɽ¼¨½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤¿¡ÖinitMap¡×¥á¥½¥Ã¥É¤ò½¤Àµ¤·¡¢¸¡º÷½èÍý¤È¸¡º÷·ë²Ì¤Îɽ¼¨½èÍý¤òʬΥ¤·¤Æ¤¤¤¤Þ¤¹¡£
½é´ü²½½èÍý¤Î½¤Àµ¡Êindex.html¡Ë
// ÊÑ¿ô¤Î½é´ü²½¡¦¡¦¡¦¡
// ÃÏ¿Þ¥¤¥ó¥¹¥¿¥ó¥¹
let map;
// ¥Ç¡¼¥¿¥½¡¼¥¹¥¤¥ó¥¹¥¿¥ó¥¹
let datasource;
// ¥Ý¥Ã¥×¥¢¥Ã¥×ÍѤΥ¤¥ó¥¹¥¿¥ó¥¹
let popup;
// ¸¡º÷¥¡¼¥ï¡¼¥É¤òÆþÎϤ¹¤ëÍ×ÁǤÎDOM
let searchInput;
// ¸¡º÷·ë²Ì¤òɽ¼¨¤¹¤ëÍ×ÁǤÎDOM
let resultsPanel;
function initMap() {
// Azure Maps Web SDK¤Î½é´ü²½
map = new atlas.Map('myMap', { // let¤òºï½ü
// ½é´üɽ¼¨¤ÎºÂɸ¡¦¥º¡¼¥àΨ¤ò»ØÄê ¡¦¡¦¡¦¢
center: [-122.33, 47.6],
zoom: 14,
view: 'Auto',
¡¦¡¦¡¦Ãæά
});
// ¸¡º÷¥¡¼¥ï¡¼¥ÉÆþÎÏÎΰè¤ÎDOM¤ò¼èÆÀ¤¹¤ë ¡¦¡¦¡¦£
searchInput = document.getElementById("search-input");
// ¸¡º÷¥¡¼¥ï¡¼¥ÉÆþÎÏÎΰè¤Ø¤Îʸ»úÆþÎϤò´Æ»ë¤¹¤ë ¡¦¡¦¡¦¤
searchInput.addEventListener("input", updateSearchInputValue);
// ¸¡º÷·ë²Ì¤òɽ¼¨¤¹¤ëDOM¤ò¼èÆÀ¤¹¤ë ¡¦¡¦¡¦¥
resultsPanel = document.getElementById("results-panel");
// ¥Ý¥Ã¥×¥¢¥Ã¥×ÍѤΥ¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ® ¡¦¡¦¡¦¦
popup = new atlas.Popup();
// ÃÏ¿Þ¥ì¥ó¥À¥ê¥ó¥°¤Î´°Î»¤òÂԤĥ¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¤ÎÄɲÃ
map.events.add('ready', function () {
¡¦¡¦¡¦Ãæά
});
});
initMap¥á¥½¥Ã¥É¤«¤é½èÍý¤òʬ³ä¤·¤ÆÊ£¿ô¤Î¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¤¿¤á¡¢¥á¥½¥Ã¥É´Ö¤Ç¶¦Ä̤·¤Æ»ÈÍѤ¹¤ëÊÑ¿ô¤ò¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡Ê¡¡Ë¡£Á°²ó¤Î¼ÂÁõ¤Þ¤Ç¤ËÅо줷¤¿ÃϿޤΥ¤¥ó¥¹¥¿¥ó¥¹¡Êmap¡Ë¡¢¥Ç¡¼¥¿¥½¡¼¥¹¥¤¥ó¥¹¥¿¥ó¥¹¡Êdatasource¡Ë¡¢¸¡º÷·ë²Ì¤Î¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨ÍѤΥ¤¥ó¥¹¥¿¥ó¥¹¡Êpopup¡Ë¤ò¤³¤³¤ÇÀë¸À¤¹¤ë¤è¤¦¤Ë°ÜÆ°¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢º£²óÄɲ乤븡º÷µ¡Ç½¤Ç»ÈÍѤ¹¤ëÊÑ¿ô¤ÎÀë¸À¤âÄɲä·¤Þ¤¹¡£¸¡º÷ÍѤΥ¡¼¥ï¡¼¥É¤òÆþÎϤ¹¤ëHTMLÍ×ÁǤÎDOM¤ò³ÊǼ¤¹¤ëÊÑ¿ô¡ÊsearchInput¡Ë¡¢¸¡º÷·ë²Ì¤òɽ¼¨¤¹¤ëHTMLÍ×ÁǤÎDOM¤ò³ÊǼ¤¹¤ëÊÑ¿ô¡ÊresultsPanel¡Ë¤Î£²¤Ä¤òÀë¸À¤·¤Æ¤¤¤Þ¤¹¡£
¼¡¤ËinitMap¥á¥½¥Ã¥É¤ÎÃæ¤òÊѹ¹¤·¤Æ¤¤¤¤Þ¤¹¡£Azure Maps Web SDK¤Î½é´ü²½½èÍý¤ÎÃæ¤ÇºÇ½é¤Ëɽ¼¨¤·¤¿¤¤¾ì½ê¤ÎºÂɸ¤ª¤è¤Ó¥º¡¼¥àΨ¤ò»ØÄꤹ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡Ê¢¡Ë¡£Á°²ó¤Î¥µ¥ó¥×¥ë¤Ç¤Ï¸¡º÷¼Â¹Ô»þ¤ËºÂɸ¤ò»ØÄꤷ¤Æ¤¤¤Þ¤·¤¿¤¬º£²ó¤ÏǤ°Õ¤Î¥¿¥¤¥ß¥ó¥°¤Ç¤Î¸¡º÷¤È¤Ê¤ë¤Î¤Ç¡¢½é´üɽ¼¨Ãʳ¬¤ÇºÂɸ¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
SDK¤Î½é´ü²½½èÍý¤Î¸å¤Ç¡¢³ÆÊÑ¿ô¤Ø¤ÎÃͤÎÂåÆþ¤ò¹Ô¤¤¤Þ¤¹¡£¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÍѤÎDOM¤È¸¡º÷·ë²Ìɽ¼¨ÍѤÎDOM¤ò¤½¤ì¤¾¤ìHTML¤«¤é¼èÆÀ¤·¤ÆÊÑ¿ô¤ØÂåÆþ¤·¤Þ¤¹¡Ê£¡¢¥¡Ë¡£¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÍѤÎDOM¤ÎÊý¤Ë¤Ï¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òÄɲä·¤Þ¤¹¡Ê¤¡Ë¡£¤³¤³¤Ç¤ÏÆþÎÏÆâÍƤÎÊѹ¹¤ò¸¡ÃΤ¹¤ë¡Öinput¡×¥¤¥Ù¥ó¥È¤ò´Æ»ë¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤Î¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿»þ¤Ë¼Â¹Ô¤¹¤ë¥á¥½¥Ã¥É¤È¤·¤Æ¡ÖupdateSearchInputValue¡×¤òÅÐÏ¿¤·¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Î¼ÂÁõ¤Ë¤Ä¤¤¤Æ¤Ï¸å¤Û¤ÉÀâÌÀ¤·¤Þ¤¹¡£
¡û¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨½èÍý¤Îʬ³ä
initMap¥á¥½¥Ã¥É¤Ë´Þ¤Þ¤ì¤Æ¤¤¤¿¸¡º÷½èÍý¤È¸¡º÷·ë²Ì¤Î¥Ô¥ó¤«¤é¥Ý¥Ã¥×¥¢¥Ã¥×¤ò½Ð¸½¤µ¤»¤ë½èÍý¤ò¤½¤ì¤¾¤ìÊ̥᥽¥Ã¥É¤ËÀÚ¤ê½Ð¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¤Ï¥Ô¥ó¤«¤é¥Ý¥Ã¥×¥¢¥Ã¥×¤ò½Ð¸½¤µ¤»¤ë½èÍý¤ò¡ÖshowPopup¡×¥á¥½¥Ã¥É¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡£
¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨Íѥ᥽¥Ã¥É¡Êindex.html¡Ë
function showPopup(shape) {
// ¥Ç¡¼¥¿¥½¡¼¥¹¤«¤é¥Ô¥ó¤Î¾ÜºÙ¾ðÊó¤ò¼èÆÀ¤¹¤ë ¡¦¡¦¡¦¡
let prop = shape.getProperties();
let position = shape.getCoordinates();
// ¥Ý¥Ã¥×¥¢¥Ã¥×ÍѤÎHTML¤ò¹½ÃÛ
let html = `
${prop.poi.name}
${prop.address.freeformAddress}
${position[1]}, ${position[0]}
`;
// ¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥»¥Ã¥È¥¢¥Ã¥×
popup.setPopupOptions({
content: html,
position: position
});
// ¥Ý¥Ã¥×¥¢¥Ã¥×¤ò²èÌ̤Ëɽ¼¨¤¹¤ë
popup.open(map);
}
showPopup¥á¥½¥Ã¥É¤Ï°ú¿ô¤È¤·¤Æ¡Öshape¡×¤È¤¤¤¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¼õ¤±¼è¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤·¤¿¤¤ÃÏÅÀ¤Ë¸ºß¤¹¤ë¥Ô¥ó¤òɽ¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢ÃÏÅÀ¤Î¾ÜºÙ¾ðÊó¤äºÂɸ¾ðÊó¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡Ê¡¡Ë¡£shape¤«¤é¼èÆÀ¤·¤¿¾ÜºÙ¾ðÊó¤ò»È¤¤¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨½èÍý¤ò¥á¥½¥Ã¥ÉÆâ¤Ç¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£½èÍýÆâÍƤˤĤ¤¤Æ¤ÏÁ°²ó¤ÈƱÍͤμÂÁõ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¼¡¤Ë¤³¤ÎshowPopup¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¥³¡¼¥É¤ò¼ÂÁõ¤·¤Þ¤¹¡£
showPopup¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¡Êindex.html¡Ë
// ÃÏ¿Þ¥ì¥ó¥À¥ê¥ó¥°¤Î´°Î»¤òÂԤĥ¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¤ÎÄɲà ¡¦¡¦¡¦¡
map.events.add('ready', function () {
¡¦¡¦¡¦Ãæά
// ¥Þ¥¦¥¹¥«¡¼¥½¥ë¤¬¥Ô¥ó¾å¤Ë½Å¤Ê¤Ã¤¿»þ¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤¹¤ë ¡¦¡¦¡¦¢
map.events.add('mouseover', searchLayer, function (e) {
if (e.shapes && e.shapes.length > 0) {
showPopup(e.shapes[0]); // ¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤· ¡¦¡¦¡¦£
}
});
});
¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤Ï²èÌ̾å¤ËÃÏ¿Þ¤¬É½¼¨¤µ¤ì¤Æ¤ª¤ê¡¢¤«¤Ä¸¡º÷½èÍý¤Î¼Â¹Ô¤Ë¤è¤Ã¤Æɽ¼¨¤µ¤ì¤¿¥Ô¥ó¾å¤Ë¥Þ¥¦¥¹¤¬¾è¤Ã¤¿¥¿¥¤¥ß¥ó¥°¤Çɽ¼¨¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤¿¤áinitMap¥á¥½¥Ã¥ÉÆâ¤Ë¤¢¤ëÃÏ¿Þ¤Îɽ¼¨¤ò¸¡ÃΤ¹¤ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¡Ê¡¡Ë¤ÎÃæ¤Ë¤¢¤ë¡¢¥Þ¥¦¥¹¥«¡¼¥½¥ë¤¬¥Ô¥ó¾å¤Ë½Å¤Ê¤Ã¤¿¤³¤È¤ò¸¡ÃΤ¹¤ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¡Ê¢¡Ë¤ÎÃæ¤ÇshowPopup¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ê£¡Ë¡£
¡û¸¡º÷½èÍý¤Îʬ³ä
¼¡¤Ë¸¡º÷½èÍý¤òʬ³ä¤·¤Æ¤¤¤¤Þ¤¹¡£¸¡º÷½èÍý¤Ï¸¡º÷¥¡¼¥ï¡¼¥É¤Î¼èÆÀ¡¢¸¡º÷½èÍý¤Î¼Â¹Ô¡¢¸¡º÷·ë²Ì¤Îɽ¼¨¤Î£³¥Ñ¡¼¥È¤Ëʬ¤±¤Æ¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¤Ï¸¡º÷¥¡¼¥ï¡¼¥É¤Î¼èÆÀ¤ò¹Ô¤¦¡ÖupdateSearchInputValue¡×¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¸¡º÷¥¡¼¥ï¡¼¥É¤Î¼èÆÀ¡Êindex.html¡Ë
function updateSearchInputValue(e) { // input¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ç¼õ¤±¼è¤ë ¡¦¡¦¡¦¡
// ÆþÎÏ»þÅÀ¤ÎÃͤòÊÝ»ý¤¹¤ë ¡¦¡¦¡¦¢
let inputValue = e.target.value;
// ÆþÎÏÆâÍƤ¬£³Ê¸»ú°Ê¾å¤Î¾ì¹ç¤Ë¸¡º÷½èÍý¤ò¼Â¹Ô¤¹¤ë ¡¦¡¦¡¦£
if (inputValue.length >= 3) {
// ¸¡º÷½èÍý¤Î¼Â¹Ô ¡¦¡¦¡¦¤
setTimeout(async function () {
// ÆþÎÏ»þ¤ÎÃͤȸ½ºß¤ÎÃÍ(setTimeout¤ÇÂÔµ¡¤·¤¿¸å¤ÎÃÍ)¤¬°ìÃפ·¤¿¤é¸¡º÷¤¹¤ë ¡¦¡¦¡¦¥
if (inputValue === e.target.value) {
await search();
}
}, 500); // 500¥ß¥êÉÃ(0.5ÉÃ)ÂÔµ¡¤¹¤ë
} else {
resultsPanel.innerHTML = '';
}
}
updateSearchInputValue¥á¥½¥Ã¥É¤Ï¡¢Á°½Ò¤ÎinitMap¥á¥½¥Ã¥ÉÆâ¤Ë¼ÂÁõ¤·¤¿¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÆâÍƤò´Æ»ë¤¹¤ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¤¬¸Æ¤Ó½Ð¤¹¥á¥½¥Ã¥É¤Ç¤¹¡£¤½¤Î¤¿¤á¡¢¥á¥½¥Ã¥É¤Î°ú¿ô¤ÇÆþÎÏÆâÍƤ˴ؤ¹¤ë¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤ò¼õ¤±¼è¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡Ê¡¡Ë¡£¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¤Ï¥æ¡¼¥¶¡¼¤¬ÆþÎϤ·¤¿¥¡¼¥ï¡¼¥É¤¬¼èÆÀ¤Ç¤¤Þ¤¹¡£¸å¤Î½èÍý¤Ç¤ÎÈæ³ÓÍѤˡ¢¥¡¼¥ï¡¼¥É¤Ï°ìÅÙÊÑ¿ô¤ØÂåÆþ¤·¤Æ¤ª¤¤Þ¤¹¡Ê¢¡Ë¡£¤Þ¤¿¥¡¼¥ï¡¼¥É¤Îʸ»ú¿ô¤Ë¤è¤Ã¤Æ¸¡º÷½èÍý¤Î¼Â¹Ô²ÄÈݤòȽÄꤹ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡Ê£¡Ë¡£¥¡¼¥ï¡¼¥É¤Îʸ»ú¿ô¤¬¾¯¤Ê¤¤¾ì¹ç¤Ï¸¡º÷¤ò¹Ô¤ï¤º¡¢ÌµÂ̤ʸ¡º÷½èÍý¤Î¸Æ¤Ó½Ð¤·¤òºï¸º¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£¥¡¼¥ï¡¼¥É¤Îʸ»ú¿ô¤¬¾ò·ï¤òËþ¤¿¤¹¾ì¹ç¤Ï¸¡º÷½èÍýÍѤΥ᥽¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ê¤¡Ë¡£¤³¤Î»þsetTimeout¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¸¡º÷½èÍý¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤ò¾¯¤·Ãٱ䤵¤»¤Æ¤¤¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ë¤è¤Ã¤Æ¥¡¼¥ï¡¼¥É¤¬ÄɲäÇÆþÎϤµ¤ì¤Æ¤¤¤ë¾ì¹ç¤ò¹Íθ¤·¡¢¥æ¡¼¥¶¡¼¤Ë¤è¤ëÆþÎϤ¬°ìÄê»þ´ÖÄä»ß¤·¤Æ¤«¤é¸¡º÷¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£¥æ¡¼¥¶¡¼¤¬ÆþÎÏÃ椫¤É¤¦¤«¤òȽÄꤹ¤ë¤¿¤á¤Ë¡¢¢¤ÇÊÑ¿ô¤ËÂåÆþ¤·¤¿¥¡¼¥ï¡¼¥É¤ÎÃͤȸ½»þÅÀ¤ÎÃͤòÈæ³Ó¤·¤Æ¤¤¤Þ¤¹¡Ê¥¡Ë¡£ÆþÎÏÃæ¤Î¾ì¹ç¤ÏÃͤ¬°ìÃפ·¤Ê¤¤¤¿¤á¡¢¸¡º÷½èÍý¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
¼¡¤Ë¸¡º÷½èÍý¤Î¼Â¹ÔÍѥ᥽¥Ã¥É¡Ösearch¡×¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¸¡º÷½èÍý¤Î¼Â¹Ô¡Êindex.html¡Ë
async function search() {
// ɽ¼¨Ãæ¤Î¸¡º÷·ë²Ì¤ò¥¯¥ê¥¢¤¹¤ë ¡¦¡¦¡¦¡
datasource.clear();
popup.close();
resultsPanel.innerHTML = '';
// ǧ¾Ú¾ðÊó¤òÆâÊñ¤·¤¿¥Ñ¥¤¥×¥é¥¤¥ó¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®
let pipeline = atlas.service.MapsURL.newPipeline(new atlas.service.MapControlCredential(map));
// Azure Maps¤ÎSearch Service¤òÁàºî¤¹¤ë¤¿¤á¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®
let searchURL = new atlas.service.SearchURL(pipeline);
// ¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÀßÄê ¡¦¡¦¡¦¢
let query = searchInput.value;
// ¸¡º÷¤Î¼Â¹Ô¡Ê¤¢¤¤¤Þ¤¤¸¡º÷¡Ë
let results = await searchURL.searchPOI(atlas.service.Aborter.timeout(10000), query, {
// ¸½ºßɽ¼¨¤·¤Æ¤¤¤ëÃϿޤκÂɸ¤ò¤â¤È¤Ë¸¡º÷¤¹¤ë¡¦¡¦¡¦£
lon: map.getCamera().center[0],
lat: map.getCamera().center[1],
radius: 9000
});
// ¸¡º÷·ë²Ì¤ò¥Ç¡¼¥¿¥½¡¼¥¹¤ØÄɲÃ
let data = results.geojson.getFeatures();
datasource.add(data);
// ¸¡º÷·ë²Ì¤Ë±þ¤¸¤ÆÃÏ¿Þ¤Îɽ¼¨°ÌÃÖ¤òÄ´À°
map.setCamera({
bounds: data.bbox
});
// ¸¡º÷·ë²Ì¤Îɽ¼¨ ¡¦¡¦¡¦¤
createResultsPanel(data);
}
initMap¥á¥½¥Ã¥É¤«¤é¸¡º÷½èÍý¤Ë´Ø¤¹¤ëÉôʬ¤òsearch¥á¥½¥Ã¥É¤Ë°ÜÆ°¤·¡¢½èÍý¤ÎÄɲ䪤è¤Ó½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£
¤Þ¤º¤ÏÊ£¿ô²ó¸¡º÷¤µ¤ì¤ë¤³¤È¤òÁÛÄꤷ¤Æ¡¢¥á¥½¥Ã¥É¤ÎËÁƬ¤ÇÁ°²ó¤Î¸¡º÷·ë²Ì¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡Ê¡¡Ë¡£¥Ç¡¼¥¿¥½¡¼¥¹¤ÏÆâÍƤΥ¯¥ê¥¢¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Ïɽ¼¨¤µ¤ì¤Æ¤¤¤ì¤ÐÊĤ¸¤ë¡¢¸¡º÷·ë²Ì¤ÎDOM¤Ï¶õʸ»ú¤Ç¾å½ñ¤¯¤³¤È¤Ç¤½¤ì¤¾¤ì¥¯¥ê¡¼¥ó¥¢¥Ã¥×¤·¤Æ¤¤¤Þ¤¹¡£
¼¡¤Ë¸¡º÷¥¡¼¥ï¡¼¥É¤òÆþÎÏÎΰ褫¤é¼èÆÀ¤·¤Þ¤¹¡Ê¢¡Ë¡£Á°²ó¤ÎÎã¤Ç¤Ï¤³¤³¤¬¸ÇÄê¤ÎÃͤǤ·¤¿¤¬¡¢º£²ó¤Ï²èÌ̾夫¤é¼«Í³¤Ë¥¡¼¥ï¡¼¥É¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¼¡¤Ë¢¤Ç¼èÆÀ¤·¤¿¥¡¼¥ï¡¼¥É¤ò»È¤Ã¤Æ¸¡º÷¤ò¼Â¹Ô¤·¤Þ¤¹¡£¸¡º÷ÂоݤȤʤëºÂɸ¤Î»ØÄê¤Ë¤Ï¡¢¸½ºßɽ¼¨¤·¤Æ¤¤¤ëÃÏ¿Þ¤ÎÃæ¿´¤Ë¤¢¤¿¤ë²Õ½ê¤ÎºÂɸ¤ò»ÈÍѤ·¤Þ¤¹¡Ê£¡Ë¡£¤³¤ÎºÂɸ¤âÁ°²ó¤Ï¸ÇÄêÃͤȤʤäƤ¤¤Þ¤·¤¿¤¬¡¢Ç¤°Õ¤ÎÃÏÅÀ¤Ç¸¡º÷¤Ç¤¤ë¤è¤¦¤ËÊѹ¹¤·¤Æ¤¤¤Þ¤¹¡£
¥á¥½¥Ã¥É¤ÎºÇ¸å¤Ç¡¢¸å½Ò¤¹¤ë¸¡º÷·ë²Ìɽ¼¨ÍѤΥ᥽¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ê¤¡Ë¡£°ú¿ô¤Ë¤Ï¸¡º÷·ë²Ì¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ·¤Þ¤¹¡£
¸¡º÷·ë²Ì¤Îɽ¼¨¤Ï¡ÖcreateResultsPanel¡×¥á¥½¥Ã¥É¤Ë¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¸¡º÷·ë²Ì¤Îɽ¼¨¡Êindex.html¡Ë
function createResultsPanel(data) {
let html = [];
// HTML¤Î¹½ÃÛ ¡¦¡¦¡¦¡
for (let i = 0; i < data.features.length; i++) {
let r = data.features[i];
// ¥Ç¡¼¥¿¹Ô¤ËÂФ¹¤ë¥Þ¥¦¥¹Áàºî¤Î¥Ï¥ó¥É¥é¡¼¤òÄɲà ¡¦¡¦¡¦¢
html.push(``);
// ÃÏÅÀ¤Î̾¾Î¡Ê¤Þ¤¿¤Ï½»½ê¡Ë
html.push(``);
if (r.properties.poi && r.properties.poi.name) {
html.push(r.properties.poi.name);
} else {
html.push(r.properties.address.freeformAddress);
}
html.push(``);
// ½»½ê
html.push(`${r.properties.type}: ${r.properties.address.freeformAddress}`);
// ÅÅÏÃÈֹ桦¥Û¡¼¥à¥Ú¡¼¥¸
if (r.properties.poi) {
if (r.properties.phone) {
html.push(`phone: ${r.properties.poi.phone}`);
}
if (r.properties.poi.url) {
html.push(`http://${r.properties.poi.url}`);
}
}
html.push(``);
// ¸¡º÷·ë²ÌÍѤÎDOM¤Ë¹½ÃÛ¤·¤¿HTML¤òÂåÆþ ¡¦¡¦¡¦£
resultsPanel.innerHTML = html.join('');
}
}
createResultsPanel¥á¥½¥Ã¥É¤Ç¤Ïsearch¥á¥½¥Ã¥É¤Ç¼èÆÀ¤·¤¿¸¡º÷·ë²Ì¥ª¥Ö¥¸¥§¥¯¥È¤ò¤â¤È¤Ë¸¡º÷·ë²Ì¤Î°ìÍ÷¤òHTML¤ËÉÁ²è¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡Ê¡¡Ë¡£¸¡º÷·ë²Ì¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï¡¢¸¡º÷¥¡¼¥ï¡¼¥É¤Ë¥Ò¥Ã¥È¤·¤¿³ÆÃÏÅÀ¤Î̾¾Î¡¦½»½ê¡¦ÅÅÏÃÈֹ桦¥Û¡¼¥à¥Ú¡¼¥¸¤ÎURL¤Ê¤É¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤Ç¤³¤ì¤é¤òɽ¼¨¤Ç¤¤ë¤è¤¦¤ËHTML¤òÁȤßΩ¤Æ¤Æ¤¤¤¡¢1·ï¤º¤Ä·ë²Ìɽ¼¨ÍѤÎDOM¤ËÄɲ䷤Ƥ¤¤¤Þ¤¹¡Ê£¡Ë¡£¤Þ¤¿¸¡º÷·ë²Ì°ìÍ÷¾å¤ÇǤ°Õ¤Î¸¡º÷·ë²Ì¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò¾è¤»¤¿¾ì¹ç¤ä¥¯¥ê¥Ã¥¯¤·¤¿»þ¤Î½èÍý¤â¼ÂÁõ¤·¤Þ¤¹¡Ê¢¡Ë¡£
¸¡º÷·ë²Ì¤Îɽ¼¨¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò¾è¤»¤¿¾ì¹ç¤Î½èÍý¤ò¡ÖitemHovered¡×¥á¥½¥Ã¥É¡¢¥¯¥ê¥Ã¥¯¤·¤¿¾ì¹ç¤Î½èÍý¤ò¡ÖitemClicked¡×¥á¥½¥Ã¥É¤È¤·¤Æ¼ÂÁõ¤·¤Þ¤¹¡£
¸¡º÷·ë²Ì¤ËÂФ¹¤ë¥Þ¥¦¥¹Áàºî¤Î½èÍý¡Êindex.html¡Ë
// ¸¡º÷·ë²Ì¤Îɽ¼¨¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò¾è¤»¤¿¾ì¹ç¤Î½èÍý ¡¦¡¦¡¦¡
function itemHovered(id) {
var shape = datasource.getShapeById(id);
// ¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤¹¤ë
showPopup(shape);
}
// ¸¡º÷·ë²Ì¤Îɽ¼¨¤ò¥¯¥ê¥Ã¥¯¤·¤¿¾ì¹ç¤Î½èÍý ¡¦¡¦¡¦¢
function itemClicked(id) {
var shape = datasource.getShapeById(id);
// ¥¯¥ê¥Ã¥¯¤·¤¿ÃÏÅÀ¤¬Ãæ±û¤È¤Ê¤ë¤è¤¦¤Ë¥«¥á¥é¤ò°ÜÆ°¤¹¤ë
map.setCamera({
center: shape.getCoordinates(),
zoom: 17
});
}
itemHovered¥á¥½¥Ã¥É¤Ç¤Ï¡¢¼õ¤±¼è¤Ã¤¿ID¤ò¤â¤È¤ËÃÏÅÀ¤Î¥Ô¥ó¾ðÊó¤ò¼èÆÀ¤·¤Æ¥Ô¥ó¾å¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤Ë¤ÏÁ°½Ò¤·¤¿showPopup¥á¥½¥Ã¥É¤òºÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡Ê¡¡Ë¡£
itemClicked¥á¥½¥Ã¥É¤âƱÍͤ˼õ¤±¼è¤Ã¤¿ID¤«¤é¥Ô¥ó¾ðÊó¤ò¼èÆÀ¤·¡¢¥Ô¥ó¤ÎºÂɸ¤¬Ãæ¿´¤È¤Ê¤ë¤è¤¦¤Ë¥«¥á¥é¤ò°ÜÆ°¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡Ê¢¡Ë¡£
¤³¤³¤Þ¤Ç¼ÂÁõ¤¬´°Î»¤·¤¿¤é¥Õ¥¡¥¤¥ë¤òÊݸ¤·¡¢¥Ö¥é¥¦¥¶¤ÇÆ°ºî³Îǧ¤ò¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¸¡º÷¤Î¼Â¹Ô¤ª¤è¤Ó¸¡º÷·ë²Ì¤Îɽ¼¨¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤ä¥«¥á¥é¤Î°ÜÆ°¤Ê¤É¤¬Æ°ºî¤·¤Æ¤¤¤ë¤³¤È¤¬³Îǧ¤Ç¤¤ì¤Ð´°À®¤Ç¤¹¡£
¡û¤Þ¤È¤á
Á´£³²ó¤Ë¤ï¤¿¤Ã¤ÆAzure Maps¤Ë¤Ä¤¤¤Æ¾Ò²ð¤·¡¢Azure Maps¤Î¥µ¡¼¥Ó¥¹·²¤Î¤Ò¤È¤Ä¤Ç¤¢¤ëSearch Service¤ò»È¤Ã¤¿¥¡¼¥ï¡¼¥É¸¡º÷¤Î¼ÂÁõÊýË¡¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯ÀâÌÀ¤ò¤·¤Þ¤·¤¿¡£Azure Maps¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÁȤ߹þ¤à¤³¤È¤Ç¡¢Ê£»¨¤«¤Ä¹ÈϤÊÃÏÍý¾ðÊó´ØÏ¢¤Îµ¡Ç½¤òÈæ³ÓŪÍưפ˰·¤¨¤ë¤³¤È¤¬Ê¬¤«¤Ã¤¿¤«¤È»×¤¤¤Þ¤¹¡£¼¹É®»þÅÀ¤Ç¤ÏÆüËܸ줪¤è¤ÓÆüËÜÃÏ°è¤Ë¤ª¤±¤ë¥µ¥Ý¡¼¥È¤¬Ì¤Âбþ¤Ç¤¢¤ë¥µ¡¼¥Ó¥¹·²¤¬Â¿¤¤¾õ¶·¤Ç¤¹¤¬¡¢ÃÏÍý¾ðÊó¤ò°·¤¦¥µ¡¼¥Ó¥¹¤ò¹½ÃÛ¤¹¤ë¾å¤ÇAzure Maps¤ÎƳÆþ¤â¸¡Æ¤¤·¤Æ¤ß¤Æ¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«¡£
WINGS¥×¥í¥¸¥§¥¯¥È ½©ÍÕζ°ìÃø/»³Åľʹ²´Æ½¤¡ãWINGS¥×¥í¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¡ä¥Æ¥¯¥Ë¥«¥ë¼¹É®¥×¥í¥¸¥§¥¯¥È(Âåɽ»³Åľʹ²)¡£³¤³°µ»ö¤ÎËÝÌõ¤«¤é¡¢¼ç¤ËWeb³«È¯Ê¬Ìî¤Î½ñÀÒ¡¦»¨»ï/Webµ»ö¤Î¼¹É®¡¢¹Ö±éÅù¤òÉý¹¤¯¼ê¤¬¤±¤ë¡£°ì½ï¤Ë¼¹É®¤ò¤Ç¤¤ëͻ֤òÊ罸Ãæ
º£²ó¤ÏÁ°²ó¤Ë°ú¤Â³¤¡¢Azure Maps¤ò»È¤Ã¤¿ÃÏ¿Þɽ¼¨¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¤¤¤Þ¤¹¡£Á°²ó¼ÂÁõ¤·¤¿¸¡º÷µ¡Ç½¤ò¤è¤ê»È¤¤¤ä¤¹¤¯¤¹¤ë¤¿¤á¤Ë¡¢¥æ¡¼¥¶¡¼¤ÎÆþÎÏÆâÍƤˤè¤Ã¤ÆưŪ¤Ë¸¡º÷·ë²Ì¤òÃÏ¿Þ¾å¤ËÈ¿±Ç¤Ç¤¤ë¤è¤¦¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ø¤È½¤Àµ¤·¤Æ¤¤¤¤Þ¤¹¡£
ËܹƤǤÏÁ°²ó¤Î¼ÂÁõÆâÍƤò¤â¤È¤Ë¿·¤¿¤ËÄɲ乤ë²Õ½ê¤ä½¤Àµ¤¹¤ë²Õ½ê¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£´°Á´¤Ê¥µ¥ó¥×¥ë¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï¤³¤Á¤é¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£
¥æ¡¼¥¶¡¼¤¬ÆþÎϤ·¤¿¥¡¼¥ï¡¼¥É¤Ë¤è¤Ã¤Æ¸¡º÷¤ò¼Â¹Ô¤·¡¢¼èÆÀ¤·¤¿¸¡º÷·ë²Ì¤ò°ìÍ÷ɽ¼¨¤Ç¤¤ë¤è¤¦¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÊѹ¹¤·¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
¡û¸¡º÷¥Ü¥Ã¥¯¥¹¤ÎÄɲÃ
¤Þ¤º¤ÏHTMLÉôʬ¤ò½¤Àµ¤·¡¢²èÌ̾å¤Ë¸¡º÷¥¡¼¥ï¡¼¥É¤òÆþÎϤǤ¤ë¥Õ¥©¡¼¥à¤òÄɲä·¤Þ¤¹¡£
¥¡¼¥ï¡¼¥É¸¡º÷Îΰè¤ÎÄɲáÊindex.html¡Ë
HTMLÉôʬ¤Ë¤Ï¡¢¡Ösearch¡×¤È¤¤¤¦ID¤ò»ý¤ÄÍ×ÁǤòÄɲ䷤Ƥ¤¤Þ¤¹¡£¤³¤ÎÍ×ÁǤˤϸ¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÍÑ¥Õ¥©¡¼¥à¡Ê¡¡Ë¤È¸¡º÷·ë²Ì¤È¤·¤Æ¼èÆÀ¤µ¤ì¤¿°ÌÃÖ¾ðÊó¤ò¥ê¥¹¥È¤Çɽ¼¨¤¹¤ë¤¿¤á¤ÎÎΰè¡Ê¢¡Ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿º£²óÄɲä·¤¿HTML¤ËÂбþ¤¹¤ëCSS¤â¼ÂÁõ¤·¤Þ¤¹¤¬¡¢¤³¤Á¤é¤ÎÀâÌÀ¤Ï³ä°¦¤¹¤ë¤¿¤áźÉդδ°À®ÈǤÎHTML¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£
HTML¤ª¤è¤ÓCSS¤ò¼ÂÁõ¤¹¤ë¤È¡¢¿Þ¤Î¤è¤¦¤ÊÆþÎÏ¥Õ¥©¡¼¥à¤¬²èÌ̺¸¾å¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
¤³¤ì°Ê¹ß¤Ç¤Ï¡¢¤³¤ÎHTML¤ËÂФ·¤Æ¸¡º÷½èÍý¤ª¤è¤Ó¸¡º÷·ë²Ì¤Îɽ¼¨¤¬¤Ç¤¤ë¤è¤¦¤ËJavaScript¤ò¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡ûÃÏ¿Þɽ¼¨¤Î½é´ü²½½èÍý¤Î½¤Àµ
³¤¤¤ÆÃÏ¿Þɽ¼¨¤Î½é´ü²½½èÍý¤ª¤è¤Ó¥¡¼¥ï¡¼¥É¸¡º÷¤Î¼Â¹Ô¤ä¸¡º÷·ë²Ì¤Îɽ¼¨½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤¿¡ÖinitMap¡×¥á¥½¥Ã¥É¤ò½¤Àµ¤·¡¢¸¡º÷½èÍý¤È¸¡º÷·ë²Ì¤Îɽ¼¨½èÍý¤òʬΥ¤·¤Æ¤¤¤¤Þ¤¹¡£
½é´ü²½½èÍý¤Î½¤Àµ¡Êindex.html¡Ë
// ÊÑ¿ô¤Î½é´ü²½¡¦¡¦¡¦¡
// ÃÏ¿Þ¥¤¥ó¥¹¥¿¥ó¥¹
let map;
// ¥Ç¡¼¥¿¥½¡¼¥¹¥¤¥ó¥¹¥¿¥ó¥¹
let datasource;
// ¥Ý¥Ã¥×¥¢¥Ã¥×ÍѤΥ¤¥ó¥¹¥¿¥ó¥¹
let popup;
// ¸¡º÷¥¡¼¥ï¡¼¥É¤òÆþÎϤ¹¤ëÍ×ÁǤÎDOM
let searchInput;
// ¸¡º÷·ë²Ì¤òɽ¼¨¤¹¤ëÍ×ÁǤÎDOM
let resultsPanel;
function initMap() {
// Azure Maps Web SDK¤Î½é´ü²½
map = new atlas.Map('myMap', { // let¤òºï½ü
// ½é´üɽ¼¨¤ÎºÂɸ¡¦¥º¡¼¥àΨ¤ò»ØÄê ¡¦¡¦¡¦¢
center: [-122.33, 47.6],
zoom: 14,
view: 'Auto',
¡¦¡¦¡¦Ãæά
});
// ¸¡º÷¥¡¼¥ï¡¼¥ÉÆþÎÏÎΰè¤ÎDOM¤ò¼èÆÀ¤¹¤ë ¡¦¡¦¡¦£
searchInput = document.getElementById("search-input");
// ¸¡º÷¥¡¼¥ï¡¼¥ÉÆþÎÏÎΰè¤Ø¤Îʸ»úÆþÎϤò´Æ»ë¤¹¤ë ¡¦¡¦¡¦¤
searchInput.addEventListener("input", updateSearchInputValue);
// ¸¡º÷·ë²Ì¤òɽ¼¨¤¹¤ëDOM¤ò¼èÆÀ¤¹¤ë ¡¦¡¦¡¦¥
resultsPanel = document.getElementById("results-panel");
// ¥Ý¥Ã¥×¥¢¥Ã¥×ÍѤΥ¤¥ó¥¹¥¿¥ó¥¹¤òºîÀ® ¡¦¡¦¡¦¦
popup = new atlas.Popup();
// ÃÏ¿Þ¥ì¥ó¥À¥ê¥ó¥°¤Î´°Î»¤òÂԤĥ¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¤ÎÄɲÃ
map.events.add('ready', function () {
¡¦¡¦¡¦Ãæά
});
});
initMap¥á¥½¥Ã¥É¤«¤é½èÍý¤òʬ³ä¤·¤ÆÊ£¿ô¤Î¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¤¿¤á¡¢¥á¥½¥Ã¥É´Ö¤Ç¶¦Ä̤·¤Æ»ÈÍѤ¹¤ëÊÑ¿ô¤ò¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡Ê¡¡Ë¡£Á°²ó¤Î¼ÂÁõ¤Þ¤Ç¤ËÅо줷¤¿ÃϿޤΥ¤¥ó¥¹¥¿¥ó¥¹¡Êmap¡Ë¡¢¥Ç¡¼¥¿¥½¡¼¥¹¥¤¥ó¥¹¥¿¥ó¥¹¡Êdatasource¡Ë¡¢¸¡º÷·ë²Ì¤Î¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨ÍѤΥ¤¥ó¥¹¥¿¥ó¥¹¡Êpopup¡Ë¤ò¤³¤³¤ÇÀë¸À¤¹¤ë¤è¤¦¤Ë°ÜÆ°¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢º£²óÄɲ乤븡º÷µ¡Ç½¤Ç»ÈÍѤ¹¤ëÊÑ¿ô¤ÎÀë¸À¤âÄɲä·¤Þ¤¹¡£¸¡º÷ÍѤΥ¡¼¥ï¡¼¥É¤òÆþÎϤ¹¤ëHTMLÍ×ÁǤÎDOM¤ò³ÊǼ¤¹¤ëÊÑ¿ô¡ÊsearchInput¡Ë¡¢¸¡º÷·ë²Ì¤òɽ¼¨¤¹¤ëHTMLÍ×ÁǤÎDOM¤ò³ÊǼ¤¹¤ëÊÑ¿ô¡ÊresultsPanel¡Ë¤Î£²¤Ä¤òÀë¸À¤·¤Æ¤¤¤Þ¤¹¡£
¼¡¤ËinitMap¥á¥½¥Ã¥É¤ÎÃæ¤òÊѹ¹¤·¤Æ¤¤¤¤Þ¤¹¡£Azure Maps Web SDK¤Î½é´ü²½½èÍý¤ÎÃæ¤ÇºÇ½é¤Ëɽ¼¨¤·¤¿¤¤¾ì½ê¤ÎºÂɸ¤ª¤è¤Ó¥º¡¼¥àΨ¤ò»ØÄꤹ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡Ê¢¡Ë¡£Á°²ó¤Î¥µ¥ó¥×¥ë¤Ç¤Ï¸¡º÷¼Â¹Ô»þ¤ËºÂɸ¤ò»ØÄꤷ¤Æ¤¤¤Þ¤·¤¿¤¬º£²ó¤ÏǤ°Õ¤Î¥¿¥¤¥ß¥ó¥°¤Ç¤Î¸¡º÷¤È¤Ê¤ë¤Î¤Ç¡¢½é´üɽ¼¨Ãʳ¬¤ÇºÂɸ¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
SDK¤Î½é´ü²½½èÍý¤Î¸å¤Ç¡¢³ÆÊÑ¿ô¤Ø¤ÎÃͤÎÂåÆþ¤ò¹Ô¤¤¤Þ¤¹¡£¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÍѤÎDOM¤È¸¡º÷·ë²Ìɽ¼¨ÍѤÎDOM¤ò¤½¤ì¤¾¤ìHTML¤«¤é¼èÆÀ¤·¤ÆÊÑ¿ô¤ØÂåÆþ¤·¤Þ¤¹¡Ê£¡¢¥¡Ë¡£¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÍѤÎDOM¤ÎÊý¤Ë¤Ï¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òÄɲä·¤Þ¤¹¡Ê¤¡Ë¡£¤³¤³¤Ç¤ÏÆþÎÏÆâÍƤÎÊѹ¹¤ò¸¡ÃΤ¹¤ë¡Öinput¡×¥¤¥Ù¥ó¥È¤ò´Æ»ë¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤³¤Î¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿»þ¤Ë¼Â¹Ô¤¹¤ë¥á¥½¥Ã¥É¤È¤·¤Æ¡ÖupdateSearchInputValue¡×¤òÅÐÏ¿¤·¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Î¼ÂÁõ¤Ë¤Ä¤¤¤Æ¤Ï¸å¤Û¤ÉÀâÌÀ¤·¤Þ¤¹¡£
¡û¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨½èÍý¤Îʬ³ä
initMap¥á¥½¥Ã¥É¤Ë´Þ¤Þ¤ì¤Æ¤¤¤¿¸¡º÷½èÍý¤È¸¡º÷·ë²Ì¤Î¥Ô¥ó¤«¤é¥Ý¥Ã¥×¥¢¥Ã¥×¤ò½Ð¸½¤µ¤»¤ë½èÍý¤ò¤½¤ì¤¾¤ìÊ̥᥽¥Ã¥É¤ËÀÚ¤ê½Ð¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¤Ï¥Ô¥ó¤«¤é¥Ý¥Ã¥×¥¢¥Ã¥×¤ò½Ð¸½¤µ¤»¤ë½èÍý¤ò¡ÖshowPopup¡×¥á¥½¥Ã¥É¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡£
¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨Íѥ᥽¥Ã¥É¡Êindex.html¡Ë
function showPopup(shape) {
// ¥Ç¡¼¥¿¥½¡¼¥¹¤«¤é¥Ô¥ó¤Î¾ÜºÙ¾ðÊó¤ò¼èÆÀ¤¹¤ë ¡¦¡¦¡¦¡
let prop = shape.getProperties();
let position = shape.getCoordinates();
// ¥Ý¥Ã¥×¥¢¥Ã¥×ÍѤÎHTML¤ò¹½ÃÛ
let html = `
${prop.poi.name}
${prop.address.freeformAddress}
${position[1]}, ${position[0]}
`;
// ¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥»¥Ã¥È¥¢¥Ã¥×
popup.setPopupOptions({
content: html,
position: position
});
// ¥Ý¥Ã¥×¥¢¥Ã¥×¤ò²èÌ̤Ëɽ¼¨¤¹¤ë
popup.open(map);
}
showPopup¥á¥½¥Ã¥É¤Ï°ú¿ô¤È¤·¤Æ¡Öshape¡×¤È¤¤¤¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¼õ¤±¼è¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤·¤¿¤¤ÃÏÅÀ¤Ë¸ºß¤¹¤ë¥Ô¥ó¤òɽ¤¹¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢ÃÏÅÀ¤Î¾ÜºÙ¾ðÊó¤äºÂɸ¾ðÊó¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡Ê¡¡Ë¡£shape¤«¤é¼èÆÀ¤·¤¿¾ÜºÙ¾ðÊó¤ò»È¤¤¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨½èÍý¤ò¥á¥½¥Ã¥ÉÆâ¤Ç¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£½èÍýÆâÍƤˤĤ¤¤Æ¤ÏÁ°²ó¤ÈƱÍͤμÂÁõ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¼¡¤Ë¤³¤ÎshowPopup¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¥³¡¼¥É¤ò¼ÂÁõ¤·¤Þ¤¹¡£
showPopup¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¡Êindex.html¡Ë
// ÃÏ¿Þ¥ì¥ó¥À¥ê¥ó¥°¤Î´°Î»¤òÂԤĥ¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¤ÎÄɲà ¡¦¡¦¡¦¡
map.events.add('ready', function () {
¡¦¡¦¡¦Ãæά
// ¥Þ¥¦¥¹¥«¡¼¥½¥ë¤¬¥Ô¥ó¾å¤Ë½Å¤Ê¤Ã¤¿»þ¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤¹¤ë ¡¦¡¦¡¦¢
map.events.add('mouseover', searchLayer, function (e) {
if (e.shapes && e.shapes.length > 0) {
showPopup(e.shapes[0]); // ¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤· ¡¦¡¦¡¦£
}
});
});
¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤Ï²èÌ̾å¤ËÃÏ¿Þ¤¬É½¼¨¤µ¤ì¤Æ¤ª¤ê¡¢¤«¤Ä¸¡º÷½èÍý¤Î¼Â¹Ô¤Ë¤è¤Ã¤Æɽ¼¨¤µ¤ì¤¿¥Ô¥ó¾å¤Ë¥Þ¥¦¥¹¤¬¾è¤Ã¤¿¥¿¥¤¥ß¥ó¥°¤Çɽ¼¨¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤¿¤áinitMap¥á¥½¥Ã¥ÉÆâ¤Ë¤¢¤ëÃÏ¿Þ¤Îɽ¼¨¤ò¸¡ÃΤ¹¤ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¡Ê¡¡Ë¤ÎÃæ¤Ë¤¢¤ë¡¢¥Þ¥¦¥¹¥«¡¼¥½¥ë¤¬¥Ô¥ó¾å¤Ë½Å¤Ê¤Ã¤¿¤³¤È¤ò¸¡ÃΤ¹¤ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¡Ê¢¡Ë¤ÎÃæ¤ÇshowPopup¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ê£¡Ë¡£
¡û¸¡º÷½èÍý¤Îʬ³ä
¼¡¤Ë¸¡º÷½èÍý¤òʬ³ä¤·¤Æ¤¤¤¤Þ¤¹¡£¸¡º÷½èÍý¤Ï¸¡º÷¥¡¼¥ï¡¼¥É¤Î¼èÆÀ¡¢¸¡º÷½èÍý¤Î¼Â¹Ô¡¢¸¡º÷·ë²Ì¤Îɽ¼¨¤Î£³¥Ñ¡¼¥È¤Ëʬ¤±¤Æ¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¤Þ¤º¤Ï¸¡º÷¥¡¼¥ï¡¼¥É¤Î¼èÆÀ¤ò¹Ô¤¦¡ÖupdateSearchInputValue¡×¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¸¡º÷¥¡¼¥ï¡¼¥É¤Î¼èÆÀ¡Êindex.html¡Ë
function updateSearchInputValue(e) { // input¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ç¼õ¤±¼è¤ë ¡¦¡¦¡¦¡
// ÆþÎÏ»þÅÀ¤ÎÃͤòÊÝ»ý¤¹¤ë ¡¦¡¦¡¦¢
let inputValue = e.target.value;
// ÆþÎÏÆâÍƤ¬£³Ê¸»ú°Ê¾å¤Î¾ì¹ç¤Ë¸¡º÷½èÍý¤ò¼Â¹Ô¤¹¤ë ¡¦¡¦¡¦£
if (inputValue.length >= 3) {
// ¸¡º÷½èÍý¤Î¼Â¹Ô ¡¦¡¦¡¦¤
setTimeout(async function () {
// ÆþÎÏ»þ¤ÎÃͤȸ½ºß¤ÎÃÍ(setTimeout¤ÇÂÔµ¡¤·¤¿¸å¤ÎÃÍ)¤¬°ìÃפ·¤¿¤é¸¡º÷¤¹¤ë ¡¦¡¦¡¦¥
if (inputValue === e.target.value) {
await search();
}
}, 500); // 500¥ß¥êÉÃ(0.5ÉÃ)ÂÔµ¡¤¹¤ë
} else {
resultsPanel.innerHTML = '';
}
}
updateSearchInputValue¥á¥½¥Ã¥É¤Ï¡¢Á°½Ò¤ÎinitMap¥á¥½¥Ã¥ÉÆâ¤Ë¼ÂÁõ¤·¤¿¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÆþÎÏÆâÍƤò´Æ»ë¤¹¤ë¥¤¥Ù¥ó¥È¥Ï¥ó¥É¥é¡¼¤¬¸Æ¤Ó½Ð¤¹¥á¥½¥Ã¥É¤Ç¤¹¡£¤½¤Î¤¿¤á¡¢¥á¥½¥Ã¥É¤Î°ú¿ô¤ÇÆþÎÏÆâÍƤ˴ؤ¹¤ë¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤ò¼õ¤±¼è¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡Ê¡¡Ë¡£¥¤¥Ù¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¤Ï¥æ¡¼¥¶¡¼¤¬ÆþÎϤ·¤¿¥¡¼¥ï¡¼¥É¤¬¼èÆÀ¤Ç¤¤Þ¤¹¡£¸å¤Î½èÍý¤Ç¤ÎÈæ³ÓÍѤˡ¢¥¡¼¥ï¡¼¥É¤Ï°ìÅÙÊÑ¿ô¤ØÂåÆþ¤·¤Æ¤ª¤¤Þ¤¹¡Ê¢¡Ë¡£¤Þ¤¿¥¡¼¥ï¡¼¥É¤Îʸ»ú¿ô¤Ë¤è¤Ã¤Æ¸¡º÷½èÍý¤Î¼Â¹Ô²ÄÈݤòȽÄꤹ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡Ê£¡Ë¡£¥¡¼¥ï¡¼¥É¤Îʸ»ú¿ô¤¬¾¯¤Ê¤¤¾ì¹ç¤Ï¸¡º÷¤ò¹Ô¤ï¤º¡¢ÌµÂ̤ʸ¡º÷½èÍý¤Î¸Æ¤Ó½Ð¤·¤òºï¸º¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£¥¡¼¥ï¡¼¥É¤Îʸ»ú¿ô¤¬¾ò·ï¤òËþ¤¿¤¹¾ì¹ç¤Ï¸¡º÷½èÍýÍѤΥ᥽¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ê¤¡Ë¡£¤³¤Î»þsetTimeout¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¸¡º÷½èÍý¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤ò¾¯¤·Ãٱ䤵¤»¤Æ¤¤¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ë¤è¤Ã¤Æ¥¡¼¥ï¡¼¥É¤¬ÄɲäÇÆþÎϤµ¤ì¤Æ¤¤¤ë¾ì¹ç¤ò¹Íθ¤·¡¢¥æ¡¼¥¶¡¼¤Ë¤è¤ëÆþÎϤ¬°ìÄê»þ´ÖÄä»ß¤·¤Æ¤«¤é¸¡º÷¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£¥æ¡¼¥¶¡¼¤¬ÆþÎÏÃ椫¤É¤¦¤«¤òȽÄꤹ¤ë¤¿¤á¤Ë¡¢¢¤ÇÊÑ¿ô¤ËÂåÆþ¤·¤¿¥¡¼¥ï¡¼¥É¤ÎÃͤȸ½»þÅÀ¤ÎÃͤòÈæ³Ó¤·¤Æ¤¤¤Þ¤¹¡Ê¥¡Ë¡£ÆþÎÏÃæ¤Î¾ì¹ç¤ÏÃͤ¬°ìÃפ·¤Ê¤¤¤¿¤á¡¢¸¡º÷½èÍý¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
¼¡¤Ë¸¡º÷½èÍý¤Î¼Â¹ÔÍѥ᥽¥Ã¥É¡Ösearch¡×¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¸¡º÷½èÍý¤Î¼Â¹Ô¡Êindex.html¡Ë
async function search() {
// ɽ¼¨Ãæ¤Î¸¡º÷·ë²Ì¤ò¥¯¥ê¥¢¤¹¤ë ¡¦¡¦¡¦¡
datasource.clear();
popup.close();
resultsPanel.innerHTML = '';
// ǧ¾Ú¾ðÊó¤òÆâÊñ¤·¤¿¥Ñ¥¤¥×¥é¥¤¥ó¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®
let pipeline = atlas.service.MapsURL.newPipeline(new atlas.service.MapControlCredential(map));
// Azure Maps¤ÎSearch Service¤òÁàºî¤¹¤ë¤¿¤á¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®
let searchURL = new atlas.service.SearchURL(pipeline);
// ¸¡º÷¥¡¼¥ï¡¼¥É¤ÎÀßÄê ¡¦¡¦¡¦¢
let query = searchInput.value;
// ¸¡º÷¤Î¼Â¹Ô¡Ê¤¢¤¤¤Þ¤¤¸¡º÷¡Ë
let results = await searchURL.searchPOI(atlas.service.Aborter.timeout(10000), query, {
// ¸½ºßɽ¼¨¤·¤Æ¤¤¤ëÃϿޤκÂɸ¤ò¤â¤È¤Ë¸¡º÷¤¹¤ë¡¦¡¦¡¦£
lon: map.getCamera().center[0],
lat: map.getCamera().center[1],
radius: 9000
});
// ¸¡º÷·ë²Ì¤ò¥Ç¡¼¥¿¥½¡¼¥¹¤ØÄɲÃ
let data = results.geojson.getFeatures();
datasource.add(data);
// ¸¡º÷·ë²Ì¤Ë±þ¤¸¤ÆÃÏ¿Þ¤Îɽ¼¨°ÌÃÖ¤òÄ´À°
map.setCamera({
bounds: data.bbox
});
// ¸¡º÷·ë²Ì¤Îɽ¼¨ ¡¦¡¦¡¦¤
createResultsPanel(data);
}
initMap¥á¥½¥Ã¥É¤«¤é¸¡º÷½èÍý¤Ë´Ø¤¹¤ëÉôʬ¤òsearch¥á¥½¥Ã¥É¤Ë°ÜÆ°¤·¡¢½èÍý¤ÎÄɲ䪤è¤Ó½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£
¤Þ¤º¤ÏÊ£¿ô²ó¸¡º÷¤µ¤ì¤ë¤³¤È¤òÁÛÄꤷ¤Æ¡¢¥á¥½¥Ã¥É¤ÎËÁƬ¤ÇÁ°²ó¤Î¸¡º÷·ë²Ì¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡Ê¡¡Ë¡£¥Ç¡¼¥¿¥½¡¼¥¹¤ÏÆâÍƤΥ¯¥ê¥¢¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Ïɽ¼¨¤µ¤ì¤Æ¤¤¤ì¤ÐÊĤ¸¤ë¡¢¸¡º÷·ë²Ì¤ÎDOM¤Ï¶õʸ»ú¤Ç¾å½ñ¤¯¤³¤È¤Ç¤½¤ì¤¾¤ì¥¯¥ê¡¼¥ó¥¢¥Ã¥×¤·¤Æ¤¤¤Þ¤¹¡£
¼¡¤Ë¸¡º÷¥¡¼¥ï¡¼¥É¤òÆþÎÏÎΰ褫¤é¼èÆÀ¤·¤Þ¤¹¡Ê¢¡Ë¡£Á°²ó¤ÎÎã¤Ç¤Ï¤³¤³¤¬¸ÇÄê¤ÎÃͤǤ·¤¿¤¬¡¢º£²ó¤Ï²èÌ̾夫¤é¼«Í³¤Ë¥¡¼¥ï¡¼¥É¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¼¡¤Ë¢¤Ç¼èÆÀ¤·¤¿¥¡¼¥ï¡¼¥É¤ò»È¤Ã¤Æ¸¡º÷¤ò¼Â¹Ô¤·¤Þ¤¹¡£¸¡º÷ÂоݤȤʤëºÂɸ¤Î»ØÄê¤Ë¤Ï¡¢¸½ºßɽ¼¨¤·¤Æ¤¤¤ëÃÏ¿Þ¤ÎÃæ¿´¤Ë¤¢¤¿¤ë²Õ½ê¤ÎºÂɸ¤ò»ÈÍѤ·¤Þ¤¹¡Ê£¡Ë¡£¤³¤ÎºÂɸ¤âÁ°²ó¤Ï¸ÇÄêÃͤȤʤäƤ¤¤Þ¤·¤¿¤¬¡¢Ç¤°Õ¤ÎÃÏÅÀ¤Ç¸¡º÷¤Ç¤¤ë¤è¤¦¤ËÊѹ¹¤·¤Æ¤¤¤Þ¤¹¡£
¥á¥½¥Ã¥É¤ÎºÇ¸å¤Ç¡¢¸å½Ò¤¹¤ë¸¡º÷·ë²Ìɽ¼¨ÍѤΥ᥽¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡Ê¤¡Ë¡£°ú¿ô¤Ë¤Ï¸¡º÷·ë²Ì¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ·¤Þ¤¹¡£
¸¡º÷·ë²Ì¤Îɽ¼¨¤Ï¡ÖcreateResultsPanel¡×¥á¥½¥Ã¥É¤Ë¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¸¡º÷·ë²Ì¤Îɽ¼¨¡Êindex.html¡Ë
function createResultsPanel(data) {
let html = [];
// HTML¤Î¹½ÃÛ ¡¦¡¦¡¦¡
for (let i = 0; i < data.features.length; i++) {
let r = data.features[i];
// ¥Ç¡¼¥¿¹Ô¤ËÂФ¹¤ë¥Þ¥¦¥¹Áàºî¤Î¥Ï¥ó¥É¥é¡¼¤òÄɲà ¡¦¡¦¡¦¢
html.push(``);
// ÃÏÅÀ¤Î̾¾Î¡Ê¤Þ¤¿¤Ï½»½ê¡Ë
html.push(``);
if (r.properties.poi && r.properties.poi.name) {
html.push(r.properties.poi.name);
} else {
html.push(r.properties.address.freeformAddress);
}
html.push(``);
// ½»½ê
html.push(`${r.properties.type}: ${r.properties.address.freeformAddress}`);
// ÅÅÏÃÈֹ桦¥Û¡¼¥à¥Ú¡¼¥¸
if (r.properties.poi) {
if (r.properties.phone) {
html.push(`phone: ${r.properties.poi.phone}`);
}
if (r.properties.poi.url) {
html.push(`http://${r.properties.poi.url}`);
}
}
html.push(``);
// ¸¡º÷·ë²ÌÍѤÎDOM¤Ë¹½ÃÛ¤·¤¿HTML¤òÂåÆþ ¡¦¡¦¡¦£
resultsPanel.innerHTML = html.join('');
}
}
createResultsPanel¥á¥½¥Ã¥É¤Ç¤Ïsearch¥á¥½¥Ã¥É¤Ç¼èÆÀ¤·¤¿¸¡º÷·ë²Ì¥ª¥Ö¥¸¥§¥¯¥È¤ò¤â¤È¤Ë¸¡º÷·ë²Ì¤Î°ìÍ÷¤òHTML¤ËÉÁ²è¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡Ê¡¡Ë¡£¸¡º÷·ë²Ì¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï¡¢¸¡º÷¥¡¼¥ï¡¼¥É¤Ë¥Ò¥Ã¥È¤·¤¿³ÆÃÏÅÀ¤Î̾¾Î¡¦½»½ê¡¦ÅÅÏÃÈֹ桦¥Û¡¼¥à¥Ú¡¼¥¸¤ÎURL¤Ê¤É¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤Ç¤³¤ì¤é¤òɽ¼¨¤Ç¤¤ë¤è¤¦¤ËHTML¤òÁȤßΩ¤Æ¤Æ¤¤¤¡¢1·ï¤º¤Ä·ë²Ìɽ¼¨ÍѤÎDOM¤ËÄɲ䷤Ƥ¤¤¤Þ¤¹¡Ê£¡Ë¡£¤Þ¤¿¸¡º÷·ë²Ì°ìÍ÷¾å¤ÇǤ°Õ¤Î¸¡º÷·ë²Ì¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò¾è¤»¤¿¾ì¹ç¤ä¥¯¥ê¥Ã¥¯¤·¤¿»þ¤Î½èÍý¤â¼ÂÁõ¤·¤Þ¤¹¡Ê¢¡Ë¡£
¸¡º÷·ë²Ì¤Îɽ¼¨¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò¾è¤»¤¿¾ì¹ç¤Î½èÍý¤ò¡ÖitemHovered¡×¥á¥½¥Ã¥É¡¢¥¯¥ê¥Ã¥¯¤·¤¿¾ì¹ç¤Î½èÍý¤ò¡ÖitemClicked¡×¥á¥½¥Ã¥É¤È¤·¤Æ¼ÂÁõ¤·¤Þ¤¹¡£
¸¡º÷·ë²Ì¤ËÂФ¹¤ë¥Þ¥¦¥¹Áàºî¤Î½èÍý¡Êindex.html¡Ë
// ¸¡º÷·ë²Ì¤Îɽ¼¨¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò¾è¤»¤¿¾ì¹ç¤Î½èÍý ¡¦¡¦¡¦¡
function itemHovered(id) {
var shape = datasource.getShapeById(id);
// ¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤¹¤ë
showPopup(shape);
}
// ¸¡º÷·ë²Ì¤Îɽ¼¨¤ò¥¯¥ê¥Ã¥¯¤·¤¿¾ì¹ç¤Î½èÍý ¡¦¡¦¡¦¢
function itemClicked(id) {
var shape = datasource.getShapeById(id);
// ¥¯¥ê¥Ã¥¯¤·¤¿ÃÏÅÀ¤¬Ãæ±û¤È¤Ê¤ë¤è¤¦¤Ë¥«¥á¥é¤ò°ÜÆ°¤¹¤ë
map.setCamera({
center: shape.getCoordinates(),
zoom: 17
});
}
itemHovered¥á¥½¥Ã¥É¤Ç¤Ï¡¢¼õ¤±¼è¤Ã¤¿ID¤ò¤â¤È¤ËÃÏÅÀ¤Î¥Ô¥ó¾ðÊó¤ò¼èÆÀ¤·¤Æ¥Ô¥ó¾å¤Ë¥Ý¥Ã¥×¥¢¥Ã¥×¤òɽ¼¨¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤Ë¤ÏÁ°½Ò¤·¤¿showPopup¥á¥½¥Ã¥É¤òºÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡Ê¡¡Ë¡£
itemClicked¥á¥½¥Ã¥É¤âƱÍͤ˼õ¤±¼è¤Ã¤¿ID¤«¤é¥Ô¥ó¾ðÊó¤ò¼èÆÀ¤·¡¢¥Ô¥ó¤ÎºÂɸ¤¬Ãæ¿´¤È¤Ê¤ë¤è¤¦¤Ë¥«¥á¥é¤ò°ÜÆ°¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡Ê¢¡Ë¡£
¤³¤³¤Þ¤Ç¼ÂÁõ¤¬´°Î»¤·¤¿¤é¥Õ¥¡¥¤¥ë¤òÊݸ¤·¡¢¥Ö¥é¥¦¥¶¤ÇÆ°ºî³Îǧ¤ò¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¸¡º÷¤Î¼Â¹Ô¤ª¤è¤Ó¸¡º÷·ë²Ì¤Îɽ¼¨¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Îɽ¼¨¤ä¥«¥á¥é¤Î°ÜÆ°¤Ê¤É¤¬Æ°ºî¤·¤Æ¤¤¤ë¤³¤È¤¬³Îǧ¤Ç¤¤ì¤Ð´°À®¤Ç¤¹¡£
¡û¤Þ¤È¤á
Á´£³²ó¤Ë¤ï¤¿¤Ã¤ÆAzure Maps¤Ë¤Ä¤¤¤Æ¾Ò²ð¤·¡¢Azure Maps¤Î¥µ¡¼¥Ó¥¹·²¤Î¤Ò¤È¤Ä¤Ç¤¢¤ëSearch Service¤ò»È¤Ã¤¿¥¡¼¥ï¡¼¥É¸¡º÷¤Î¼ÂÁõÊýË¡¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯ÀâÌÀ¤ò¤·¤Þ¤·¤¿¡£Azure Maps¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÁȤ߹þ¤à¤³¤È¤Ç¡¢Ê£»¨¤«¤Ä¹ÈϤÊÃÏÍý¾ðÊó´ØÏ¢¤Îµ¡Ç½¤òÈæ³ÓŪÍưפ˰·¤¨¤ë¤³¤È¤¬Ê¬¤«¤Ã¤¿¤«¤È»×¤¤¤Þ¤¹¡£¼¹É®»þÅÀ¤Ç¤ÏÆüËܸ줪¤è¤ÓÆüËÜÃÏ°è¤Ë¤ª¤±¤ë¥µ¥Ý¡¼¥È¤¬Ì¤Âбþ¤Ç¤¢¤ë¥µ¡¼¥Ó¥¹·²¤¬Â¿¤¤¾õ¶·¤Ç¤¹¤¬¡¢ÃÏÍý¾ðÊó¤ò°·¤¦¥µ¡¼¥Ó¥¹¤ò¹½ÃÛ¤¹¤ë¾å¤ÇAzure Maps¤ÎƳÆþ¤â¸¡Æ¤¤·¤Æ¤ß¤Æ¤Ï¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«¡£
WINGS¥×¥í¥¸¥§¥¯¥È ½©ÍÕζ°ìÃø/»³Åľʹ²´Æ½¤¡ãWINGS¥×¥í¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¡ä¥Æ¥¯¥Ë¥«¥ë¼¹É®¥×¥í¥¸¥§¥¯¥È(Âåɽ»³Åľʹ²)¡£³¤³°µ»ö¤ÎËÝÌõ¤«¤é¡¢¼ç¤ËWeb³«È¯Ê¬Ìî¤Î½ñÀÒ¡¦»¨»ï/Webµ»ö¤Î¼¹É®¡¢¹Ö±éÅù¤òÉý¹¤¯¼ê¤¬¤±¤ë¡£°ì½ï¤Ë¼¹É®¤ò¤Ç¤¤ëͻ֤òÊ罸Ãæ