「GMapToGPX」でGPXが取れるため、特にKMLにして取得する意味はありませんというのは謙遜でしょう。GMM2は多機能ですし、今回の変換だけに絞っても、ドラッグ・アンド・ドロップ対応なので工程数が少なくなると思います。 ちなみに、リンク先をお気に入りに保存しておくと、ブックマークレットとしても利用できます。IEだとalertで文字化けしましたが、使えるかもしれません。
Google Earth(TM) 地図サービスのオススメスポット・Wiki更新状況・おもしろい情報の紹介などを書き綴っていきます。
水曜日, 1月 21, 2009
Googleマップのルート検索時をKMLにするGreasemonkeyスクリプト
かるかるさんの記事を興味深く拝見しました。 Googleマップのルート検索結果をGPXに変換する方法《にやにや製作:GoogleMapとGPSを自転車で使う》 ちょうど、我らがMengurume Labsで今週はGreasemonkeyが話題になっていました。(参考:Firefoxまとめサイト Greasemonkey) Greasemonkeyの詳細はリンク先を見ていただくとして、先ほどのMengurume Labsの記事の続きとして、Googleマップで使えるスクリプトを習作として作成してみました。ご利用は自己責任でお願いします。動作はFirefoxでのみ確認しています。 gmaproutekml.user.js(先にGreasemonkeyをインストールしてください。) ルート検索(車のみ)をすると、 右上にRoute KMLというリンクが表示されて、KMLを簡単にダウンロードできるというだけの機能です。 電車でのルート検索は、KMLを吐き出してくれなかったので車限定にしています。 (Googleマップで吐き出したKMLで確認はしていませんし、自転車乗りの皆さんの用途を把握していませんが)おそらく、KMLで吐き出しておいてGMM2でGPX変換したほうが、記事にあったブックマークレットでGPXを作るより楽なような気がします。
金曜日, 1月 02, 2009
SilverlightとJavaScript
あけましておめでとうございます。今年もよろしくお願いいたします。 昨年12月は放置していたpgRoutingの復習をしていました。他にもあった試したいことはあったのですが、越年…。越年したことの一つにSilverlight2とGoogleEarthAPIとの連携があります。(Xamlの作成ツールであるExpression BlendのSilverlight2対応のサービスパックのダウンロードすらしていませんでした。) というわけで、お正月はSilverlight2とJavaScriptのお勉強です。 GoogleEarthAPIを利用する際には、リファレンスやサンプルを見ながらHTMLへ(あるいは別に.jsファイルへ)javascriptを書きます。 SilverlightとGoogleEarthAPIを連携させるには、JavaScriptをSilverlightから呼び出す必要があります。 これを実現するのに使用するのがInvokeです。 まずは、JavaScriptです。(一部) getlatlon関数というのを書いていますが、これで中心の緯度経度を取得します。内容については後述します。
google.load("earth", "1");
var ge = null;
function init() {
google.earth.createInstance("map3d", initCB, failureCB);
}
function initCB(object) {
ge = object;
ge.getWindow().setVisibility(true);
}
function failureCB(object) {
alert('load failed');
}
function getlatlon(){
var latlon = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
var lat = latlon.getLatitude();
var lon = latlon.getLongitude();
var silverlight = document.getElementById("SEarth");
silverlight.content.findName("coordinates").Text = lat + "," + lon;
} 次にSilverlight(C#)のコードです。Xamlで作ったボタンをClickしたときに下記のコードを実行するようにしています。 private void getlatlon(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Invoke("getlatlon");
} Silverlightのコードで、Invokeを使用してJavaScriptで定義したgetlatlonを呼び出すことが出来ます。(もちろん引数も渡せます。) その後、JavaScriptで得た値をSilverlight側で使うことになるのですが、今回はサンプルコードということで、JavaScriptから直接Xamlに値を挿入してみました。 silverlight.content.findName("coordinates").Text = lat + "," + lon;
これはgetlatlonの一部ですが、coordinatesという名前のついたテキストボックス(Xaml内にあります)に直接値を入力しています。 というわけで、SilverlightでJavaScriptを使用するには、 ■HtmlPage.Window.Invokeを使う ■silverlight.content.findName("*********")という選択肢もある といったところです。今回の超テキトーなサンプルはこちらです。
登録:
投稿 (Atom)



