微信小程序地图开发总结-规划路线

devtools/2025/2/11 13:14:44/

在现代移动应用中,地图导航功能已成为必不可少的一部分。通过地图 API,我们可以轻松地在应用中集成位置服务和路径规划功能。本篇文章将带大家一起实现一个简单的路径导航功能,使用腾讯地图 API结合小程序>微信小程序,实现从当前位置到目标地点的路线规划和展示。

需求概述

我们需要实现以下功能:

  1. 获取用户当前的位置信息(经纬度)。
  2. 从后台获取目的地的经纬度。
  3. 使用腾讯地图的方向查询 API 获取起点到终点的驾车路线。
  4. 在地图上绘制路线和显示起点、终点的位置。

实现步骤

首先,我们需要安装腾讯地图 SDK。在小程序>微信小程序中使用腾讯地图 API,你需要创建一个腾讯云账号并获取到开发者密钥(Key)。

安装腾讯地图 SDK: 将腾讯地图 SDK 的 JavaScript 文件下载并放置到项目的 utils 目录下。例如,下载并使用 qqmap-wx-jssdk1.2 文件。

 初始化项目

小程序app.js 中,首先引入腾讯地图 SDK,之后我们可以在页面中使用该 SDK 进行路径规划。

// 引入腾讯地图 SDK
var QQMapWX = require('../../utils/qqmap-wx-jssdk1.2/qqmap-wx-jssdk');
const api = require('../../utils/api.js');// 实例化腾讯地图 API 核心类
var qqmapsdk = new QQMapWX({key: 'HLBBZ-UXNCV-OUOPC-5AT7V-Y3UG6-UYB5U'  // 请替换成您自己的腾讯地图 API 密钥
});

页面逻辑实现

接下来我们实现小程序>微信小程序的页面逻辑,首先在 onLoad 生命周期函数中请求后端接口获取目的地的位置,然后通过 wx.getLocation() 获取当前用户的位置,再调用腾讯地图的 direction API 获取路径规划。
 

Page({data: {// 起点经纬度srcLat: null,srcLng: null,// 终点经纬度dstLat: null,dstLng: null,latitude: '',longitude: '',polyline: [],mapData: []},onLoad() {var _this = this;// 请求后端接口获取目的地位置api.post('/app/map/index', { map_id: 16 }).then((data) => {console.log(data.data[0]);this.setData({dstLat: data.data[0].lat,   // 终点纬度dstLng: data.data[0].lng    // 终点经度});}).catch((err) => {console.error('请求失败', err);});// 获取当前位置wx.getLocation({type: 'wgs84',  // 获取经纬度,默认为 wgs84success(res) {_this.setData({srcLat: res.latitude,   // 当前纬度srcLng: res.longitude   // 当前经度});// 调用腾讯地图 API 计算路线qqmapsdk.direction({mode: 'driving',  // 驾车模式from: {latitude: _this.data.srcLat,longitude: _this.data.srcLng},to: {latitude: _this.data.dstLat,longitude: _this.data.dstLng},success: function (res) {console.log(res);var coors = res.result.routes[0].polyline, pl = [];// 坐标解压(前向差分压缩)var kr = 1000000;for (var i = 2; i < coors.length; i++) {coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;}// 将解压后的坐标放入点串数组 pl 中for (var i = 0; i < coors.length; i += 2) {pl.push({ latitude: coors[i], longitude: coors[i + 1] })}console.log(pl);// 设置 polyline 属性,绘制路线_this.setData({latitude: pl[0].latitude,longitude: pl[0].longitude,polyline: [{points: pl,color: '#449afb',width: 4}]});},fail: function (error) {console.error(error);},complete: function (res) {console.log(res);}});},fail(error) {console.error('获取当前位置失败:', error);}});}
});

展示地图和路径

我们在 wxml 文件中,使用小程序>微信小程序提供的 <map> 组件来展示地图,并通过 polyline 属性绘制路径。

<view class="container"><map longitude="{{longitude}}" latitude="{{latitude}}" scale="16" polyline="{{polyline}}" markers="{{markers}}" show-compass enable-3D enable-overlooking enable-zoomstyle="width: 100%; height: 500px;"></map>
</view>

通过 latitudelongitude 来设置地图的初始中心位置,通过 polyline 来绘制起点到终点的路径。polyline 是一个包含多个点(经纬度)的数组,路线会依次连接每个点,展示出路径的轨迹

总结

在本篇文章中,我们使用腾讯地图 API 和小程序>微信小程序实现了一个简单的路径导航功能,展示了如何获取用户当前位置,计算从起点到终点的路径,并在小程序中展示该路径。通过结合腾讯地图的方向查询 API 和小程序>微信小程序的地图组件,我们可以快速地开发出强大的地图导航功能。

如果你对地图开发感兴趣,可以深入学习腾讯地图的更多 API 功能,例如:兴趣点查询、周边搜索、路线规划等


http://www.ppmy.cn/devtools/157938.html

相关文章

机器视觉3D相机分哪些

机器视觉中的3D相机主要分为以下几类&#xff1a; 结构光相机 原理&#xff1a;通过投射特定光图案&#xff08;如条纹或点阵&#xff09;到物体表面&#xff0c;利用摄像头捕捉变形图案&#xff0c;计算深度信息。 优点&#xff1a;精度高&#xff0c;适合静态场景。 缺点&…

服务器重启后报Predis_ServerException: Client sent AUTH, but no password is set

Redis问题产生后,处理办法 2025/02/08 11:21:43 [error] [exception.Predis_ServerException] Predis_ServerException: Client sent AUTH, but no password is set in /www/wwwroot/er/protected/extensions/redis/Predis.php:573 Stack trace: #0 /www/wwwroot/er/protected…

怎么查看电脑显存大小(查看电脑配置)

这里提供一个简单的方法查看 winr打开cmd 终端输入dxdiag进入DirectX 点击显示查看设备的显示内存&#xff08;VRAM&#xff09; 用这个方法查看电脑配置和显存是比较方便的 dxdiag功能 Dxdiag是Windows的DirectX诊断工具&#xff0c;其主要作用包括但不限于以下几点&#…

Mixture of Experts(专家混合模型)深入解析:突破传统神经网络的计算瓶颈

在深度学习领域&#xff0c;随着模型规模的不断扩大&#xff0c;计算资源的需求也变得愈发庞大。为了解决这一问题&#xff0c;许多新兴的模型架构开始涌现&#xff0c;其中 Mixture of Experts (MoE)&#xff08;专家混合模型&#xff09;因其高效的计算方式&#xff0c;成为了…

c/c++蓝桥杯经典编程题100道(19)质因数分解

汉诺塔问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 汉诺塔问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1&#xff1a;递归法&#xff08;难度★&#xff09; 解法2&#xff1a;迭代法&#xff08;难度★★★&#xff09; 四、C实现 解法1&#xff1…

k8s ingress-nginx-controller 0.46.0 升级到 1.6.4

官网文档提到&#xff0c;只需替换镜像版本即可升级 ingress-nginx-controller 官方文档升级 寻找对应的ingress-nginx-controller版本 因为是 k8s 版本升级到1.24后导致的不兼容&#xff0c;所以我们要找到对应的版本的ingress 寻找对应版本地址 我们找到了比较合适的1.6.4…

【Python深入浅出】Python3中os模块:开启系统交互的万能钥匙

目录 一、引言&#xff1a;os 模块初印象二、os 模块基础操作2.1 文件与目录操作2.1.1 创建操作2.1.2 读取操作2.1.3 删除操作2.1.4 信息获取 2.2 系统信息获取与环境变量管理2.2.1 系统信息获取2.2.2 环境变量管理 2.3 进程管理与工作目录操作2.3.1 进程管理2.3.2 工作目录操作…

Ubuntu 下 nginx-1.24.0 源码分析 - NGX_HAVE_GETTIMEZONE 宏

表示当前平台支持通过 gettimezone() 直接获取时区偏移值&#xff08;以分钟为单位&#xff09; 该宏用于适配不同操作系统对时区信息获取方式的差异。 当 NGX_HAVE_GETTIMEZONE 被定义时&#xff0c;Nginx 会调用 ngx_gettimezone() 获取时区偏移 在 Ubuntu 环境下&#xff0c…