要するに、ここ数回にわたるJavaScript関連の記事で書きたかったことは『JavaScriptを使用するときは、ネットワークリンクを使うと嬉しい場合がありそう』ということです。嬉しい場合がありそうという次元ではなく、使わなければならない場合があり得ます。
例えば、次のようなコードでXMLを読み込んで表示するとします。(ブラウザ上での確認用にHTMLをアップしています。ちなみに、確認するブラウザはGoogleChromeがオススメです。FirefoxやIEではバルーンでの挙動と異なることがあります。)
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="javascript">
google.load("jquery", "1.3.2");
google.setOnLoadCallback(function() {
$("#ballon_location").click(function() {
$.get("http://cubic-sight.net/kura/blog/090924/hello.xml", function(xml){
$("#BallonLocation").append("<p>" + $(xml).find("Hello").text() + "</p>");
});
});
});
</script>
<title>無題 1</title>
</head>
<body>
<input id="ballon_location" type="button" value="Loacation" />
<div id="BallonLocation"></div>
</body>
</html>まずは、こちらのKMZファイルを開いてください。上記のコードと同じHTMLですが、動かないはずです。
次に先ほどのKMZファイルを読み込むネットワークリンクKMZを開いてください。こちらはきちんと動くと思います。
cubic-sight.net上にあるXMLファイルを読み込んで、表示するという単純なものです。別ファイルになっているXMLを読み込むというところに留意してください。
JavaScriptには、いわゆるクロスドメイン問題とか同一出身ポリシー問題とか言われる問題があります。前回も書きましたが、これをクリアする手法はいろいろとあります。
ただ、それ以前の前提として、GoogleEarthのバルーン上では、ネットワークリンクを使用しなければならない場合があるということに留意しておいた方が良いでしょう。
【09.9.25追記】
hello.xml
ではなく、
http://cubic-sight.net/kura/blog/090924/hello.xml
と、指定するべきだと思い訂正しました。


2 コメント:
お久しぶりです。茜丸です。お元気ですか?
自分は9月に再開してから、同じようにバルーン内でTakashi.U氏に影響されて、いろいろ挑戦中です。
特に、やりたいことが、外部HTMLの呼び出しがしたくてやってます。なかなか上手くいかなないです。
単純にPrototype.jsつかって、HTMLを呼び出しする バルーンの中にそれを表示する。できればバルーン内でそれを動的に切り替えるなんてやりたいんですが、なかなか上手くいきません。
ネットワークリンクの件、勉強になりました。
茜丸さんへ
こちらこそご無沙汰しております。GE Maniacsはバッチリとチェックさせていただいております!
むしろ影響を受けているのは自分のほうで、特に今後取り組みたいことを書かれている部分は、自分でも考えるきっかけになっています。
今後ともよろしくお願いします。
コメントを投稿