¡û¤Ï¤¸¤á¤Ë

º£²ó¤ÏÁ°²ó¤Ë°ú¤­Â³¤­¡¢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µ­»ö¤Î¼¹É®¡¢¹Ö±éÅù¤òÉý¹­¤¯¼ê¤¬¤±¤ë¡£°ì½ï¤Ë¼¹É®¤ò¤Ç¤­¤ëÍ­»Ö¤òÊ罸Ãæ