簡體   English   中英

Google會延遲地映射api v3 drop marker動畫

[英]Google maps api v3 drop markers animation with delay

我知道有一個關於這個谷歌地圖API v3刪除標記的問題有延遲嗎? 我跟着它,但我不得不在我的代碼中犯了一個錯誤,這里是:

function dropAnim(lat,lng,name) {

    console.log("---- " + lat + " - " + lng);

    var marker = new google.maps.Marker({

        position: new google.maps.LatLng(lat,lng),
        map: map,
        title: name,
        animation: google.maps.Animation.DROP,
        icon: imageCar,

    });

}

var counter = 0;

$.get('http://server.com/methods.php?m=loadPins', function(data) {

dataName = data.name.split(";");
dataLat = data.lat.split(";");
dataLng = data.lng.split(";");

dataLength = dataName.length-1;

for(var i=0;i<dataLength;i++) {

   var lat = dataLat[i];
   var lng = dataLng[i];

   console.log(lat + " - " + lng);

   setTimeout(function() {
      dropAnim(lat,lng,dataName[i]);
   }, counter * 400);

   counter++;
} 

},"json");

問題是它在完全相同的位置加載3個引腳。 dataLat和dataLng加載3倍不同,我可以在控制台中看到,但是當我看到控制台中出現的函數時,有3個相同的lat和lng(最后一個)。

試試這樣:

 setTimeout((function(i) {
     return function(){
        dropAnim(dataLat[i],dataLng[i],dataName[i]);
     };
 })(i), counter * 400);

你的問題是,當你的超時回調被調用時, i變量已經有了dataLength值,因為你的循環已經完成了那個時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM