首页/新闻资讯/正文详情

微信小程序实战:Map 组件与位置 API 详解

发布时间:2026/11/6 10:06:37 来源:云帆数科 栏目:资讯中心
微信小程序实战:Map 组件与位置 API 详解
前言在微信小程序开发中地图功能如打车、外卖、导航等是非常常见的业务场景。微信官方提供了组件以及一系列位置相关的 API。今天我们将通过一个实战案例案例 4.9 map 组件实现一个包含地图展示、选择位置、打开位置功能的小程序并在基础要求上完成“在地图上添加 3 个自定义标记点Markers”的扩展作业。一、 核心知识点准备在开始编码前我们需要了解本次用到的核心 API 和配置组件小程序原生地图组件支持标记点markers、气泡callout等属性。wx.getLocation获取当前的地理位置、速度。wx.chooseLocation打开地图选择位置。wx.openLocation使用微信内置地图查看位置。权限配置自 2022 年起微信对地理位置接口进行了严格管控必须在 app.json 中声明 requiredPrivateInfos 和 permission。二、 项目配置准备图标在项目根目录下新建 images 文件夹放入三个图标图片如 location.png、marker1.png、marker2.png用于地图上的标记点。修改 app.json非常重要如果不配置这里调用 wx.getLocation 会直接报错。将以下配置加入你的 app.json 中json{“pages”: [“pages/index/index”],“window”: {“navigationBarTitleText”: “map组件”,“navigationStyle”: “custom”},“requiredPrivateInfos”: [“getLocation”,“chooseLocation”],“permission”: {“scope.userLocation”: {“desc”: “你的位置信息将用于小程序位置接口的效果展示”}},“style”: “v2”,“renderer”: “skyline”,“componentFramework”: “glass-easel”}(注若要正式发布上线还需要在微信公众平台后台的“开发管理-接口设置”中申请开通地理位置的接口权限且小程序类目需符合要求。)三、 页面布局与样式index.wxml布局非常直观上方是标题和地图组件下方是两个操作按钮。html地图组件应用示例mapid“myMap”class“map”longitude“{{longitude}}”latitude“{{latitude}}”scale“16”markers“{{markers}}”show-location选择位置 打开位置 2. index.wxss 根据 PPT 中的布局要求设置页面为 Flex 纵向布局并固定地图的高度。csspage {height: 100vh;display: flex;flex-direction: column;}map {margin: 20rpx 0;width: 100%;height: 700rpx;}.btnLayout {display: flex;flex-direction: row;justify-content: space-evenly;padding: 20rpx;}3. app.wxss (全局样式)css.box {margin: 20rpx;padding: 20rpx;border: 2rpx solid purple;}.title {font-size: 40rpx;font-weight: bolder;text-align: center;margin-bottom: 30rpx;color: #ff7d00;}四、 逻辑实现含扩展作业初始化 3 个标记点扩展作业打开 index.js我们在 onLoad 中初始化数据。为了完成扩展要求我们在 markers 数组中配置了 3 个对象并利用 callout 属性为它们添加了类似 PPT 中的文字气泡。javascriptPage({data: {// 初始经纬度以黑龙江东方学院附近为例latitude: 45.7033,longitude: 126.6383,markers: []},onLoad() {// 扩展作业初始化 3 个标记点this.setData({markers: [{id: 1,latitude: 45.7033,longitude: 126.6383,iconPath: ‘/images/location.png’,width: 40,height: 40,callout: {content: ‘我的位置’,color: ‘#000000’,fontSize: 14,borderRadius: 5,bgColor: ‘#ffffff’,padding: 5,display: ‘ALWAYS’, // 常驻显示气泡textAlign: ‘center’}},{id: 2,latitude: 45.7060, // 模拟坐标longitude: 126.6410,iconPath: ‘/images/marker1.png’,width: 35,height: 35,callout: {content: ‘第一学生公寓’,color: ‘#ffffff’,fontSize: 14,borderRadius: 5,bgColor: ‘#0052d9’, // 蓝色背景padding: 5,display: ‘ALWAYS’,textAlign: ‘center’}},{id: 3,latitude: 45.7000, // 模拟坐标longitude: 126.6360,iconPath: ‘/images/marker2.png’,width: 35,height: 35,callout: {content: ‘黑龙江东方学院南门’,color: ‘#ffffff’,fontSize: 14,borderRadius: 5,bgColor: ‘#ff0055’, // 红色背景padding: 5,display: ‘ALWAYS’,textAlign: ‘center’}}]});},// … 其他方法})2. 选择位置 打开位置继续在 index.js 中完善两个按钮的点击事件javascript// 选择位置chooseLocation() {wx.chooseLocation({success: (res) {console.log(res);// 将地图中心点移动到用户选择的位置this.setData({longitude: res.longitude,latitude: res.latitude});wx.showToast({ title: 已选择 res.name, icon: none }); }, fail: (err) { console.error(选择位置失败, err); } });},// 打开位置openLocation() {wx.getLocation({// 【踩坑提示】PPT 中写的 type: ‘gci02’ 是错的正确的坐标系是 ‘gcj02’type: ‘gcj02’,success: (res) {wx.openLocation({latitude: res.latitude,longitude: res.longitude,name: ‘我的当前位置’,address: ‘通过 wx.getLocation 获取’,scale: 18});},fail: (err) {console.error(“获取位置失败”, err);wx.showToast({title: ‘获取位置失败请检查手机定位权限’,icon: ‘none’});}});}五、 避坑指南与总结坐标系错误坑案例 PPT 第 16 页的代码截图中wx.getLocation 的 type 属性被写成了 ‘gci02’这会导致接口调用失败。正确的微信小程序标准坐标系应该是 ‘gcj02’。真机调试权限在微信开发者工具中调用 wx.getLocation 时可能需要在右上角“详情”-“本地设置”中勾选“不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书”。如果在真机上测试务必确保手机开启了微信的定位权限。Marker 气泡布局callout 属性非常实用。设置 display: ‘ALWAYS’ 可以让气泡常驻显示配合 bgColor、padding 和 borderRadius可以完美还原 PPT 作业中要求的多种颜色标签样式。结语通过这个案例我们不仅掌握了小程序组件的使用还打通了 getLocation、chooseLocation 和 openLocation 三大地理 API 的联动逻辑。同时通过扩展 3 个标记点的练习熟悉了 markers 数组的数据绑定方式为后续开发 LBS基于位置的服务类应用打下了坚实基础。

相关推荐

化工分离过程仿真系列教程(16):非均相体系与化学平衡耦合分离——K/D 不是纯物性时的账本
化工分离过程仿真系列教程(16):非均相体系与化学平衡耦合分离——K/D 不是纯物性时的账本

化工分离过程仿真系列教程(16):非均相体系与化学平衡耦合分离——K/D 不是纯物性时的账本版本声明块 工具基线:aspenONE V15;反应精馏(RadFrac 覆盖反应精馏——Study Guide 口径)、化学吸收与反… · 2026/11/6 10:06:37

我把公司钥匙交给了本地,查出 5 个致命漏洞
我把公司钥匙交给了本地,查出 5 个致命漏洞

副标题:从"云端全托管"到"密钥留本地"——一代安全重构是怎么逼出来的一、引子那张安全审计报告,我到现在还留着。不是因为它有多复杂,而是因为它改变了我对"安全"这两个字的理解。报告开头写了一句话&#xf… · 2026/11/6 10:05:34

10-04-互操作-NativeContainer深度解析
10-04-互操作-NativeContainer深度解析

NativeContainer 深度解析篇章:10-核心技术-托管互操作篇 | 阅读时间:约 45 分钟一、引言NativeContainer 是 Unity 在非托管内存上实现的数据结构系列,是 Job System 和 ECS 的数据基础设施。它们在非托管堆上分配内存,完全绕过 … · 2026/11/6 10:04:34

Powershell远程管理服务器客户端
Powershell远程管理服务器客户端

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:49:27

Java 开发日记高级~
Java 开发日记高级~

Java.慈祥的开发日记 Java基础语法 SSM学习专栏 JDK8 新特性 Linux服务器开发使用 环境搭建🤖 Linux 基础入门学习 Docker K8S部署使用 Docker入门学习Docker网络 Git 和 Github 项目管理工具 分布式版本控制系统Git分布式版本控制系统Git 二:… · 2026/11/6 10:49:27

主模式RTL设计:状态机与三态驱动的物理实现
主模式RTL设计:状态机与三态驱动的物理实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:47:25

GitHub镜像站搭建指南:提升代码仓库访问效率
GitHub镜像站搭建指南:提升代码仓库访问效率

1. 项目背景与核心价值 国内开发者在使用GitHub时经常遇到访问不稳定、克隆速度慢等问题。搭建本地镜像站能够显著提升代码仓库的访问效率,特别适合企业级开发团队或高校实验室等需要频繁与GitHub交互的场景。不同于简单的代理方案,完整的镜像站可以实现… · 2026/11/6 10:45:21

错题本数字化与高效学习方法论
错题本数字化与高效学习方法论

1. 错题整理的价值与方法论 错题本是每个学习者都应该拥有的秘密武器。2013年的错题整理看似是过去式,但其中蕴含的学习方法论却具有永恒价值。我至今仍保留着2013年那本已经泛黄的错题本,它不仅记录了我当年的知识盲区,更见证了我的学习轨迹… · 2026/11/6 10:45:21

企业应收账款数字化管理解决方案与实施指南
企业应收账款数字化管理解决方案与实施指南

1. 应收账款管理的行业痛点应收账款管理一直是企业财务流程中最容易出问题的环节之一。根据某商业信用管理协会的调研数据显示,超过67%的中小企业都曾因应收账款管理不善导致现金流断裂。传统管理方式主要依赖Excel表格和纸质单据,业务员需要手动记录每笔… · 2026/11/6 10:45:21

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码