|
路线规划
简介
路线规划常用于出行路线的提前预览,我们提供4种类型的路线规划,分别为:驾车、步行、公交和骑行,满足各种的出行场景。
高德开放平台
本例是驾车路线规划功能和位置选择地图api:chooseLocation
示例:
1、在页面的 js 文件中,实例化 AMapWX 对象,请求进行驾车路线规划。
首先,引入 amap-wx.js 文件(amap-wx.js 从相关下载页面下载的 zip 文件解压后得到)。- import amapFile from "@/libs/amap-wx.js";
复制代码 然后在 onLoad 实例化 AMapWX 对象- onLoad() {
- this.myAmapFunT = new amapFile.AMapWX({
- key: 你申请的key
- })
- },
复制代码 最后生成请求进行驾车路线规划数据- /**
- *@author ZY
- *@date 2023/1/9
- *@Description:生成规划路线
- *@param {string} start 开始位置
- *@param {string} end 结束位置
- *@param {number} strategy 10 默认多策略 策略 https://lbs.amap.com/api/webservice/guide/api/direction#driving
- *
- 10,返回结果会躲避拥堵,路程较短,尽量缩短时间,与高德地图的默认策略也就是不进行任何勾选一致
- * 4,躲避拥堵,但是可能会存在绕路的情况,耗时可能较长
- 2,距离优先,仅走距离最短的路线,但是可能存在穿越小路/小区的情况
- */
- getPlanningRoute(start, end, strategy = 10) {
- let that = this
- uni.showLoading({
- title: '加载中'
- });
- that.myAmapFunT.getDrivingRoute({
- origin: start,
- destination: end,
- strategy: strategy, //备选方案
- success: function(data) {
- // console.log('所有路径',data)
- if (data.paths && data.paths[0] && data.paths[0].steps) {
- // 默认 10 会 对返回多条路径的方案 按照时间短的
- let goodRouter = data.paths.sort((a, b) => {
- return a.duration - b.duration
- })[0]
- that.distance = (goodRouter.distance * 0.001).toFixed(2) + '公里'
- that.duration = '大约' + (goodRouter.duration / 60).toFixed(2) + '分钟'
- let steps = goodRouter.steps
- let points = []
- for (var i = 0; i < steps.length; i++) {
- var poLen = steps[i].polyline.split(';');
- for (var j = 0; j < poLen.length; j++) {
- points.push({
- longitude: parseFloat(poLen[j].split(',')[0]),
- latitude: parseFloat(poLen[j].split(',')[1])
- })
- }
- }
- that.polyline = [{
- points: points,
- color: strategy === 10 ? '#0ee532' : strategy === 2 ? '#0742d9' :
- '#ee6b06',
- width: 8,
- }]
- }
- uni.hideLoading();
- },
- fail: function(info) { //失败回调
- console.log('路线规划失败')
- console.log(info)
- uni.hideLoading();
- uni.showToast({
- title: '路线规划失败',
- icon: 'error'
- });
- },
- })
- },
复制代码 2.完整源码组件- <template>
- <view >
- <view @click="toBack">
- <image src="http://img.wisdomtaxi.com/toBack.png" ></image>
- </view>
- <map :latitude="startPoint.latitude" :longitude="startPoint.longitude" show-location
- :polyline="polyline" @markertap="markertap" :key="polyline.length + new Date().getTime()"
- :markers="markers">
- <cover-view slot="callout">
- <block v-for="(item,index) in markers" :key="index">
- <cover-view :marker-id="item.id">
- <cover-view >
- {{item.title}}
- </cover-view>
- </cover-view>
- </block>
- </cover-view>
- </map>
- <view >
- <view v-if="endPoint.address">
- <view v-for="item in btnList" :key="item.value"
- : @click="selectRouteType(item.value)">
- {{item.name}}
- </view>
- </view>
- <view v-if="distance || duration">
- <u-icon name="file-text-fill" color="#FFA500" size="17"></u-icon>
- <view >
- 距离:{{distance}} 时间:{{duration}}
- </view>
- </view>
- <view >
- <u-icon name="map-fill" color="#33a63b" size="17"></u-icon>
- <view >
- 您将在 <text >{{startPoint.name | fmtEndAddr}}</text> 上车
- </view>
- </view>
- <view v-if="endPoint.name">
- <u-icon name="map-fill" color="#ee642b" size="17"></u-icon>
- <view >
- {{endPoint.name|fmtEndAddr}}
- </view>
- </view>
- <view @click="openChooseLocation">
- <u-icon name="search" color="#ffa602" size="23"></u-icon>
- <view >
- 请选择目的地
- </view>
- </view>
- <view v-if="endPoint.name" @click="submitToDriver" >
- 发送给司机
- </view>
- </view>
- </view>
- </template>
复制代码 来源:https://www.cnblogs.com/zy-mg/p/17039609.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|