uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)

本文介绍了在uniapp微信小程序平台上,如何使用腾讯地图进行位置标点,包括申请开发者密钥、设置安全域名、引入地图SDK等步骤,并提供了详细的代码示例,帮助开发者实现地图上的自定义标记点功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图

在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。

uniapp Vue3和Vue2都能用,你只需要复制代码,改个标记图标和位置即可。

在这里插入图片描述

详细步骤

### 实现 UniApp微信小程序腾讯地图选点并获取省市区 #### 准备工作 为了在 UniApp 开发环境中集成腾讯地图 API 并实现选择地点以及获取对应的省市区信息,需要完成如下准备工作: - 注册并登录腾讯位置服务平台账号,在应用管理页面创建新应用,并记录下分配的应用 Key[^3]。 - 进入微信公众平台的小程序官方后台,在设置下的第三方服务中的插件管理部分添加“腾讯位置服务地图选点”和“腾讯位置服务城市选择器”的插件申请[^2]。 #### 编写代码逻辑 ##### 初始化地图组件 确保项目中已安装 `@dcloudio/uni-ui` 组件库以便于使用内置的地图组件。接着可以在页面配置文件中引入腾讯地图 SDK 及其样式表: ```html <template> <view class="container"> <!-- 地图容器 --> <map id="myMap" :longitude="location.longitude" :latitude="location.latitude"></map> <!-- 显示地址详情 --> <text>{{ addressInfo }}</text> <!-- 添加按钮用于触发重新定位或确认所选项 --> <button @click="getCurrentLocation">更新我的位置</button> <button @click="confirmSelection">确认选择的位置</button> </view> </template> ``` ##### JavaScript 部分处理函数定义 接下来编写主要业务逻辑来初始化地图实例、监听用户交互事件(比如拖拽结束)、请求反向地理编码接口以获得详细的行政区划数据等操作。 ```javascript <script> export default { data() { return { location: { longitude: '', latitude: '' }, // 当前坐标点经纬度 addressInfo: '正在加载...', // 展示给用户的地址描述文字 mapContext: null, // 存储地图上下文对象引用 }; }, onLoad(options) { this.initMap(); }, methods: { initMap() { const that = this; wx.getLocation({ type: 'gcj02', success(res) { that.location = res; // 设置初始中心点为当前位置 // 创建地图上下文环境并与 HTML 页面上的 map 标签关联起来 that.mapContext = uni.createMapContext('myMap', this); // 订阅地图状态变化通知,特别是标记被移动后的回调 that.mapContext.onMarkerTap(() => {}); that.mapContext.onRegionChangeEnd((e) => { if (e.causedBy === "drag") { that.getAddressFromCoordinates(that.location); // 移动后立即查询新的位置信息 } }); }, fail(err) { console.error("Failed to get current location:", err); } }); // 请求一次默认的当前位置解析 this.getCurrentLocation(); }, getCurrentLocation() { let that = this; wx.chooseLocation({ // 使用 chooseLocation 方法可以更方便地让用户手动挑选具体位置 success(res) { that.location = res; that.getAddressFromCoordinates(res); }, fail(err) { console.log(`chooseLocation failed:${JSON.stringify(err)}`); } }) }, getAddressFromCoordinates(locObj) { var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js').QQMapWX; var qqmapsdk = new QQMapWX({ key: '您的腾讯地图Key' // 替换成自己申请的有效密钥 }); qqmapsdk.reverseGeocoder({ location: locObj, success(response){ this.addressInfo = response.result.ad_info.province + ',' + response.result.ad_info.city + ',' + response.result.ad_info.district ; }, fail(error){ console.warn("Reverse geocoding error",error); } }); }, confirmSelection(){ // 用户点击确认按钮之后的操作... alert(this.addressInfo); } } } </script> ``` 上述代码实现了通过调用微信提供的 `getLocation()` 接口自动获取设备所在地理位置作为起点;利用 `createMapContext()` 构建了一个与 `<map>` 元素绑定在一起的对象来进行后续控制;每当检测到地图视窗发生改变时都会尝试去刷新最新的行政区域名称展示给前端用户查看;最后还提供了两个按钮分别用来刷新最新位置或是提交最终选定的结果。 #### 注意事项 - 应用过程中务必注意保护好自己的 API 密钥安全,防止泄露造成不必要的损失。 - 对外暴露的服务端接口应当做好必要的鉴权校验措施,避免恶意访问带来的风险。 - 如果遇到性能瓶颈或者其他技术难题建议查阅官方文档寻求帮助或者联系技术支持团队解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十一猫咪爱养鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值