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

server/2025/2/9 5:30:40/

在现代移动应用中,地图导航功能已成为必不可少的一部分。通过地图 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/server/166134.html

相关文章

企业FTP替代升级,实现传输大文件提升100倍!

随着信息技术的飞速发展&#xff0c;网络安全环境也变得越来越复杂。在这种背景下&#xff0c;传统的FTP&#xff08;文件传输协议&#xff09;已经很难满足现代企业对文件传输的需求了。FTP虽然用起来简单&#xff0c;但它的局限性和安全漏洞让它在面对高效、安全的数据交换时…

用 Python 给 Excel 表格截图(20250207)

我搜索了网络上的方案&#xff0c;感觉把 Excel 表格转换为 HTML 再用 platwright 截图是比较顺畅的路径&#xff0c;因为有顺畅的工具链。如果使用的是 Windows 系统则不需要阅读此文&#xff0c;因为 win32com 库更方便。这篇文章中 Excel 转 HTML 的方案&#xff0c;主要弥补…

TaskBuilder项目实战:创建项目

用TaskBuilder开发应用系统的第一步就是创建项目&#xff0c;项目可以是一个简单的功能模块&#xff0c;也可以是很多功能模块的集合&#xff0c;具体怎么划分看各位的实际需要&#xff0c;我们一般会将相互关联比较紧密的一组功能模块放到一个独立的项目内&#xff0c;以便打包…

基于javaweb的SpringBoot小区智慧园区管理系统(源码+文档+部署讲解)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 运行环境开发工具适用功能说明 运行环境 Java≥8、MySQL≥5.7、Node.js≥14 开发工具 后端&#xff1a;eclipse/idea/myeclipse…

DeepFM:融合因子分解机与深度学习的CTR预测模型

引言 点击率&#xff08;Click-Through Rate, CTR&#xff09;预测是推荐系统和计算广告领域的核心任务。传统方法通常依赖人工特征工程或单一模型架构&#xff0c;难以同时捕捉低阶与高阶特征交互。为了克服这些限制&#xff0c;研究者们不断探索新的模型架构&#xff0c;以更…

基于ArcGIS的SWAT模型+CENTURY模型模拟流域生态系统水-碳-氮耦合过程研究

流域是一个相对独立的自然地理单元&#xff0c;它是以水系为纽带&#xff0c;将系统内各自然地理要素连结成一个不可分割的整体。碳和氮是陆地生态系统中最重要的两种化学元素&#xff0c;而在流域系统内&#xff0c;水-碳-氮是相互联动、不可分割的耦合体。随着流域内人类活动…

ansible自动化运维

ansible自动化运维 1、实现远程连接主机 2、批量配置&#xff0c;批量操作&#xff0c;ansible可以对主机进行组划分&#xff0c;也可以把名下所有的主机进行划分&#xff0c;进行批量的操作。 3、远程自动化运维&#xff08;脚本-------------playbook剧本&#xff09; an…

自定义飞书Webhook机器人api接口

自定义飞书Webhook机器人api接口 使用方法&#xff1a; 在网站目录新建一个名为api.php的文件&#xff0c;将以上代码粘贴进去即可 然后访问域名/api.php?title洛小柒 - QQ沐编程&content小柒祝大家新年快乐&#xff01;&urlwww.qqmu.com&type1 title是标题 con…