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 に答える