尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
微信小程序实战: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基于位置的服务类应用打下了坚实基础。
RELATED

相关推荐

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

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

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

📅 2026/11/6 10:09:14
Java后端开发必看:收藏这份AI转型指南,轻松入局高薪AI赛道!

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

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

📅 2026/11/6 10:04:13
掌握RAG,让AI像“查资料”一样回答问题——新手程序员必备收藏指南!

掌握RAG,让AI像“查资料”一样回答问题——新手程序员必备收藏指南!

本文深入讲解了RAG的核心原理、知识库构建流程及三种架构(2-Step、Agentic、Hybrid),帮助读者理解如何让AI基于知识库检索信息并生成准确回答。文章涵盖了从文档加载到向量存储的完整流程,并提供了实际应用场景及架构选择建议&…

📅 2026/11/6 10:04:13
MORE NEWS

更多资讯

📰

Qt飞机大战源码解析:QGraphicsView游戏循环与碰撞检测实战

简介:这份资源是面向Qt初学者与游戏开发入门者的「飞机大战」完整项目源码包,围绕Qt框架在经典空战游戏中的实际应用展开,可用于课程设计、自学练手或二次开发参考。压缩包共223个文件,约6.21MB,以105个C头文件与32个c…

📰

老牌CMS XSS反复出现:漏洞排查与安全加固实践

开头先说明:这次分享的主题不是教人怎么打,而是围绕一款老牌开源内容管理系统(下面统一用“老系统”代称)反复被通报的 XSS 问题,聊聊这些漏洞为什么总也修不完、它们和后台被写入文件之间到底是什么关系,以…

📰

HarmonyOS自定义背景二维码生成技术解析

1. 项目背景与核心需求 在移动应用开发中,二维码功能已经成为连接线上线下场景的重要桥梁。传统二维码往往只包含简单的黑白方块图案,缺乏视觉吸引力和品牌辨识度。这次我们要实现的是在HarmonyOS应用开发中生成带有自定义背景图片的二维码,这…

📰

基于CDC的MySQL实时数据同步方案实践

1. 项目背景与核心价值 在数据驱动的业务场景中,数据库表间数据同步是个高频需求。我最近在电商订单系统中就遇到了这个问题:订单主表数据变更后,需要实时同步到统计分析表和风控表。传统的手动同步或定时任务方式存在延迟高、易出错的问题&a…

📰

JSP农贸交易系统开发与智能撮合算法实践

## 1. 项目概述与核心价值农贸产品交易系统是连接农产品生产端与消费端的重要数字化桥梁。这个基于JSP技术的交易平台(项目编号g3608)完整包含了程序源码、数据库设计、部署指南和开发环境配置,是一套开箱即用的农产品B2B解决方案。我在参与某…

📰

2025年3D建模工具选型实战指南:按工作流断点匹配生产力

1. 这不是选软件,是选你未来三年的“数字手”——为什么2025年建模工具选择比以往任何时候都更关键 2025年做3D建模,你面对的早已不是“用哪个软件画个模型”这么简单的事。它直接决定你能不能接单、能不能按时交付、能不能把想法一秒变现实、甚至决定你…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬