2

そこで、私がやりたいことは、ウェブ ブラウザの Google Earth GEPlugin インスタンスにロードされたメイン データベースを置き換えることです。Code Playground にアクセスした場合:ここ http://code.google.com/apis/ajax/playground/#mars/alternate_server_connectivity

次に、新しいデータベースをロードする例を取得します。ただし、CreateInstance 呼び出しを複数回実行しようとすると、同じデータベースが取得され続けます (これは、バックグラウンドで実行されている GEPlugin.exe が最初のデータベースをまだ使用しているためだと推測しています。geplugin を強制終了してそのインスタンスを削除すると、 .exe プロセスを実行すると、ロードが機能します)

例のコードページで HTML を編集し、次の html/script コンボを使用しました

    <!--
You are free to copy and use this sample in accordance with the terms of the
Apache license (http://www.apache.org/licenses/LICENSE-2.0.html)
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Earth API Sample</title>
    <script src="http://www.google.com/jsapi?key=ABQIAAAAuPsJpk3MBtDpJ4G8cqBnjRRaGTYH6UMl8mADNa0YKuWNNa8VNxQCzVBXTx2DYyXGsTOxpWhvIG7Djw" type="text/javascript"></script>
    <script type="text/javascript">
    var ge;

    google.load("earth", "1");

    function init() {
      google.earth.createInstance('map3d', initCallback, failureCallback,
        { database: 'http://khmdb.google.com/?db=mars' });

    }

    function initCallback(instance) {
      ge = instance;
      ge.getWindow().setVisibility(true);

      // add a navigation control
      ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

      document.getElementById('installed-plugin-version').innerHTML =
        ge.getPluginVersion().toString();
    }

    function failureCallback(errorCode) {
    }
     function loadmoon()
      {
        delete ge;
        google.earth.createInstance('map3d', initCallback, failureCallback, { database: 'http://khmdb.google.com/?db=moon' });
        //http://khmdb.google.com/?db=moon
      }

    </script>
  </head>
  <body onload="init()" style="font-family: arial, sans-serif; font-size: 13px; border: 0;">
    <div id="map3d" style="width: 500px; height: 380px;"></div>
    <br>
    <a href="" onclick="loadmoon()">LOAD THE MOON</a>
    <div>Installed Plugin Version: <span id="installed-plugin-version" style="font-weight: bold;">Loading...</span></div>

  </body>
</html>

これは、インスタンスをリロードするという点で機能しますが、データベースは変更しません。

サイド データベースを追加するオプションについては承知していますが、サイド データベースをロードしようとすると、Terrain が最初のデータベースの地形にマッピングされたままになります。私にとって、これは受け入れられません。

4

1 に答える 1

1

インスタンスを再度作成する前に、'map3d' の innerHTML を空の文字列に設定してください。

function loadmoon(){
    document.getElementById('map3d').innerHTML = '';
    google.earth.createInstance('map3d', initCallback, failureCallback, { database: 'http://khmdb.google.com/?db=moon' });
}

この例を見てください。まさにあなたが必要としているものです。http://earth-api-samples.googlecode.com/svn/trunk/examples/alternate-spheres.html

于 2012-08-03T16:29:39.620 に答える