次の例では、選択した住所リストの場所へ移動します。選択後は住所リストの下の階層の住所を選択することができ、その場所へ移動できます。
サンプルでは住所リスト取得件数の上限をデフォルトの100件としています。全ての住所が表示されない場合があります。
住所コードで住所リスト検索するには、ZDC.Search.getByZmaps()のaddress/listを利用します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="//test.api.its-mo.com/v3/loader?key=JSZddc5111626c8|Zo4wz&api=zdcmap.js,control.js,search.js&enc=UTF8" type="text/javascript"></script> <script type="text/javascript"> var map, mrk; function loadMap() { map = new ZDC.Map( document.getElementById("ZMap"), { zoom: 9, mapType:ZDC.MAPTYPE_HIGHRES_LV18 } ); /* スケールバーを作成 */ map.addWidget(new ZDC.ScaleBar()); /* 通常のコントロールを表示 */ map.addWidget(new ZDC.Control()); /* マーカを作成 */ mrk = new ZDC.Marker(new ZDC.LatLon(35.6778614, 139.7703167)); /* 位置取得 */ setAddr("", ""); /* マーカを追加 */ mrk.hidden(); //初期表示しない map.addWidget(mrk); }; /* セレクトボックスに選択した場所の住所リストを格納 */ function setAddr(addrCode, addrText) { ZDC.Search.getByZmaps('address/list', { addrcode: addrCode }, function(status, res) { if (status.code === 200) { /* 取得成功 */ getAddr(status, res, addrCode, addrText); } else { /* 取得失敗 */ alert(status.text); } }); }; /* 選択した場所の下位の住所リストを取得 */ function getAddr(status, res, addrCode, addrText) { var item = res.item; var obj = document.getElementById("area"); obj.length = 1; if (addrText == "") { /* 初期表示 */ obj.options[0].text = "--"; } else { obj.options[0].text = addrText; showLatlon(addrCode); } /* 選択されている場所の配下のエリアをセレクトボックスに表示 */ for (var i = 0, j = item.length; i<j; i++) { obj.length++; obj.options[(i+1)].value = item[i].code; obj.options[(i+1)].text = item[i].text; } }; function addrSelect() { var options = document.getElementById("area").options; mrk.visible(); /* セレクトボックスへ値格納 */ setAddr(options.item(area.selectedIndex).value, options.item(area.selectedIndex).text); }; /* 選択した場所を表示 */ function showLatlon(addrCode) { var code, item, addrLatLon; /* 住所コードが「地番」の場合、「街区」の緯度経度を取得する */ if (addrCode.length > 20) { code = addrCode.substr(0, 16); } else { code = addrCode; } ZDC.Search.getByZmaps('address/list', { addrcode: code }, function(status, res) { if (status.code === 200) { /* 取得成功 */ item = res.item; /* 住所コードの分類が「地番」以外の場合はデータの先頭の場所を表示する */ addrLatLon = item[0].point; for (var i = 0, k = item.length; i < k; i++){ /* 住所コードの分類が「地番」の場合 */ if (item[i].code == addrCode) { addrLatLon = item[i].point; } } map.moveLatLon(addrLatLon); /* マーカを表示 */ mrk.moveLatLon(addrLatLon); map.addWidget(mrk); } else { /* 取得失敗 */ alert(status.text); } }); }; </script> </head> <body onload="loadMap();"> <div id="SArea" style="top:510px; left:20px; position:absolute;">場所:<select id="area" name="area" onChange="addrSelect();"></select></div></br> <div id="ZMap" style="border:1px solid #777777; width:750px; height:500px; top:0px; left:20px; position:absolute;"></div> <div id="IBox" style="top:525px; left:540px; position:absolute;"> </div> </body> </html>