2011-06-29 49 views
3

我正在開發一個地圖應用程序,並且我一次無法讓標記動畫。我想這樣做,當點擊一個新的標記時,另一個的動畫被刪除。我是一個js noob,一直在絞盡腦汁。到目前爲止,我有一個數組中的標記,以便我可以刪除動畫..但是如何在爲另一個動畫設置動畫時刪除每個其他標記的動畫?下面是我一直播放的代碼與One Marker動畫一次Google Maps Api 3

for (i in markersArray) { 
if (markersArray[i].getAnimation() != null) { 
markersArray[i].setAnimation(null); 
} 
if (marker[i].getAnimation() != null) { 
marker[i].setAnimation(null); 
} else { 
marker[i].setAnimation(google.maps.Animation.BOUNCE); 
} 

} 

回答

1

最後我想出下面的代碼分配一個唯一的ID給每個標記後...工作就像魅力

for(var i in marker){ 
marker[i].setAnimation(null); 
if(marker[i].id == item.id) marker[i].setAnimation(google.maps.Animation.BOUNCE); 
} 
1

您發佈的代碼似乎很好,如果它適合你,很好。但是,如果您一次只想要一個標記,那麼保留最後一個動畫標記的變量可能會更有效,也更容易。例如,在點擊事件,或者當您添加標記,你可以做這樣的事情:

previous_animation.setAnimation(null); 
new_marker.setAnimation(google.maps.Animation.BOUNCE); 
previous_animation = new_marker; 
+0

它並不完全適合我的工作......我稍微修改它:'如果(!標記[I] .getAnimation()= NULL){ 的(我在markersArray){ markersArray [I] .setAnimation(空); \t} } else { marker [i] .setAnimation(google.maps.Animation.BOUNCE); }'現在當我點擊一個已經動畫的標記 - 它們都停下來,但它仍然沒有達到預期的效果 – Jay

+0

接近一點......任何人都可以提示我如何插入.then語句進入下面的代碼位'for(我在markersArray中){markers_Array [i] .setAnimation(null); \t} // 然後切換應該何去何從\t 如果(標記[I] .getAnimation()!= NULL){ }否則{ 標記[I] .setAnimation(google.maps.Animation.BOUNCE); }' – Jay

1
var new_marker = this; 
if(prev_marker) { 
    if (prev_marker.getAnimation() != null) {    
     prev_marker.setAnimation(null);        
     new_marker.setAnimation(google.maps.Animation.BOUNCE); 
     prev_marker = new_marker; 
    } 
} else { 
    new_marker.setAnimation(google.maps.Animation.BOUNCE); 
    prev_marker = new_marker; 
} 

我喜歡@Nick Canzoneri風格。修改它有點

0

這就是我得到的工作,我有我的標記在一個全局變量。這使我的標記始終可以訪問。

google.maps.event.addListener(marker, 'click', function(event) { 
    $("input#pickup-"+ marker.id +"").prop('checked', true); 

    for (var i = window.markers.length - 1; i >= 0; i--) { 
     window.markers[i].setAnimation(); 
     if(window.markers[i].id === this.id) { 
      marker.setAnimation(google.maps.Animation.BOUNCE); 
     } 
    }; 

})