Mapsで静止画イメージを取得するとき、
StaticMapの
setCenterでは、経度緯度による位置の値だけでなく、住所や地名、著名な観光地や建物の名前などで設定することもできました。このように、地名や住所などの情報をもとに位置情報を取得することを「
Geoコーディング」といいます。(反対に、位置情報から住所などを割り出すことを「
リバースGeoコーディング」と呼んだりします)
Googleマップには、このGeoコーディングのための機能が組み込まれており、Google Apps Scriptからもそれを利用することができるようになっています。Geoコーディングされた情報を管理するものとして、
Maps Servicesには「
Geocoder」というクラスが用意されています。これは以下のようにしてオブジェクトを生成します。
変数 = Maps.newGetcoder();
StaticMapと同様、これで取得されたオブジェクトはまっさらな状態で、何の設定もされていません。そこでこの
GeoCoderオブジェクトのメソッドを呼び出して各種の設定を行います。
・リージョンを設定する《Geocoder》.setRegion( リージョン名 );
・言語を設定する《Geocoder》.setLanguage(言語名 );
・Geoコーディングする範囲を設定する《Geocoder》.setBounds( 緯度1, 経度1, 緯度2, 経度2 );
これらのメソッドは、例によって
GeoCoderオブジェクト自身を返すので、そのまま続けて記述することができます。これらで基本設定を行い、それからGeoコーディングのためのメソッドを呼び出します。
・Geoコーディングする変数 = 《Geocoder》.geocode( 住所等のテキスト );
・リバースGeoコーディングする変数 = 《Geocoder》.reverseGeocode( 緯度 , 経度 );
GeoコーディングとリバースGeoコーディングの両方のメソッドが用意されており、メソッドを呼び出すだけでどちらも簡単に実行できます。Geoコーディングの作業自体は、非常に簡単ですね。問題は、返される値です。
Googleのドキュメントを見ると、
geocodeで返されるのは
Geocdode、
reverseGeocodeで返されるのは
Addressとなっていますが、どちらも同じオブジェクトが返されるようです。このオブジェクトが問題なのです。
このオブジェクトには、非常に多くの情報が盛り込まれています。それらが構造的に組み込まれているのです。このため、必要な値を取り出すには、まずオブジェクトの構造を頭に入れておかなければいけません。面倒な事に、このオブジェクトに関する説明が、Google Apps Scriptのドキュメントにも見当たりません。これはGoogleマップのデータがまるごと返されているのですね。ですので、GoogleマップのAPIに関するドキュメントを調べないといけません。
https://developers.google.com/maps/documentation/geocoding/?hl=ja
一応説明はありますが、見てもわけわからん的なところがあるので、その内容を整理しておくことにしましょう。