LBS——JS异步事件,同步执行(Promise方法应用)

此方法主要解决,多条异步事件,同步执行的问题
(如高德api 前台纠偏方法500点限制问题)
AMap.GraspRoad()
高德纠偏能坐标纠偏至道路线上,但是方法坐标参数限制在500个,
可用此方法解决点上限问题

/*
   <script type="text/javascript" src ="https://cdn.polyfill.io/v2/polyfill.min.js?features=es6"></script>
 */

//1.定义事件
var map;//地图对象(此处省略创建地图对象代码)
var asc = [];//事件集合
 var coord_s= [[500],[500],[500]];//500点集合
 //添加 事件集合
 for (var i = 0; i < p1.length; i++) {
		var a = new Promise(function (resolve) {
	            new AMap.GraspRoad().driving(coord_s[i], function (error, result) {
                if (!error) {
                    resolve(result.data.points);//将结果放入结果集
                } else {
                    console.log("坐标转换错误");
                }
            });
        })
        asc.push(a);
   }
//2.将事件放入容器
var b = Promise.all(asc);
//3.启动事件集合
b.then(function (result) {
                 var path1 = [];//点标记
                 var newPath = result;//返回的纠偏后的坐标集合
                 //将坐标合适转换
                 for (var ti = 0; ti < newPath.length; ti++) {
                     for (var txy = 0; txy < newPath[ti].length; txy++) {
                         path1.push([newPath[ti][txy].x, newPath[ti][txy].y]);
                     }
                 }
                 //纠偏后轨迹划入地图
                 var strokeColor = 'green';
                 var newLine = new AMap.Polyline({
                     path: path1,
                     strokeWeight: 8,
                     strokeOpacity: 0.7,
                     strokeColor: strokeColor,
                     extData: "t",
                     showDir: true
                 })
                 map.add(newLine);   
             }).catch(function (reason) {
                 console.log('promise reject failed reason', reason);
             })
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧阳大虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值