我正在使用Google Maps JavaScript API的v3创建地图。我正在将Markers放到地图上,并为每个Marker打开InfoWindows,以及向侧边div添加信息面板,但我不希望InfoWindows或侧面信息面板在drop动画之后才打开完成了,所以我做了一个事件监听器。
google.maps.event.addListener(newMarker, 'animation_changed', function() {
if (this.animation == null) {
// Open InfoWindow
// Add side info panel
}
});
问题是,当Marker完成删除时,此侦听器会触发两次,而if测试会在两次都计算为true。这对InfoWindow来说不是问题;一旦打开,它就会打开,第二次调用.open()就不会做任何事情。但是每个事件都会将信息div添加到侧面板两次,这是一个问题。现在,我创建了一个非常简单的解决方法:
google.maps.event.addListener(newMarker, 'animation_changed', function() {
if (this.animation == null && this.dropped != true) {
this.dropped = true;
// Open InfoWindow
// Add side info panel
}
});
这是我的预期效果,但感觉非常hacky。有没有更好的方法来做这个?我不正确地打电话给听众吗?
答案 0 :(得分:0)
var myListener = google.maps.event.addListener(newMarker, 'animation_changed', function() {
google.maps.event.removeListener(myListener);
if (this.animation == null) {
// Open InfoWindow
// Add side info panel
}
});