2012-07-03 33 views
-4

這是在Google地圖中創建一個Google地圖一次通過n個地址不可能的方式我正在通過函數集間隔(2段),以每一迭代函數在谷歌地圖代碼中每次通過函數循環函數n次等待通過函數

var directionsDisplay; 
var directionsService = new google.maps.DirectionsService(); 
var n; 
var j=1; 
var array_list= new Array(n); 
var array_storename=new Array(n); 
function InitializeMap() 
{ 

    directionsDisplay = new google.maps.DirectionsRenderer(); 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var myOptions = 
    { 
     zoom: 11, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map"), myOptions); 


    directionsDisplay.setMap(map); 
      directionsDisplay.setPanel(document.getElementById('directionpanel')); 

    var control = document.getElementById('control'); 
    control.style.display = 'block'; 

document.getElementById('sorttable').style.display="none" 

} 
    function calcRoute(dist,varab) 
    { 
    n=document.getElementById('Countnumbers').value; 
    var start = document.getElementById('startvalue').value; 
    var end = document.getElementById(dist).innerHTML; 
    // end=end.replace(/[[email protected]#$%&^*()-+=|\/:;><~]/gi," "); 

    var request = { 
     origin: start, 
     destination: end, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

    directionsService.route(request, function (response, status) 
    { 


     if (status == google.maps.DirectionsStatus.OK) 
     { 

     document.getElementById('sorttable').style.display="block"; 
     document.getElementById("total").style.visibility="hidden"; 
      directionsDisplay.setDirections(response); 
      var route = response.routes[0]; 
      for (var i = 0; i < route.legs.length; i++) 
      { 

       var a=route.legs[i].distance.text; 
       var b=route.legs[i].duration.text; 
       var bc=a+",About :"+b; 
       var lblid="Labe"+varab; 
       document.getElementById(lblid).innerHTML=bc; 
       var store="lblstore"+varab; 
       document.getElementById(store).title=end; 
       var len=10.0; 
       var dd=route.legs[i].distance.value/1000; 
       array_list[varab]=dd; 
       array_list.sort(function(a,b){return a-b}); 
       } 

      } 


     }); 

    } 


function Button1_onclick() 
{ 
    for(j=1;j<=n;j++) 
{ 
    document.getElementById('sorttable').style.display="block"; 
    n=document.getElementById('Countnumbers').value; 
    var ss="lblstorename"+j; 
    var ss1 =document.getElementById(ss).innerHTML; 
//this labels are store my addresss 
    calcRoute(ss,j); 

} 
} 

//我使用在谷歌地圖n個地址不是去一次谷歌地圖那方式我是的setTimeout(或)for循環設置內部間隔方法

+5

太多.....很多........點..............你能請用普通英文寫,而不是代碼? – deceze

+0

明確描述你的問題,陳述你的問題。使用該代碼來說明您嘗試過的內容,並幫助人們理解您的問題。 –

+0

請參閱我在上面填寫完整代碼 – user1497800

回答

1

爲了在每次迭代之間增加2秒延遲,您需要重新調用ur calcRoute(..)並將您的for-loop代碼移入calcRoute方法。

您的代碼應該是這個樣子 -

function Button1_onclick() {  
    document.getElementById('sorttable').style.display="block"; 
    n=document.getElementById('Countnumbers').value; 
    var ss="lblstorename"+n;//use n insteadof j 
    var ss1 =document.getElementById(ss).innerHTML;    
    calcRoute(ss,j);//only your first call is inside this method. rest all will be recurrsive 
} 

// making your calcRoute recurrsive 
function calcRoute(ss, j){ 
    //your code here 
    if(--j>0){   
    var ss="lblstorename"+j;    
    var ss1 =document.getElementById(ss).innerHTML;//not sure why are u using ss1 
    setTimeout(function(){calcRoute(ss, j)}, 2000);//here you set your time delay 
    } 
} 
+0

不幸的是我在反饋彈出窗口請按否,您的編碼是正確的 – user1497800

+0

這是否對您有幫助? – Kshitij

+0

查看完整的代碼,我在上面請chck並給出解決方案 – user1497800