LoginSignup
3
5

More than 5 years have passed since last update.

Google Apps ScriptのElevationSamplerを使う

Posted at

Google Apps ScriptのElevationSamplerを使ってみました。

本当は、書籍に載らないから書く予定だったのですが、
少しだけ載っています。

書籍の補足として、ElevationSamplerをお楽しみ下さい。

本日のコード.gs

コード.gs
function myFunction() {
  var sampler = Maps.newElevationSampler();
  var result;
  var url;

  // 高度データをリクエスト
  var singlepolyline = Maps.encodePolyline([34.666579,133.91865]);   // 岡山駅の位置
//  var singlepolyline = Maps.encodePolyline([35.682189,139.766129]);  // 東京駅の位置

  result = sampler.sampleLocations(singlepolyline);
  if(result.status == "OK") {
    Logger.log("location[%s, %s] = %s"
               , result.results[0].location.lat
               , result.results[0].location.lng
               , result.results[0].elevation);

    url = Maps.newStaticMap()
              .addMarker(result.results[0].location.lat, result.results[0].location.lng)
              .getMapUrl();
    Logger.log(url);
  }

  Logger.log("----------------");

  // 岡山駅と東京駅の高度データをリクエスト
  var polyline = Maps.encodePolyline([34.666579,133.91865,35.682189,139.766129]);
  result = sampler.sampleLocations(polyline);

  if(result.status == "OK") {
    var staticmap = Maps.newStaticMap();

    for(var i = 0; i < result.results.length; i++) {
      var data = result.results[i];
      Logger.log("location[%s, %s] = %s"
                 , data.location.lat
                 , data.location.lng
                 , data.elevation);

      staticmap.addMarker(data.location.lat, data.location.lng);
    }

    url = staticmap.addPath(polyline).getMapUrl();

    Logger.log(url);
  }

  Logger.log("----------------");

  // 岡山駅と東京駅の間で3つの中継地点を設定
  result = sampler.samplePath(polyline, 5);

  if(result.status == "OK") {
    var staticmap = Maps.newStaticMap();

    for(var i = 0; i < result.results.length; i++) {
      var data = result.results[i];
      Logger.log("location[%s, %s] = %s"
                 , data.location.lat
                 , data.location.lng
                 , data.elevation);

      staticmap.addMarker(data.location.lat, data.location.lng);
    }

    url = staticmap.addPath(polyline).getMapUrl();

    Logger.log(url);
  }
}

ちょっと説明

今回は岡山駅から東京駅までの高度データとStaticMapへのURLをログに出力させています。
特定の1地点の高度を取得する事もできますし、複数の地点の高度を取得する事もできます。
ただし、2点間の直線上の点しか高度が取得できないようなので、「どこかを経由して」というのを表現しようと思うと、Pathを2本にするなど工夫しなければいけなさそうです。

高度データを取得する時は、https://developers.google.com/maps/documentation/elevation/?hl=ja#OutputFormatsを参考にします。ちなみに現時点では補完機能は全く効きませんので、
ドキュメントを見ながらコードを作成して下さい。

Mapsは今のところ、地図はStaticMapしか出力させることができませんが、
使い所はあると思いますのでお試し下さい。

出力結果

location[34.66658, 133.91865] = 9.969635009765625

http://maps.google.com/maps/api/staticmap?sensor=false&size=512x512&markers=34.66658,133.91865

location[34.66658, 133.91865] = 9.969635009765625
location[35.68219000000001, 139.76613] = 3.42744779586792

http://maps.google.com/maps/api/staticmap?sensor=false&size=512x512&path=enc:cyqrEq~jpXqjeEwaub@&markers=34.66658,133.91865%7C35.68219000000001,139.76613

location[34.66658, 133.91865] = 9.969635009765625
location[34.94670410616423, 135.3665710890838] = 195.5164031982422
location[35.20953298302271, 136.8241115815162] = 1.024440765380859
location[35.45478431194117, 138.2908005646604] = 1917.920776367188
location[35.68219000000001, 139.76613] = 3.42744779586792
http://maps.google.com/maps/api/staticmap?sensor=false&size=512x512&path=enc:cyqrEq~jpXqjeEwaub@&markers=34.66658,133.91865%7C34.94670410616423,135.3665710890838%7C35.20953298302271,136.8241115815162%7C35.45478431194117,138.2908005646604%7C35.68219000000001,139.76613

結論

地図のおかげで記事の見た目が華やかになっていい感じです。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5