3

我正在开发一个地图应用程序,我无法一次获得标记动画。我想要它,这样当点击一个新的标记时,另一个的动画就会被删除。我是一个 js 菜鸟,一直在绞尽脑汁。截至目前,我将标记放在一个数组中,以便我可以删除动画..但是在为另一个标记设置动画时如何删除所有其他标记的动画?..以下是我一直在播放的代码和

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);
}

}
4

4 回答 4

1

您发布的代码看起来不错,如果它适合您,那就太好了。但是,如果您一次只想要一个动画标记,那么只保留最后一个动画标记的变量可能更有效、更容易。例如,在您的点击事件或添加标记时,您可以执行以下操作:

previous_animation.setAnimation(null);
new_marker.setAnimation(google.maps.Animation.BOUNCE);
previous_animation = new_marker;
于 2011-06-29T03:33:51.143 回答
1

在为每个标记分配一个唯一的 id 后,我最终想出了以下代码......就像一个魅力

for( var i in marker ){
marker[i].setAnimation(null);
if( marker[i].id == item.id ) marker[i].setAnimation(google.maps.Animation.BOUNCE);
}
于 2011-07-01T06:50:59.253 回答
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 风格。稍微修改了一下

于 2014-01-10T04:37:28.230 回答
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);
        }
    };

})
于 2015-10-20T12:30:23.660 回答