libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

Googleマップを利用する (4/8)

作成:2012-05-13 10:46
更新:2012-05-13 10:46

■Geoコーダーを利用する

Mapsで静止画イメージを取得するとき、StaticMapsetCenterでは、経度緯度による位置の値だけでなく、住所や地名、著名な観光地や建物の名前などで設定することもできました。このように、地名や住所などの情報をもとに位置情報を取得することを「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で返されるのはGeocdodereverseGeocodeで返されるのはAddressとなっていますが、どちらも同じオブジェクトが返されるようです。このオブジェクトが問題なのです。

このオブジェクトには、非常に多くの情報が盛り込まれています。それらが構造的に組み込まれているのです。このため、必要な値を取り出すには、まずオブジェクトの構造を頭に入れておかなければいけません。面倒な事に、このオブジェクトに関する説明が、Google Apps Scriptのドキュメントにも見当たりません。これはGoogleマップのデータがまるごと返されているのですね。ですので、GoogleマップのAPIに関するドキュメントを調べないといけません。
https://developers.google.com/maps/documentation/geocoding/?hl=ja
一応説明はありますが、見てもわけわからん的なところがあるので、その内容を整理しておくことにしましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る