Virtual Earth Map Control 6.1から高度の値を扱うことができるようになりました。VELatLongクラスにAltitudeプロパティが追加されています(6.0にもあったような気がするのだけど……?)。また高度の値を設定するSetAltitudeメソッドも持っています。なぜメソッドがあるのかというと、高度を指定するときに地上から何メートルの値、またはWGS 84という測地系(詳しくないのでよくわかりません)のどちらかを指定するためです。
実際どんな感じなのか見てみましょう。2D表示だとひとつプッシュピンが見えるだけですが……。
3D表示にすると……!
プッシュピンが、積み重なっているのがわかります。本題とは関係ないけど3Dでプッシュピンをうまく見えるようにするのは難しい。
東京タワーの少し横からプッシュピンが表示されているのがわかると思います。これらのプッシュピンを追加するときに高度は地上から何メートルで指定しました。ちょうど東京タワーの経緯度に追加すると、タワー頂上が0メートル位置としてプッシュピンが乗ってしまうので横の道の経緯度を指定しています。
コードは次のようになります。簡単ですね。SetAltitudeメソッドの第2引数はVEAltitudeMode列挙体です。今のところ既に述べたように2種類、Absolute(WGS 84)とRelativeToGround(地上からの相対値)です。Defaultという値もあり、これはRelativeToGroundと同じになります。
var map = null;
function pageLoaded() {
var latlong = new VELatLong(35.6588, 139.746);
map = new VEMap('myMap');
map.LoadMap(latlong, 17);
for (var i = 0; i < 330; i += 30) {
latlong.SetAltitude(i, VEAltitudeMode.RelativeToGround);
var pushpin = new VEShape(VEShapeType.Pushpin, latlong);
pushpin.SetTitle(i + 'm');
map.AddShape(pushpin);
}
}
一応、3Dだけでなく概観図(Bird's eye)でも人が見て高さがわかりますが、こっちのほうはプッシュピンの表示に対応してないっぽいですね。