3

Google Maps APIを使用しており、タッチスクリーンからGEプラグインを駆動しようとしています。与えられたタッチでXとYを取り戻し、次のようなことができます。

var targetElement = document.elementFromPoint(data.x, scaledY);
if (null != targetElement) {
   var event = $.Event ("click");
   $(targetElement).trigger (event);
}

画面上のボタンのイベントを発生させますが、これはGEプラグイン内のプレースマーカーをクリックしません。これらのマーカーでクリックイベントを発生させる簡単な方法はありますか?

あなたが提供できるどんな助けにも感謝します。

4

1 に答える 1

0

AFAIKでは、Google Earth APIのオブジェクトのイベントを手動で発生させることはできません。名前付きまたは匿名のメソッドとしてのみ、オブジェクトのイベントリスナーを追加できます。

ただし、カスタムメソッドを使用して、目印のデフォルトのクリック動作(バルーンを開く、移動するなど)をシミュレートすることはできます。

私は以前にこれを行ったことがあり、各機能がプラグイン内で一意のIDを持っている必要がありました(APIまたはkmlのいずれかで設定)。次に、IDに基づいて機能をターゲットにする方法としてこれを使用しました。

あなたの例では、対応するIDセットもあると仮定しtargetEvementて、この手法を使用して「クリック」をシミュレートできます。

var targetElement = document.elementFromPoint(data.x, scaledY);
if (null != targetElement) {
   var event = $.Event ("click");
   $(targetElement).trigger (event);

   simulateClick(targetElement);
}

var simulateClick = function (element) {
  // presuming 'ge' references the plugin
  // we create a feature balloon based on the placemark
  var id = element.attr('id');
  var placemark = ge.getElementById(id); // corresponding placemark
  var balloon = ge.createFeatureBalloon();
  balloon.setFeature(placemark);
  ge.setBalloon(balloon);

  // Update the view in Google Earth to the placemark.
  // if no abstract view is defined you could also use the placemarks
  // latitude and longitude to construct a KmlCamera object.
  ge.getView().setAbstractView(placemark.getAbstractView());
}
于 2012-12-19T18:31:07.703 に答える