微信小程序---- 外卖小程序查看地图路线(骑手端&用户端)【高德地图】

前言:1. 在小程序中需要使用map组件,文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/map.html
2.使用的是高德地图,所以需要引进相关的js,下载链接:https://lbs.amap.com/api/wx/download
3.去往高德官方申请需要用的key,操作链接:https://lbs.amap.com/api/wx/guide/create-project/get-key/

html

<map id="map" style="width: 100%;height: 100vh;" longitude="{{longitude}}" latitude="{{latitude}}" markers="{{markers}}" scale="{{scale}}" polyline="{{polyline}}" show-location enable-zoom><cover-view id="top"><cover-view class="ibody"><cover-view class="leftz"><cover-view>预计时长:{{duration}}分钟</cover-view></cover-view><cover-view class="leftz leftz1">           <cover-view>剩余公里数:{{distance}}米</cover-view></cover-view></cover-view></cover-view></map>

JS ( tag 1是司机端进入查看 2是用户端身份查看)

import {showdriverupdata,getdata,updata
} from '../server/post';
var amapFile = require('../../common/amap-wx.130.js'); //引入高德js
Page({data: {tag: 1, //1是小车身份进入查看 2是特殊商户身份查看latitude: '', //起始经度longitude: '', //终点纬度zhongdianjingdu: '', //终点经度zhongdianweidu: '', //终点纬度scale: 12,markers: [{iconPath: "../../image/car.png",id: 0,latitude: '',longitude: '',width: 33,height: 30}, {iconPath: "../../image/end.png",id: 1,latitude: '',longitude: '',width: 35,height: 40}],distance: '',polyline: [],scatterlongitude: '', //特殊商户身份 单个小车位置的经纬度timer: null,},onLoad: function (options) {this.setData({tag: options.tag || 1,scatterlongitude: options.scatterlongitude,timer:null})clearInterval(this.data.timer);},onShow() {this.getCarinfo();},// 高德地图划线getDrivingRoute(origin, destination) {var that = this;var myAmapFun = new amapFile.AMapWX({key: 'XXXXXXXXXX'});myAmapFun.getDrivingRoute({origin: origin,destination: destination,success: function (data) {console.log('高德划线数据-----', data)var points = [];if (data.paths && data.paths[0] && data.paths[0].steps) {var steps = data.paths[0].steps;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.setData({polyline: [{points: points,color: "#0091ff",width: 6}]});if (data.paths[0] && data.paths[0].distance) { //公里数that.setData({distance: data.paths[0].distance});}if (data.paths[0] && data.paths[0].duration) { //花费时间let miu = parseInt(Number(data.paths[0].duration) / 60)that.setData({duration: miu});}},fail: function (info) {}})},//这个函数是一开始点击事件触发的:async authorization() {let that = this;try { //等待await this.getWxLocation() //小车身份} catch (error) {wx.showModal({title: '温馨提示',tip: '获取权限失败,是否授权获取地理位置?',showCancel: true,confirmText: '授权位置',cancelText: '取消',sureCall() {that.openSetting()},cancelCall() {}})return}},// 获取当前位置 (小车身份调用)getWxLocation() {let that = this,v = that.data;wx.showLoading({title: '定位中...',mask: true,})return new Promise((resolve, reject) => {let _locationChangeFn = (res) => {console.log('location change', res)let sonlinecopyId = wx.getStorageSync('lineId');const latitude = res.latitude;const longitude = res.longitude;let origin = longitude + ',' + latitude; //将经纬度拼接let destination = v.zhongdianweidu + ',' + v.zhongdianjingdu;console.log('当前经纬度---', origin)that.setData({latitude,longitude,['markers[0].latitude']: latitude,['markers[0].longitude']: longitude,['markers[1].latitude']: v.zhongdianjingdu,['markers[1].longitude']: v.zhongdianweidu,})that.getDrivingRoute(origin, destination); //路况划线//小车增加当前位置经纬度 latitude纬度updata(sonlinecopyId, latitude, longitude).then(res => {console.log('小车增加当前位置经纬度----', latitude, longitude)wx.hideLoading();})// wx.offLocationChange(_locationChangeFn)}wx.startLocationUpdate({success: (res) => {wx.onLocationChange(_locationChangeFn)resolve()},fail: (err) => {console.log('获取当前位置失败', err)wx.hideLoading()reject()}})})},// 开启权限openSetting() {let self = thiswx.openSetting({success(res) {console.log(res)if (res.authSetting["scope.userLocation"]) {// res.authSetting["scope.userLocation"]为trueb表示用户已同意获得定位信息,此时调用getlocation可以拿到信息self.authorization()}}})},// 特殊商户身份 获取小车经纬度getsmallCar() {wx.showLoading({title: '获取中...',mask: true,})let copyId = wx.getStorageSync('lineId');let v = this.data;v.timer = setInterval(() => {getdata(copyId).then(res => {if (res.data.code != 500) {let datas = res.data.data;let latitude = '',longitude = "";if (datas.msg == "未获取到司机实时位置!") {let arr = [];arr = v.scatterlongitude.split(',');latitude = arr[1];longitude = arr[0];} else {datas.weidu > 90 ? (latitude = datas.jingdu, longitude = datas.weidu) :(latitude = datas.weidu, longitude = datas.jingdu);}this.setData({latitude,longitude,['markers[0].latitude']: latitude,['markers[0].longitude']: longitude,['markers[1].latitude']: v.zhongdianjingdu,['markers[1].longitude']: v.zhongdianweidu,})let origin = longitude + ',' + latitude;let destination = v.zhongdianweidu + ',' + v.zhongdianjingdu;console.log('特殊商户身份 获取小车经纬度--', origin)this.getDrivingRoute(origin, destination); //路况划线wx.hideLoading();}else{wx.hideLoading();wx.showToast({title: '网络繁忙,请稍后再试!',icon:'none'})}})}, 5000);},// 获取小车信息getCarinfo() {let that = this;let sonlinecopyId = wx.getStorageSync('lineId');showdriverupdata(sonlinecopyId).then(res => {let datas = res.data.data;this.setData({carnub: datas.chepaihao,driverName: datas.driverName,begintime: datas.kaishi,peisonging: datas.peisongzhong,peisonglist: datas.daipeisong,zhongdianjingdu: datas.zhongdianjingdu,zhongdianweidu: datas.zhongdianweidu})// this.getLocation();console.log('小车信息----', datas);// that.authorization(); //小车身份地图if (that.data.tag == 1) {that.authorization(); //小车身份地图} else {that.getsmallCar() //特殊商户身份}})},onUnload() {clearInterval(this.data.timer);},onHide: function () {clearInterval(this.data.timer);},})

微信小程序---- 外卖小程序查看实时地图路线(骑手端用户端)【高德地图】相关推荐

  1. 基于微信点餐外卖小程序系统设计与实现 开题报告

      毕业论文 基于微信小程序外卖点菜系统 开题报告 学    院: 专    业: 年    级: 学生姓名: 指导教师: 黄菊华   XXXX大学本科生毕业论文(设计)开题报告书 姓   名 Xxx ...

  2. 基于微信点餐外卖小程序设计与实现 开题报告

      大学生毕业论文 基于JAVA后台微信小程序外卖点餐系统 开题报告 学    院: 专    业: 年    级: 学生姓名: 指导教师:   XXXX大学生毕业论文(设计)开题报告书 姓   名 ...

  3. android开发之高德地图API篇:1、高德地图API之实时定位+轨迹可视化

    TIME:2020年7月6日 高德地图API之实时定位+轨迹可视化 前言: step1.工程的配置 step2.显示地图 step2.实现静态定位: step3.实时定位 step4.实现轨迹可视化: ...

  4. 高德足迹地图在哪里,高德地图怎么点亮城市?高德地图足迹地图查看方法

    核心提示:高德地图新推出的足迹地图功能可是相当受欢迎,让你可以在移动端浏览自己曾驻足过的城市 高德地图新推出的足迹地图功能可是相当受欢迎,让你可以在移动端浏览自己曾驻足过的城市,看这一路走来经过的风景 ...

  5. 小程序毕业设计 基于微信点餐外卖小程序毕业设计开题报告功能参考

    效果图

  6. 废品回收小程序独立开发版V1.8.0含区域代理端回收员端用户端加盟入驻版本小程序源码

    本小程序全新独立开发Thinkphp为核心 演示请联系客服获取 搭建服务器要求:云服务器和已备案的域名 运行环境: PHP5.6+MySQL5.7+小程序+域名SSL 功能: 1.多级别权限:超管可招 ...

  7. 高德地图安卓 拖拽选点_不止微信支付宝 高德地图正式上线小程序入口

    此前,即速应用发布的<小程序2019年行业年中增长研究报告>指出,小程序发展周期主要分为四个阶段:探索期.启动期.高速发展期和成熟期,目前处于高速发展后期,逐渐平稳发展. 2017年小程序 ...

  8. uniapp 微信小程序 选择地图位置并返回经纬度及详细地址(uni.chooseLocation和高德地图api两种方式实现)

    uniapp 微信小程序实现选择地图位置功能 最近在做商家小程序,就是用于给实体店老板进行网上开店的小程序. 其中有一项功能就是获取商店的位置,要求支持:获取当前定位/检索到指定位置/地图选点等功能, ...

  9. 编程小石头点餐小程序_小程序点餐成为餐饮业行业趋势

    随着微信小应用程序的不断改进,正朝着适应完全市场发展,并且逐渐实现到这一点.扫码点餐结账一条龙的小程序,这有助于餐饮业成为大趋势. "排队一个小时,吃饭十来分钟."现在,排队等候晚 ...

最新文章

  1. rtsp流 转 http播放视频
  2. 适用于OpenGL离屏渲染上下文的初始化代码
  3. Kingsoft AntiVirus(金山毒霸) and av-comparatives organization
  4. electron forge 好用吗_在优麒麟上使用 Electron 开发桌面应用
  5. php封ip,php实现封IP功能[原创]
  6. 华为全球注册“hongmeng”商标;库克回应“封杀苹果”;Android Studio 3.5 Beta 4发布 | 极客头条...
  7. 《HTML与CSS入门经典(第8版)》——第2章 发布Web内容2.1 创建用于本章的示例文件...
  8. VMware-workstation 密钥
  9. uniapp创建电子签名
  10. 金蝶K3系统BOM数据批量审核/使用语句
  11. 微信卡包系列-添加微信卡券优惠券
  12. 大厂如何开发和部署前端代码?淘宝8年案例解读
  13. SSM框架中实现地图查询及ECharts直方图功能
  14. windows7 中pkeyconfig.xrm-ms文件无法删除解决办法
  15. 病毒式传播2.0时代的社交游戏开发5要素
  16. 如何修改ICO文件的尺寸
  17. Spark RDD用法
  18. 韩国李世龙19岁当爹 与洪瑛琦姐弟恋开花结果
  19. ElasticSearch 文档检索、查询建议、数据聚合
  20. 探讨位操作、算术右移、逻辑右移

热门文章

  1. [附源码]java毕业设计婴幼儿玩具共享租售平台
  2. 数组倒序 c语言算法
  3. Labview+STM32无线温湿度采集
  4. 【BZOJ 1455】罗马游戏
  5. [创业-13]:创业第7步 - 现金流与融资
  6. IT史上所出现的重大病毒
  7. 生活不止眼前的苟且,还有python和远方——认识Python
  8. Ubuntu18.04系统配置全记录——看完这一篇就够了
  9. 关于php 无法正常连接mysql 数据库,界面显示内部错误,返回值500
  10. 水晶报表中动态显示图片