入力された施設名や住所から経度緯度を取得し、グーグルマップにマーカーを立てる
- カテゴリー:
- javascript
先日、電車の座席に座っていた時、乗ってきたおばあさんに席を譲ろうとしたところ、かたくなに拒否され恥をかいたという話はどうでもいいんですが、久々の更新になります。
今回は、グーグルマップのAPIを使い施設名や住所から経度緯度を取得し、グーグルマップにマーカーを立てる手法をご紹介いたします。
1 |
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> |
まず、グーグルマップのAPIを読み込みます。
本来はAPIキーを指定しないといけないんですが、指定しなくても一応は動きます。
次にHTMLの記述です。
1 2 3 4 5 |
<div id="search_form"> <input id="geo_search_text" type="text" name="text" size="40" value="" /> <input onclick="geo_search_map();" type="button" name="button" value="検索" /> </div> <div id="map" style="width: 500px; height: 500px;"></div> |
ID:search_formで囲っているのが、施設名や住所を入力するためのテキストフィールドと検索をする際に押す検索ボタンです。
ID:mapはグーグルマップを表示するためのボックスです。
最後にjavascriptの記述です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<script type="text/javascript"> var map = false; var marker = false; var gc = new google.maps.Geocoder(); var address_str = "東京"; // 初期表示位置 window.onload = function() { map = new google.maps.Map( document.getElementById("map"),{ zoom : 15, center : new google.maps.LatLng(0,0), mapTypeId : google.maps.MapTypeId.ROADMAP } ); // ジオコーディング gc.geocode({ address : address_str }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var pos = map.getCenter(); var lat = pos.lat(); var lng = pos.lng(); // マーカーを立てる marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map }); } else { alert("情報の取得に失敗しました"); } }); } function geo_search_map() { address_str = document.getElementById("geo_search_text").value; gc.geocode({ address : address_str }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var pos = map.getCenter(); var lat = pos.lat(); var lng = pos.lng(); marker.setPosition(new google.maps.LatLng(lat, lng)); } else { alert("情報の取得に失敗しました"); } }); } </script> |
window.onloadでページのロードが完了した際に、地図の初期化を実行しています。
「map = new google.maps.Map~略~」でID:mapに地図を表示します。
「gc.geocode({ address : address_str }, function(results, status) {~略~」では、変数「address_str」に代入されている文字を元に経度緯度情報を取得しています。
「map.setCenter(results[0].geometry.location);」では、取得した経度緯度情報が地図の中心になるように移動させています。
「marker = new google.maps.Marker({~略~」で地図にマーカーをセットしています。マーカーの座標は、地図の中心座標(取得した経度緯度情報)です。
geo_search_map()は、検索ボタンが押された際に実行される関数ですが、処理の内容はテキストフィールドから文字を取得する以外は、上記で説明したものと同じ内容になっています。
サンプルはこちら