3

Google Earth デスクトップ アプリケーションに問題なく読み込まれる KMZ ファイルがあります。エラーなし。

Google Earth プラグインを使用して同じことをしようとすると、fetchKml関数から返されません。fetchKmlローカル ファイルで使用するために知っておく必要がある特別な設定はありますか?

次のようにファイルをロードしようとしています:

// Where 'ge' is the Google Earth Plugin
var href = 'C:/KMLDATA/TEST.KMZ';
google.earth.fetchKml(ge, href, function(kml) { /* do something with kml */ });
4

1 に答える 1

3

これは、Google Earthプラグイン自体とは関係がなく、JavaScriptサンドボックスと関係があります。

基本的に、JavaScriptはローカルファイルシステムにアクセスできません。そのため、コードにあるようなローカルファイルへのパスを単純に使用することはできません...

var href = 'C:/KMLDATA/TEST.KMZ';
google.earth.fetchKml(ge, href, function(kmlObject) { ... }

ブラウザでローカルファイルを操作するには、いくつかのオプションがあります。

  1. ローカルファイルサーバーをセットアップし、http経由でファイルをサーバーします。これは、どのOSでも比較的簡単に実行できます。だからそれC:/KMLDATA/TEST.KMZhttp://localhost/KMLDATA/TEST.KMZ

  2. ファイルシステムにアクセスできる「プラグイン」オブジェクトを使用します。すべてのブラウザで動作させるのはもう少しトリッキーで難しいです。ActiveX、XPCOM、署名付きJavaアプレットなど。ActiveXを介してローカルの.kmlファイルをプラグインにロードする例を作成しました。明らかにIEでのみ機能します。

  3. HTML5のファイルAPIを使用します。多くのコードであり、実際にkmlで試したものではありません。このチュートリアルはかなり徹底的で、ほとんどの側面をうまくカバーしています。

オプション1が最善の策だと思います。ローカルファイルサーバーを設定すると、すべてのkml/kmzファイルを簡単に読み込んでテストできます。

それが不可能または望ましい場合は、他の人が示唆しているように、パブリックサーバーでファイルをホストすることが実際に唯一のオプションです。

于 2013-02-01T21:10:18.890 に答える