2011-06-29 51 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); 
     } 
    }; 

})