2013-04-30 70 views
0

我已经写了下面的代码来显示谷歌地图中的多个标记,我成功了它。现在我想要一个拖放动画应用于标记,并希望在特定时间间隔后放置标记。我知道我想打电话给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> 
+0

你能否粘贴你的整个代码,包括html ..? – 2013-04-30 11:34:24

+0

我们并不真的需要这里的HTML。这个问题很清楚。看到我的答案。 – MrUpsidown 2013-05-01 13:10:11

回答

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); 
+0

谢谢你的回复。我正确地得到了拖放动画。我已经写了'map.fitBounds(bounds)'和'map.setCenter(bounds.getCenter())'来显示所有没有缩小的标记。问题在'setInterval'函数映射没有被显示之后被称为上述函数。 – Kannan 2013-05-02 06:29:32

+0

你想做什么?您是否期望地图在每个标记被丢弃后进行调整?还是在动画之前?后?请澄清。 – MrUpsidown 2013-05-02 08:45:06

+0

理想情况下,我想要的是地图调整所有的标记intially,然后有一阵雨的标记。如果它很难实现,我会希望你建议的方式,即每个标记被丢弃后调整的地图。 – Kannan 2013-05-02 08:58:49

相关问题