Cesium结合高德SDK路径规划

19 篇文章 4 订阅
16 篇文章 21 订阅

Cesium结合高德SDK路径规划

申请高德SDK的使用

链接: 点这里
按官网的提示申请,具体流程这里就不在赘述了。
路径规划API:点这里

注意:其中的sig签名:点这里
![在这里插入图片描述](https://img-blog.csdnimg.cn/aef7ef0464024edfa2f9fbaec54ada61.png在这里插入图片描述

有两则注意的地方一:参数要按照字母的升序排列,并且还需要md5加密

const modelRef = reactive({
    key: '',
    origin: '',
    destination: '',
    show_fields: 'polyline' //返回路径经纬度 方便画线
})
const APPsign = '' //秘钥
let obj: any = {}
for (const key in modelRef) {
     if (Object.prototype.hasOwnProperty.call(modelRef, key)) {
         const element = (modelRef as any)[key]
         if (element) obj[key] = element
     }
 }
 let arr: any[] = Object.keys(obj).sort()
 let sigList: any[] = []
 arr.forEach((item: any) => {
     sigList.push(item.trim() + "=" + obj[item]);
 })
 obj.sig = md5(sigList.join('&') + APPsign)

接收请求数据格式

  • 接口地址:https://restapi.amap.com/v5/direction/walking

接口请求回来的数据格式官网也有说明。

 gdApiWalking({ ...obj }).then((res: any) => {
   const { info, infocode } = res
    if (info === 'OK' && infocode === '10000') {
        const { route: { paths } } = res
        const { steps, cost: { duration }, distance } = paths[0]
        console.log(steps)
        let arr: string[] = []
        steps.forEach((item: any) => {
            let lines = item.polyline.split(';')
            if (arr.length === 0) arr = arr.concat(lines)
            else {
                lines.forEach((line: string) => {
                    if (!arr.some((i: string) => { i === line })) {
                        arr.push(line)
                    }
                })
            }
        })
        let arr1: number[] = []
        arr1 = arr.map(i => i.split(",").map(j => Number(j))).flat()
        console.log(Cesium.Cartesian3.fromDegreesArray(arr1.flat())) //cesium需要的画线坐标
    }
})

最后的成果:
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值