繁体   English   中英

Google Maps API v3:animation_changed事件触发两次?

[英]Google Maps API v3: animation_changed event firing twice?

我正在使用v3的Google Maps JavaScript API创建地图。 我将标记放到地图上,并为每个标记打开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。 有没有更好的方法可以做到这一点? 我打听者的电话不正确吗?

哈哈,我完全没有想到这一点。 谢谢,莫尔博士。 第一次触发后就停止收听。

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
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM