地図とか位置情報を扱うため、GoogleとYahooのそれっぽいAPIに触ってみました。
使い方、サンプルコードなどをメモ。
※2014.8.14に記載した内容です。APIの最新仕様をご確認ください。
Google Maps API(V3)で住所から緯度経度を取得
google.maps.Geocoderを使って取得できます。
公式なドキュメントはこちら。
https://developers.google.com/maps/documentation/javascript/geocoding?hl=ja
サンプルコード
jsファイルの設定は以下
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=yourkey"></script>
"東京タワー"というワードを渡して、その緯度経度をconsoleに出力するサンプルです。もちろん"東京都町田市"のような住所から緯度経度を求めることもできます。
var geocoder = new google.maps.Geocoder(); var word = "東京タワー"; geocoder.geocode({'address': word,'region': 'jp'}, function(results, status){ if(status==google.maps.GeocoderStatus.OK){ if(results.length > 0){ var latlng = results[0].geometry.location; console.log("名称 : "+ results[0].formatted_address); console.log("緯度 : "+ latlng.lat()); console.log("経度 : "+ latlng.lng()); } } }
検索結果は複数返ってくることがあります。このサンプルでは1番目を取り出しています。
出力結果
名称 : 日本, 〒105-0011 東京都港区芝公園4丁目4−2−8 東京タワー 緯度 : 35.6585805 経度 : 139.74543289999997
Yahoo!ジオコーダAPIで住所から緯度経度を取得
同様にY.GeoCoderを使います。
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html
jsファイルの設定は以下。
<script type="text/javascript" charset="utf-8" src="http://js.api.olp.yahooapis.jp/OpenLocalPlatform/V1/jsapi?appid=yourkey"></script>
サンプルコード
こちらは"東京タワー"のようなランドマークの名称では検索できません。住所のみに対応しているようです。
var geocoder = new Y.GeoCoder(); var word = "東京都町田市"; var request = { query : word }; geocoder.execute( request , function( ydf_data ) { if ( ydf_data.features.length > 0 ) { var latlng = ydf_data.features[0].latlng; console.log("名称 : "+ ydf_data.features[0].name); console.log("緯度 : "+ latlng.lat()); console.log("経度 : "+ latlng.lng()); } } );
出力結果
名称 : 東京都町田市 緯度 : 35.54663039 経度 : 139.43861819