1

ウェブページが読み込まれたときにGoogleEarthプラグインに次のことを行わせる方法はありますか?

  1. http://www.ppacg.org/tours/logo.htmlのように、静的な.kmzファイルを表示します
  2. http://www.ppacg.org/tours/tabview.html?project=08-37のように、ツアープレーヤー.kmzを開始します

上記の#1または#2のいずれかを個別に実行できますが、Webページの読み込み時に両方を実行する方法がわかりません。

4

1 に答える 1

0

google.earth名前空間でfetchKmlメソッドを使用して、両方のファイルを簡単に読み込むことができます。次に、データの表示とコールバックパラメーターへのツアーの入力を処理するロジックを提供できます。

ツアーを再生するには、KmlDOMを歩いてKmlTourオブジェクトを探し、GETourPlayerで開くことができるようにする必要があります。これを行うには、earthユーティリティライブラリを使用するか、またはkmldomwalk.jsスクリプト を使用できます。

次のjava-scriptのようなものが機能するはずです(ただし、ここに記述されており、テストされていません)。

<script src="//www.google.com/jsapi/"></script>
<script src="//earth-api-samples.googlecode.com/svn/trunk/lib/kmldomwalk.js"></script>
<script>
google.load("earth", "1");

var ge = null;
var kml1= '//www.ppacg.org/tours/logo.html';
var kml2= '//www.ppacg.org/tours/tabview.html?project=08-37';
var tour = null; // so you can call pause, stop, etc globally...

function init() {
  // presumes you have a div with the id 'map3d'
  google.earth.createInstance("map3d", initCallback, function(e){alert(e);});
}

function initCallback(object) {
  ge = object;
  ge.getWindow().setVisibility(true);
  // load your data 
  google.earth.fetchKml(ge, kml1, fetchKmlCallback);
  google.earth.fetchKml(ge, kml2 , fetchKmlCallback);
}

function fetchKmlCallback(object) {
  if (object) {
    // add the features to the plugin
    ge.getFeatures().appendChild(object);
    // Walk the DOM looking for a KmlTour
    walkKmlDom(object, function() {
      if (this.getType() == 'KmlTour') {
        tour = this;
        ge.getTourPlayer().setTour(tour); // enter the tour
        return false; // stop the DOM walk here.
      }
    });
  } else {
    setTimeout(function() {
     alert('Bad or null KML.');
    }, 0);
  }
}

google.setOnLoadCallback(init);
</script>

また、行き詰まった場合は、 fetchkmlを使用してツアーをプレイするこれらの例もご覧ください。

于 2013-02-26T01:19:36.617 に答える