Javascript 如何在延迟的情况下将标记添加到google地图

Javascript 如何在延迟的情况下将标记添加到google地图,javascript,google-maps,Javascript,Google Maps,我有一个从另一个函数接收的JS数组;我需要在地图上循环并添加延迟标记。然而,它似乎跳到了最后一个标记。 我测试了阵列大小,结果很好 我在循环中测试了数组值,它们很好 标记函数(在循环中没有设置超时函数的情况下调用)工作正常 <script> var map; var PlayDatesArray=new Array(); function playAllHistoryFunction(){ timeDelay1=1; for(i=0; i<

我有一个从另一个函数接收的JS数组;我需要在地图上循环并添加延迟标记。然而,它似乎跳到了最后一个标记。 我测试了阵列大小,结果很好 我在循环中测试了数组值,它们很好 标记函数(在循环中没有设置超时函数的情况下调用)工作正常

<script>
var map;
var PlayDatesArray=new Array();

function playAllHistoryFunction(){   
    timeDelay1=1;       
    for(i=0; i<PlayDatesArray.length; i++) {
        pddtArray = PlayDatesArray[i].split("|"); //split String using | delimiter[date]|[lat]|[lon]   
        lt1=pddtArray[1];
        ln1=pddtArray[2];
        tstamp1= pddtArray[0];
        oldtimeDelay1=timeDelay1;
        newTimeDelay=1500;
        timeDelay1=oldtimeDelay1+newTimeDelay;        
        setTimeout(function(){            
        centerMap(lt1, ln1);
        map.setZoom(14);
        addMarker(lt1, ln1, tstamp1);                
            }, timeDelay1);        
    }
}

function centerMap(lat1, lon1){
    var latlngbounds1 = new google.maps.LatLngBounds(); 
    latlngbounds1.extend(new google.maps.LatLng(lat1, lon1)); 
    map.fitBounds(latlngbounds1);  
}

function addMarker(lat, lng, name){
    var image = new google.maps.MarkerImage('images/icon-home.gif');\
    var mn = new google.maps.Marker({
        map: map,
        icon: image,
        position: new google.maps.LatLng(lat, lng),
        title: name
    });  
    map.setCenter(new google.maps.LatLng(lat, lng));     
}

</script>

var映射;
var PlayDatesArray=新数组();
函数playAllHistoryFunction(){
timeDelay1=1;

对于(i=0;i最初在我的评论中发布的,这是一个“循环中的闭包”问题。这在这里已经讨论过,是一个非常决定性的回答。

正如最初在我的评论中发布的,这是一个“循环中的闭包”问题。这在这里已经讨论过了,是一个非常决定性的回答。

您有一个循环中的闭包问题,请参阅。@Satyajit请添加为答案您有一个循环中的闭包问题,请参阅。@Satyajit请添加为答案