当我在正在侦听点击事件的 google.maps.Data.Layer 上使用 google.maps.event.trigger 时,latLng对象会被传递给我的听众而不是实际点击该功能:
//feat is generic google.maps.Data object
feat.addListener('click', function (e) {
console.log(e);
});
// the event is the latLng object
// place is the same location as when I manually click on the map
google.maps.event.trigger(feat, 'click', {
latLng: place.geometry.location
});
>>> Object {latLng: L}
// when I actually click at the same position, the event is different
>>> NW {latLng: L, Gb: MouseEvent, pixel: undefined, Ja: undefined, feature: Ec}
如何手动触发与实际点击地图具有相同形式的点击事件?
答案 0 :(得分:0)
问题是:Data类上的click事件的回调函数有一个Data.MouseEvent可供它使用:
https://developers.google.com/maps/documentation/javascript/reference#Data.MouseEvent
即。在此代码中,e
是Data.MouseEvent:
feat.addListener('click', function (e) {
console.log(e);
});
因此,当您将e
输出到控制台时,这就是您获得的内容:
NW {latLng: L, Gb: MouseEvent, pixel: undefined, Ja: undefined, feature: Ec}
但是当你触发它时,你传递给事件的唯一值是LatLng对象。如果你想使它相同,你需要构建一个Data.MouseEvent。
我想是这样的事情:
var event = new google.maps.Data.MouseEvent({
latLng: place.geometry.location
});
google.maps.event.trigger(feat, 'click', event);
您可能还需要为该Data.MouseEvent指定feature
属性;我不确定你是否能够使用你已经拥有的数据对象:
var event = new google.maps.Data.MouseEvent({
latLng: place.geometry.location,
feature: feat
});