解决方案 »

  1.   

    都是异步解码,不能直接通过for语句来实现,每个解码的返回结果循序不一定按照循序返回,要通过全局变量来控制模拟for语句var al=Array.length - 1
    var now=0
     function makeLine() {    var gpsPoint=new BMap.Point(Array[now], Array[now + 1]);
      BMap.Convertor.translate(gpsPoint,0,translateCallback);
    now+=2;
    }

         translateCallback = function (point){
          
               PointArr.push(point);
               setTimeout("makepoly()", 1000);
            }
           function makepoly() {
              //大于总数,返回
               if(num>=total_num){
               return;
               }
                //第一个点不画线只描点
               if(num==0){
                 //alert(num);
                 var ergps = new BMap.Marker(PointArr[0]);
                 map.addOverlay(ergps);
                 num++;
                  
               }
               else{
                   //alert(num);
                   var polyline = new BMap.Polyline([PointArr[num - 1], PointArr[num]], { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 });  //定义折线
                   map.addOverlay(polyline);   //添加折线到地图上
                   var ergps = new BMap.Marker(PointArr[num]);
                   map.addOverlay(ergps);
                   num++;
               }if(now<al) makeLine()
           }