読者です 読者をやめる 読者になる 読者になる

HOW TO GO

〜昨日の今日とは一味二味違うBlog〜

Google Maps API(V3)とYahoo!ジオコーダAPIで住所から緯度経度を取得するサンプル

dev

地図とか位置情報を扱うため、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 

 
 

他にも

逆に緯度経度から住所を取得するAPIGoogleYahoo)もあります。
試してないけど。