解决方案 »

  1.   

    没有看到你在回调函数 searchResult 中做任何事情显然 TDrivingRoute 是通过 ajax 或 jsonp 进行异步查询的(不然就没必要用回调了)
    于是你在循环中 drivingRoute = new TDrivingRoute(map, config); 势必是后面的覆盖掉前面的(覆盖掉了,也就不会有结果了)
    另外 searchDrivingRoute 是做什么的?跟 TDrivingRoute 是什么关系?
      

  2.   

    function searchDrivingRoute(startLngLat, endLngLat) {
            //清空地图 
            map.clearOverLays();
            //设置驾车策略 
            drivingRoute.setPolicy(0);
            //驾车路线搜索 
            drivingRoute.search(startLngLat, endLngLat);
        }
    //显示公交搜索结果 
        function searchResult(result) {
            //添加起始点 
            //        createStartMarker();        obj = result;
            //        var resultList = document.createElement("div");
            //获取方案个数  
            var routes = result.getNumPlans();
            for (var i = 0; i < routes; i++) {
                //获得单条驾车方案结果对象 
            var plan = result.getPlan(i);
                   getPoints(plan.getPath());     
            }            
        }
    function getPoints(lnglats) {
    //        points.splice(0, points.length);
            for (var i = 0; i < lnglats.length - 1; i++) {
                points.push(new TLngLat(lnglats[i].lng, lnglats[i].lat));
            }
        }
    我是将每两个点搜索后,将搜索的点存入points数组,这样drivingRoute就可以覆盖了。用的也都是天地图api的内置函数,但是searchResult这个函数只执行一次,有办法让它同步执行吗?
      

  3.   

    还是我开始说的:如果没有循环,那么只执行一次是没有问题的
    但是在循环中,老的 TDrivingRoute 被新的 TDrivingRoute 实例覆盖了,因此老的就不能继续执行了。所以你只能看到最后一次的结果
    你写成这样可能就对了
    var drivingRoute = new TDrivingRoute(map, config);