Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一次一个标记动画Google Maps Api 3_Javascript_Jquery_Google Maps_Animation_Marker - Fatal编程技术网

Javascript 一次一个标记动画Google Maps Api 3

Javascript 一次一个标记动画Google Maps Api 3,javascript,jquery,google-maps,animation,marker,Javascript,Jquery,Google Maps,Animation,Marker,我正在开发一个地图应用程序,但每次都无法为标记设置动画。我希望这样,当单击一个新标记时,另一个标记的动画将被删除。我是个疯子,一直在绞尽脑汁。到目前为止,我已经在一个数组中设置了标记,这样我就可以删除动画。但是,在为另一个标记设置动画时,如何删除其他标记的动画呢?。下面是我一直在玩的代码 for (i in markersArray) { if (markersArray[i].getAnimation() != null) { markersArray[i].setAnimation(null

我正在开发一个地图应用程序,但每次都无法为标记设置动画。我希望这样,当单击一个新标记时,另一个标记的动画将被删除。我是个疯子,一直在绞尽脑汁。到目前为止,我已经在一个数组中设置了标记,这样我就可以删除动画。但是,在为另一个标记设置动画时,如何删除其他标记的动画呢?。下面是我一直在玩的代码

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

}

你发布的代码看起来不错,如果对你有用,那就太好了。但是,如果一次只希望为一个标记设置动画,则只保留最后一个动画标记的变量可能会更有效、更容易。例如,在单击事件中或添加标记时,可以执行以下操作:

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

在为每个标记分配了一个唯一的id之后,我最终得到了以下代码…工作起来很有魅力

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

我更喜欢@Nick Canzoneri风格。稍微修改一下

这就是我的工作,我在一个全局变量中有我的标记。这使得我的标记可以随时访问

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

})

它对我来说并不完全有效……我稍微修改了一下:
if(marker[I].getAnimation()!=null){for(markersArray中的I){markersArray[I].setAnimation(null);}}}else{marker[I].setAnimation(google.maps.Animation.BOUNCE);}
现在,当我单击一个已经设置了动画的标记时——它们都停止了,但仍然没有达到预期的效果。再靠近一点……有人能告诉我如何在以下代码位中插入.then语句吗?(i in markersArray){markersArray[i].setAnimation(null);}//如果(marker[i].getAnimation()!=null){}else{marker[i].setAnimation(google.maps.Animation.BOUNCE);}
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);
        }
    };

})