Google MapsのジオコーディングサービスをJavaScriptから利用する

Google Mapsのジオコーディングサービスを利用して、住所やキーワードから緯度経度に変換する。JavaScriptから利用する際の手順はここを参照。使う際は、(1)単位時間あたりのリクエスト数に上限(1日あたり2,500回)がある、(2)呼び出しは非同期的に行われる、(3)地図と一緒に使う、点に留意する必要がある。

コード内で Google Maps API ジオコーディング サービスにアクセスするには、google.maps.Geocoder オブジェクトを使用します。Geocoder.geocode() メソッドはジオコーディング サービスへのリクエストを開始し、入力文字列を含む GeocodeRequest オブジェクト リテラルと、回答の受け取り時に実行するコールバック メソッドを渡します。

  • ジオコーダを初期化する
  • // JavaScript
    var geocoder = new google.maps.Geocoder();
    
  • パラメータをセットしてリクエスをト実行する
  • // JavaScript
    geocoder.geocode({
       'address': address, // 必須
       'region': 'jp' // 省略可能
       }, function(results, status){
          // コールバック処理
       }
    });
    

    パラメータとして、上記以外に bounds: LatLngBounds があり、これを指定することで探索範囲を制限することができる。なお、addressの代わりに、latLng: LatLng を指定すると経緯度から住所を得る(逆ジオコーディング)ことができる。探索結果はresultにJSON形式で返される。処理は非同期的に行われるので、コールバック関数を設定する。

  • 結果を処理する
  • 結果は以下の形式で返される。読みやすい住所は formatted_address に、経緯度は geometry に格納される。

    // JSON
    results[]: { // 結果は複数の可能性あり
     types[]: string,
     formatted_address: string,
     address_components[]: {
       short_name: string,
       long_name: string,
       types[]: string
     },
     geometry: {
       location: LatLng,
       location_type: GeocoderLocationType
       viewport: LatLngBounds,
       bounds: LatLngBounds
     }
    }
    
カテゴリー: Location Service, Tips タグ: , パーマリンク