我正在使用Google Maps API并尝试从触摸屏驱动GE插件。我得到了一个X和Y来获得给定的触摸并且可以做类似的事情:
var targetElement = document.elementFromPoint(data.x, scaledY);
if (null != targetElement) {
var event = $.Event ("click");
$(targetElement).trigger (event);
}
为屏幕上的按钮引发事件,但这不会点击GE插件中的地方标记。有没有一种简单的方法来触发这些标记上的点击事件?
非常感谢您提供的任何帮助。
答案 0 :(得分: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());
}