此方法主要解决,多条异步事件,同步执行的问题
(如高德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);
})