4

我希望标记弹跳几秒钟并最终自动停止。我正在尝试这段代码:

1. globalMarkers[i].setAnimation(google.maps.Animation.BOUNCE);
2. setTimeout(function() {
3.    globalMarkers[i].setAnimation(null)
4. }, 3000);

但由于某种原因,第 1 行执行(因此标记将开始弹跳)但第 3 行返回以下错误:

Uncaught TypeError: Cannot call method 'setAnimation' of undefined
        (anonymous function)

有什么想法吗?

4

1 回答 1

13

这很好用(使用单个全局标记对象)

    marker.setAnimation(google.maps.Animation.BOUNCE);

    setTimeout(function() {
        marker.setAnimation(null)
    }, 3000);

我的猜测是您正在交互,而您的 setTimeout i 不在范围内。试试这个:

    for (var x = 0; x < 5; x++) {
        var marker = markers[x];
        marker.setAnimation(google.maps.Animation.BOUNCE);
        stopAnimation(marker);
    }


function stopAnimation(marker) {
    setTimeout(function () {
        marker.setAnimation(null);
    }, 3000);
}

这里有一些更有创意的解决方案:

Javascript如何在迭代列表操作上使用setTimeout?

于 2013-02-02T02:23:28.037 回答