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

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

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

■標高を調べるには?

この他、覚えておくと便利な機能として「高さ」に関するものがあります。位置情報を元に、その地点の標高を調べる、というものです。位置というのはGPSなどで手軽に取り出せますが、標高は(最近のGPSでは得られるものもありますが)簡単には得られません。GPSはあくまで位置を調べるだけのもので、高さはわからないのです。

「でも、最近は高さもわかるよ?」と思ったかも知れませんが、これは別にGPSで高さを計測しているわけではないのです。世界中の各地点の高度をデータベース化し、位置の値からその地点の高度を検索しているだけなんですね。

だったら、同じことをGoogleマップでもできないか?ということで用意されているのが「newElevationSampler」というメソッドです。これは以下のように呼び出します。
変数 = Maps.newElevationSampler();
これで、「ElevationSampler」というオブジェクトが取得されます。これは、指定した地点での標高をサンプルイングするための機能を提供するオブジェクトです。これは、細かな設定などは必要なく、単純にメソッドを呼び出して高度を取り出すだけです。

・指定した地点の高度を得る
変数 = 《ElevationSampler》.sampleLocation( 緯度 , 経度 );

使い方自体は簡単ですね。問題は返ってくる値です。これまたオブジェクトになっていて、いくつもの値が構造的にまとめられています。整理するとこのようになります。
{
   results=[
      {
         location={lng=経度, lat=緯度 },
         elevation=高度,
         resolution=精度
      }
   ],
   status=ステータス
}

ここから必要な値(普通は、elevationで高度だけわかればいいでしょう)を取り出して利用します。では、簡単な利用例を下にあげておきましょう。実行すると、スプレッドシートで地名をたずねてきます。これを入力してOKすると、その場所の標高を表示します。

ここでは、sampleLocationで返された値から、var elevation = location.results[0].elevation;というようにして標高の値を取り出しています。この書き方さえわかっていれば、標高を調べるのは割と簡単に行えるでしょう。

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

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

●プログラム・リスト●

function checkElevation() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var getname = Browser.inputBox("地名", 
      "地名を入力:", Browser.Buttons.OK_CANCEL);
  var geocode = Maps.newGeocoder().geocode(getname);
  var point = geocode.results[0].geometry.location;
  var location = Maps.newElevationSampler().sampleLocation(point.lat,point.lng);
  var elevation = location.results[0].elevation;
  Browser.msgBox(getname + "の標高は、" + elevation + "メートルです。");
}

※関連コンテンツ

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