地図上の線を何等分かした点の標高を取得する。

 Google Maps API V3で、google.maps.ElevationServiceクラスを使ってみるサンプルプログラム。地図上の線を何等分かした点の標高を取得します。
マーカーをクリックすると、その地点の標高を表示します。

// 初期設定(地図)
var map = new google.maps.Map(document.getElementById("map"), {
  zoom: 8,
  center: new google.maps.LatLng(36, 138),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

// 初期設定(経由地)
var path = [
  new google.maps.LatLng(35.630152, 139.740440), // 品川駅
  new google.maps.LatLng(35.667160, 138.568993), // 甲府駅
  new google.maps.LatLng(35.170694, 136.881637)  // 名古屋駅
];

// わかりやすく、線を引いておきます。
new google.maps.Polyline({
  map: map,
  path: path
});

// リクエストを発行
new google.maps.ElevationService().getElevationAlongPath({
  path: path,
  samples: 9  // 分割数
}, function(results, status) {
  if (status == google.maps.ElevationStatus.OK) {
    for (var i in results) {
      if (results[i].elevation) {

        // 標高ゲット!
        var elevation = results[i].elevation;

        // あとはご自由に・・・。
        var marker = (new google.maps.Marker({
          position: results[i].location,
          map: map
        });
        attachMessage(marker, elevation + "m");
      }
    }
  } else if (status == google.maps.ElevationStatus.INVALID_REQUEST) {
    alert("リクエストに問題アリ!requestで渡している内容を確認せよ!!");
  } else if (status == google.maps.ElevationStatus.OVER_QUERY_LIMIT) {
    alert("短時間にクエリを送りすぎ!落ち着いて!!");
  } else if (status == google.maps.ElevationStatus.REQUEST_DENIED) {
    alert("このページでは ElevationResult の利用が許可されていない!・・・なぜ!?");
  } else if (status == google.maps.ElevationStatus.UNKNOWN_ERROR) {
    alert("原因不明のなんらかのトラブルが発生した模様。");
  } else {
    alert("えぇ~っと・・、バージョンアップ?");
  }
});

// 複数のgoogle.maps.Markerに吹き出しをつける
function attachMessage(marker, msg) {
  google.maps.event.addListener(marker, 'click', function(event) {
    new google.maps.InfoWindow({
      content: msg
    }).open(marker.getMap(), marker);
  });
}
 複数の地点を結んだ線を何等分かした地点の標高を得るには、ElevationServiceクラスの getElevatioAlongPath() を使います。第1引数 PathElevationRequest の path プロパティにそれぞれの地点の緯度経度を配列で、samples プロパティに何か所でサンプリングするか(=何か所の標高をとるか(=何等分するか+1))を与えると、第2引数のコールバック関数に検索結果が引数として渡されます。
 サンプルでは、品川駅~甲府駅~名古屋駅を9地点でサンプリングしています。この数には両端2点を含むので、全体を8等分することになります。各地点間で9地点を調べているわけではありません。全体の最高地点とか最低地点とかをとれるわけでもありません。起点~終点間を狭くしてsamplesをMAXの1024にすればかなり近似できるかとは思いますが。