2

マーカーが選択されたら、バウンスさせたいです。別のマーカーをクリックすると、最初のマーカーがバウンスを停止し、別のマーカーがバウンスを開始します。これは簡単にこれを行うことで達成できると思いました

function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
 document.getElementById('loc-info').innerHTML = html;
 if (marker.getAnimation() != null) {
marker.setAnimation(null);
} else {
marker.setAnimation(google.maps.Animation.BOUNCE);
}
});
}

代わりに、最初のマーカーが再度クリックされるまでバウンスし続けますが、これは望ましくありません。何かご意見は?

4

1 に答える 1

5

新しいマーカーをバウンスして「現在の」マーカーに設定する前に、「現在の」マーカーを追跡し、そのアニメーションを null に設定する必要があります。

// track marker that is currently bouncing
var currentMarker = null;

function bindInfoWindow(marker, map, infoWindow, html) {
    google.maps.event.addListener(marker, 'click', function() {
        document.getElementById('loc-info').innerHTML = html;
        // remove the bounce from the "old" marker
        if (currentMarker) currentMarker.setAnimation(null);
        // set this marker to the currentMarker
        currentMarker = marker;
        // add a bounce to this marker
        marker.setAnimation(google.maps.Animation.BOUNCE);

    });
}

前のコードは、クリックされたばかりのマーカーのみを見ています。マーカーがクリックされていない場合 (開始状態)、マーカーをバウンスさせます。次のクリックで、バウンスしているかどうかを確認し (バウンスしているかどうか)、停止します。2 回目のクリックでバウンスを停止する場合は、上記のコードに同じロジックを追加できます。

于 2012-09-22T15:09:58.833 に答える