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 来定位特征的方法。

在您的示例中,假设targetEvement还可以设置相应的 ID,那么您可以使用这种技术来模拟这样的“点击”。

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 回答