Help us understand the problem. What is going on with this article?

Google Apps ScriptのElevationSamplerを使う

More than 5 years have passed since last update.

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

結論

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

ttyokoyama
GDG Okayama Organizer たまにGoogle関連の技術の事を投稿しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした