天地图js搜索路径循环回调问题

x_jefferson 2014-06-14 09:06:36
在做天地图轨迹回放功能时,想用天地图的搜索功能,将两点间路径搜索出来,获取这条路径的点,再把所有点合起来显示。
for (i1 = 1; i1 < points1.length - 1; i1++) {
(function (i1) {
var config = {
policy: 0, //驾车策略
onSearchComplete: searchResult //检索完成后的回调函数
};
//创建公交搜索对象
drivingRoute = new TDrivingRoute(map, config);
searchDrivingRoute(points1[i1], points1[i1 + 1]);
})(i1);
}
function searchResult(result) {
}
但是onSearchComplete只执行了一次,是在for结束后,请教高手如何让for循环一次,执行一次回调?
...全文
666 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaojunyi3721 2014-06-20
  • 打赏
  • 举报
回复
没积分法问题了 楼主赏点分吧 谢谢
x_jefferson 2014-06-16
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
还是我开始说的:如果没有循环,那么只执行一次是没有问题的 但是在循环中,老的 TDrivingRoute 被新的 TDrivingRoute 实例覆盖了,因此老的就不能继续执行了。所以你只能看到最后一次的结果 你写成这样可能就对了 var drivingRoute = new TDrivingRoute(map, config);
还是不行,我查了,说用闭包可以,但是我用了也不行。
xuzuning 2014-06-16
  • 打赏
  • 举报
回复
还是我开始说的:如果没有循环,那么只执行一次是没有问题的 但是在循环中,老的 TDrivingRoute 被新的 TDrivingRoute 实例覆盖了,因此老的就不能继续执行了。所以你只能看到最后一次的结果 你写成这样可能就对了 var drivingRoute = new TDrivingRoute(map, config);
x_jefferson 2014-06-16
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
没有看到你在回调函数 searchResult 中做任何事情 显然 TDrivingRoute 是通过 ajax 或 jsonp 进行异步查询的(不然就没必要用回调了) 于是你在循环中 drivingRoute = new TDrivingRoute(map, config); 势必是后面的覆盖掉前面的(覆盖掉了,也就不会有结果了) 另外 searchDrivingRoute 是做什么的?跟 TDrivingRoute 是什么关系?
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这个函数只执行一次,有办法让它同步执行吗?
x_jefferson 2014-06-16
  • 打赏
  • 举报
回复
求高手指点啊,高手在哪里?
xuzuning 2014-06-15
  • 打赏
  • 举报
回复
没有看到你在回调函数 searchResult 中做任何事情 显然 TDrivingRoute 是通过 ajax 或 jsonp 进行异步查询的(不然就没必要用回调了) 于是你在循环中 drivingRoute = new TDrivingRoute(map, config); 势必是后面的覆盖掉前面的(覆盖掉了,也就不会有结果了) 另外 searchDrivingRoute 是做什么的?跟 TDrivingRoute 是什么关系?
x_jefferson 2014-06-15
  • 打赏
  • 举报
回复
没人回啊,自己顶,大神快来啊

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧