最近几天没事看了下百度地图的api,在覆盖物->标注沿着现运动中见到如下一个函数,纠结了好久没有看懂怎么运行的
特此向大神求助啊!给个详细点的解释。先谢谢了
driving.setSearchCompleteCallback(function(){
        var pts = driving.getResults().getPlan(0).getRoute(0).getPath();    //通过驾车实例,获得一系列点的数组
        var paths = pts.length;    //获得有几个点        var carMk = new BMap.Marker(pts[0],{icon:myIcon});
        map.addOverlay(carMk);
        i=0;
        function resetMkPoint(i){
            carMk.setPosition(pts[i]);
            if(i < paths){
                setTimeout(function(){
                    i++;
                    resetMkPoint(i);
                },100);
            }
        }
        setTimeout(function(){
            resetMkPoint(5);
        },100)    });
}

解决方案 »

  1.   

    我没有用过这个东西,不过地图相关的知识我知道一点。你贴得程序,看字面的意思,它应该是在搜索一条路线结束的时候被调用,首先将搜索结果保存起来,然后创建一个标记点,然后从第6个坐标点开始、每隔100毫秒将标记点移动到下一个坐标点,直到达到最后一个点。这里没有使用什么for循环,而是使用调用timer(类似于递归,但是不是递归)来完成定时移动到下一个点。那个代码i=0;
    我认为是没有用的代码。
      

  2.   

    百度的api 注释很详细吧
      

  3.   

    代码我是在百度提供的实例里复制的 
    不过 您所说的不是递归类似递归 我还是不能理解 到底是怎么运行的
    主要就是resetMkPoint(i)这个函数
      

  4.   

    在这个函数中真的没理解了
    网址如下http://dev.baidu.com/wiki/static/map/API/examples/?v=1.3&3_9#3&9