にやにや製作:GoogleMapとGPSを自転車で使う

お気楽・ごくらく ( ・∀・)ニヤニヤ
     
製作 かるかる

日本語でGoogle Earth COM API ・その2 旧APIは健在!!

2006年12月30日 07時25分47秒 | Hacks
Google Earth COM APIについて巨匠.NETで問題解決に至るアドバイスをもらったのでまとめ

緯度経度についてグーグルアースを楽しむBlog@N-O 続・簡単アプリ
VBサンプルをC#へ移し変えただけなので簡単に出来た。

次に標高を取得しようと
double ICameraInfoGE::FocusPointAltitude [set,get]を使ってみたが返ってくるのは0mばかり。
巨匠さんのアドバイスで、古いAPIである KHInterface
GetPointOnTerrainFromScreenCoords を使うと標高が取れるとの情報をもらって
ようやく高度情報をGoogle Earthから取得することができた。

最初コードはFocusPointAltitudeから値を採ろうとしていたので、こんなかんじ。
IApplicationGE ge2 = new ApplicationGE();
CameraInfoGE ci2 = new CameraInfoGE();
int terrain;
string alt = "0";
terrain = 0;
ci2 = ge2.GetCamera(terrain);
alt = ci2.FocusPointAltitude.ToString();
MessageBox.Show(alt, "alt");

古いAPIの方を使って、GetPointOnTerrainFromScreenCoordsが返す値から取得することがわかり
以下のように変更
KHInterface ge2 = new KHInterface();
string alt = "0";
double[] TerrainPoint;
TerrainPoint = ge2.GetPointOnTerrainFromScreenCoords(0, 0);
MessageBox.Show(TerrainPoint[2].ToString(), "alt");

結果、緯度経度についてはApplicationGE()配下から取れる値を使い
標高に関しては、KHInterface()を利用していることになる。

動作検証はGMM.exe (Ver1.2.0.1~)に組み込んで行った。
具体的に何をやったかは、先日の「GoogleEarthの標高データはどこまで正しいか試してみる」を見てね。

-----------------
ところで、GoogleEarth COM APIGoogle Earth COM API
検索してみると以外に結果が違うのね、知らないページが出てきて
今は両方検索してたりする。
また APIが入っているとGoogleMapsのAPIも引っかかってくるので、-maps -hatenaと入れてる。