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

发布时间:2026/11/6 10:10:20

微信小程序实战: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基于位置的服务类应用打下了坚实基础。
延伸阅读

更多相关文章

2026/11/6 10:10:20

05-分布式锁:从 SETNX 到 Redlock 的可靠性边界

分布式锁:从 SETNX 到 Redlock 的可靠性边界一、切换窗口里的那一次超卖 第 04 篇结尾说:高可用解决了机器故障,但主从切换是有窗口的,窗口里的并发写依然有风险。这句话在我们这里兑现成了一次超卖。 秒杀开抢前一分钟&#xff0…

2026/11/6 10:05:17

Java后端开发必看:收藏这份AI转型指南,轻松入局高薪AI赛道!

Java后端开发在AI时代面临冲击,但并非“凉了”。企业更需懂AI的复合型人才。建议Java开发者升级技能,学习AI应用与智能体开发,薪资有望上涨40%以上。 今年招聘市场变化真大,尤其是后端开发相关的岗位。有很多同学在社交平台发帖质…

2026/11/6 10:50:30

主模式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:50:30

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:50:30

Java 开发日记高级~

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

2026/11/6 10:45:29

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

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

2026/11/6 10:45:29

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

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

2026/11/6 10:45:29

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

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

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/6 10:49:01

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* 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:03:39

MCU晶振电路设计全解析:从负载电容计算到PCB布局调试

/* 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 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/6 10:49:01

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑