我正在使用 Google Maps JavaScript API v3 创建地图。我将标记放在地图上,并为每个标记打开 InfoWindows,并将信息面板添加到侧面 div,但我不希望 InfoWindows 或侧面信息面板在放置动画之后打开完成,所以我做了一个事件监听器。
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。有没有更好的方法来做到这一点?我是否错误地调用了听众?