2

名前と ID = 'campania' で kml に目印を作成しました

メソッドを使用してアップロードしましたgoogle.earth.fetchKml(ge, href, function())

マップ上に目印が表示されます。追加したい目印をクリックすると、目印の ID を取得するこのメソッドが見つかりました。 placemark=ge.getElementByUrl('http://web.uniparthenope.it/~0124000489/tw-2013/place.kml#campania');

メソッドを使用してクリック可能にするには

google.earth.addEventListener(placemark, 'click',playTour);

ツアーを開始する必要があるときに、目印の名前を含む吹き出しが表示され、このエラーが表示されます。

"Uncaught TypeError: Cannot call method 'getEventHandlersId' of null

手伝ってくれますか?おそらくkmlはできませんか?目印をクリックできるようにするには、Google API で目印を作成する必要がありますか? ありがとう

4

1 に答える 1

1

イベント ハンドラを追加しようplacemarkとすると、変数が null になります。

推測では、行の URL または ID が間違っています

var placemark = ge.getElementByUrl('http://web.uniparthenope.it/~0124000489/tw-2013/place.kml#campania');

そうしないと、kml dom が実際にロードされる前に呼び出しているため、目印が見つかりません。

修正するには、placemark アクセサーを呼び出して、fetchKml 操作のイベント コールバック内からイベント リスナーを追加してみてください。

そのような何か。

var href = 'http://web.uniparthenope.it/~0124000489/tw-2013/place.kml'
google.earth.fetchKml(ge, href, fetchKmlCallback);

function fetchKmlCallback(kml) {
  if(kml) {
     ge.getFeatures().appendChild(kml);
     var placemark = ge.getElementByUrl(href + '#campania');
     google.earth.addEventListener(placemark, 'click', playTour);
  }
}

function playTour() { /* handle playing here */ }

<gx:Tour>あなたが提供したリンクの KML を見ると、定義またはリンクされていないようです。ですから、演奏する部分をどのように扱うべきかを言うことは不可能です。複雑なツアーをロードしたい (つまり、KML ドキュメントには 1 つの機能だけでなく、より多くの機能がある) ように思われるので、API のツアー ドキュメントを読むのが最善<gx:Tour>でしょう。.

于 2013-06-09T09:32:06.083 に答える