都道府県を選択してその県庁所在地の周辺地図を表示する
はじめに、Google Maps API を使って、東京都庁を中心とした地図を表示します。
続けて、Japan オブジェクトの arr プロパティを使って、都道府県の県庁所在地の緯度経度を取得し、その結果から日本地図にマーカーを追加します。そのマーカーをクリックすると吹き出しを表示し、その噴出しの中に、都道府県の名前、フリガナ、ローマ字、地方公共団体コード、緯度経度を表示します。
続けて、Japan オブジェクトの arr プロパティを使って、都道府県のドロップダウンリストを表示します。そのドロップダウンリストを選択すると、選択した都道府県の県庁所在地を中心とした地図を表示します。
<script type="text/javascript"> //<![CDATA[ // GMap2 var map; // window.onload window.onload = function() { map = new GMap2(document.getElementById('map')); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl()); map.setCenter(new GLatLng(Japan.Tokyo.y, Japan.Tokyo.x), 15); for (var i=0; i<Japan.arr.length; i++) map.addOverlay(createMarker(Japan.arr[i])); for (var i=0; i<Japan.arr.length; i++) { var pref = Japan.arr[i]; var option = document.createElement('option'); option.value = pref.g; if (pref == Japan.Tokyo) option.selected = true; option.appendChild(document.createTextNode(pref.a)); var select = document.f.g; select.appendChild(option); } change(select); } // change function change(select) { for (var i=0; i<Japan.arr.length; i++) { var pref = Japan.arr[i]; if (pref.g == select.value) { map.panTo(new GLatLng(pref.y, pref.x)); break; } } } // createMarker function createMarker(pref) { var marker = new GMarker(new GLatLng(pref.y, pref.x)); GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml('<h3>' + pref.a + '</h3>' + '<dl>' + '<dt>フリガナ</dt><dd>' + pref.k + '</dd>' + '<dt>ふりがな</dt><dd>' + pref.h + '</dd>' + '<dt>ローマ字</dt><dd>' + pref.r + '</dd>' + '<dt>地方公共団体コード</dt><dd>' + pref.g + '</dd>' + '<dt>経度</dt><dd>' + pref.x + '</dd>' + '<dt>緯度</dt><dd>' + pref.y + '</dd>' + '</dl>' ); }); return marker; } //]]> </script> <form name="f"> <select name="g" onchange="change(this);"></select> </form> <div id="map" style="width:480px; height:320px"></div>
関連情報
- ベーシック
- 送信フォーム
- with jQuery
- Google Maps API
- BLOGRANGER API