0

当推入数组的元素达到一定数量时,我试图暂停谷歌地图标记的动画。我试图清除计时器并恢复它,但是我遇到了一些问题。

我已经使用console.log()来查看控件正在访问的位置,但是我从console.log()得到的唯一消息是'500 records saved'。计时器被清除,但控制不会访问块的 else 条件来恢复计时器。

我也看过 SO question Pause and play google map marker animation 但是我没有使用按钮来暂停和播放。

这是代码,任何指导将不胜感激。

Console.log() '500 records saved'并且动画停止不恢复

var lastVertex = 1;
var stepnum=0;
var step = 90; //0.9 metres
var tick = 100; // milliseconds
var eol = [];

开始动画

function startAnimation(index) {
        if (timerHandle[index]) clearTimeout(timerHandle[index]);
          eol[index]=polyline[index].Distance();
          map.setCenter(polyline[index].getPath().getAt(0));

          poly2[index] = new google.maps.Polyline({path: [polyline[index].getPath().getAt(0)], strokeColor:"#FFFF00", strokeWeight:3});

          timerHandle[index] = setTimeout("animate("+index+",50)",2000);  // Allow time for the initial map display         

  }

动画

function animate(index,d) {  

       if (d>eol[index]) {

        marker[index].setPosition(endLocation[index].latlng);       

        if(marker[index].getPosition() == endLocation[index].latlng){
            console.log('Completed'+' '+index);
        }  


        return;
     }

         var p = polyline[index].GetPointAtDistance(d);
         marker[index].setPosition(p);
         updatePoly(index,d);

         timerHandle[index] = setTimeout("animate("+index+","+(d+step)+")", tick);

         citizens1.push({lat:marker[index].getPosition().lat(),lng:marker[index].getPosition().lng(),socialSecurityNumber:global_citizens[index].socialSecurityNumber});

         if(citizens1.length = 500){             
             console.log('500 records saved');          
             window.clearTimeout( timerHandle[index]);       
             citizens1 = []; //clear the array
         }

  }
4

0 回答 0