如何在特定的时间间隔后逐个删除标记簇?

时间:2013-04-30 10:16:53

标签: asp.net google-maps-api-3

我已经编写了以下代码来显示谷歌地图中的多个标记,我成功了。现在我想要一个应用于标记的拖放动画,并希望在特定的时间间隔后丢弃标记。我知道我想要调用setTimeout方法,但不知道在哪里调用此方法来实现结果

   <script type="text/javascript">
    window.onload=function(){ 
        if(markers.length>0){                
            var mapOptions={                 
                center:new google.maps.LatLng(markers[0].lat,markers[0].lng),                
                mapTypeId:google.maps.MapTypeId.ROADMAP        
            };
            var infoWindow=new google.maps.InfoWindow();
            var map=new google.maps.Map(document.getElementById("dvMap"),mapOptions);
            var bounds=new google.maps.LatLngBounds();
            for(i=0;i<markers.length;i++){

                var imageIcon=i+1;               
                var data=markers[i];
                var latlng=new google.maps.LatLng(data.lat,data.lng);

                var marker=new google.maps.Marker({                    
                           position:latlng,
                           map:map,
                           title:data.title,
                           icon:"Icon/marker"+imageIcon+".PNG",
                           animation:google.maps.Animation.DROP                                     
                });                   

                bounds.extend(marker.getPosition());
                (function(marker,data){
                    google.maps.event.addListener(marker,"click",function(e){
                        infoWindow.setContent(data.description);
                        infoWindow.open(map,marker);
                         if(marker.getAnimation()!=null){
                            marker.setAnimation(null);
                         }else{
                            marker.setAnimation(google.maps.Animation.BOUNCE);
                         }
                    });                
                })(marker,data);                            
            } //for loop ends here
           map.fitBounds(bounds);
           map.setCenter(bounds.getCenter());             

        }//if condition check for marker.length ends here
    } //windows.load function ends here       
</script>   

1 个答案:

答案 0 :(得分:0)

您可以使用setInterval执行此操作。我不认为setTimeout会在这里工作。请参阅我的示例:http://jsfiddle.net/upsidown/PWsVH/

var i = 0;

var interval = setInterval(function() { 

    var marker = new google.maps.Marker({
        ...
    });

    i++;

    if(i >= coords.length) clearInterval(interval);

}, 1000);