Google Earth のドキュメントには、ローカル ドライブのファイルにアクセスできるはずですが、例が見つからず、ローカル ドライブで KML を使用しようとすると、読み込まれていないようです。それはできないという回答がたくさんありますが、なぜドキュメンテーションはそうではないと言っているのでしょうか?
マイコード
var href = 'http://code.google.com/'
+ 'D:/visual studio 12/Projects/myMap/myMap/myPoints.Kml';
例
ネットワーク リンク
ネットワーク リンクには、ファイルをロードする (ハイパーテキスト参照) を持つ要素が含まれています。は、ローカル ファイル指定または絶対 URL にすることができます。名前にかかわらず、a は必ずしもネットワークからファイルをロードするとは限りません。リンク内の は、次のいずれかの場所を指定します。 •アイコン スタイル、グラウンド オーバーレイ、およびスクリーン オーバーレイのアイコンで使用される画像ファイル •要素で使用されるモデル ファイル •ネットワーク リンクによってロードされる KML または KMZ ファイル
指定するファイルは、ローカル ファイルまたはリモート サーバー上のファイルのいずれかです。最も単純な形式では、ネットワーク リンクは、1 つの大きな KML ファイルを同じコンピューター上でより小さく管理しやすいファイルに分割するのに便利な方法です。
これまでの例では、KML コードをローカル マシンから Google Earth に配信する必要がありました。ネットワーク リンクは、遠隔地からコンテンツを提供する機能を提供し、一般的に多数のユーザーにデータを配布するために使用されます。このように、データを修正する必要がある場合は、ソースの場所でのみ変更する必要があり、すべてのユーザーは更新されたデータを自動的に受け取ります。
いくつかの変更とテストを行った結果、エラーは KML ファイルではなく HTML ファイルにある必要があることがわかりました。HTML ファイルをクリックすると、プログラムを実行した場合と同じ結果が得られます。
HTML ファイルを実行し、KML を呼び出す必要があると考えてよろしいですか? それとも、KML を呼び出して GE を開くだけですか?
これは、実行しようとしているサンプル HTML です。
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
var ge;
google.load("earth", "1.x");
function init() {
google.earth.createInstance('map3d', initCB, failureCB);
};
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
var href = 'https://dl.dropbox.com/u/61240296/myPoints.Kml';
google.earth.fetchKml(ge, href, kmlFinishedLoading);
};
function kmlFinishedLoading(obj) {
kmlObject = obj;
if (kmlObject) {
if ('getFeatures' in kmlObject) {
kmlObject.getFeatures().appendChild(placemark);
}
ge.getFeatures().appendChild(kmlObject);
if (kmlObject.getAbstractView()) {
ge.getView().setAbstractView(kmlObject.getAbstractView());
}
}
};
function showHideKml() {
kmlObject.setVisibility(!kmlObject.getVisibility());
};
function failureCB(errorCode){};
google.setOnLoadCallback(init);
</script>
</head>
<body>
<div id="map3d" style="height: 320px; width: 679px;">
</div>
</body>
</html>