更新记录
1.0.0(2026-11-03)
腾讯地图选点
平台兼容性
uni-app x(4.31)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
dl-qqmap-picker 腾讯地图选点(uni-app x / UTS)
将「腾讯地图选点」封装为可复用的 uni_modules UTS 插件,以页面跳转方式使用:宿主调用 openLocationPicker() 跳转插件全屏选点页,选点结果以 Promise 返回。
特性
- 地图选点 + 周边推荐列表(腾讯地图
place/v1/explore) - 底部面板可拖拽展开/折叠(占屏比例),地图与面板联动动画
- 独立搜索页(
place/v1/suggestion),支持主地点与子地点、历史记录 - 全端适配:web 走 JSONP、APP 走
uni.request,传输差异封装在common/mapHttp.uts - 敏感配置(LBS key、检索半径等)全部由宿主传入,插件零硬编码
- 蒸汽(Vapor)模式兼容
安装
- 将插件目录整体拷贝到宿主项目的
uni_modules/下,即得到uni_modules/dl-qqmap-picker/。 - 完成本 readme 的「宿主前置条件」。
使用(页面跳转模式)
import { openLocationPicker } from '@/uni_modules/dl-qqmap-picker/index.uts';
import type { PickedPoi } from '@/uni_modules/dl-qqmap-picker/common/index.uts';
const poi: PickedPoi | null = await openLocationPicker({
mapKey: 'YOUR_TENCENT_LBS_KEY', // 必填
initialLatitude: 39.90923,
initialLongitude: 116.397428,
searchRadius: 1000,
showSearch: true,
});
if (poi != null) {
console.log('选中的点位', poi);
} else {
console.log('用户取消选点');
}
打开选点页参数(LocationPickerOptions)
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
| mapKey | string | 必填 | 腾讯 LBS WebService key |
| initialLatitude | number | 39.90923 | 初始中心纬度 |
| initialLongitude | number | 116.397428 | 初始中心经度 |
| searchRadius | number | 1000 | 周边推荐检索半径(米) |
| pageSize | number | 20 | 分页条数(最大 20) |
| maxResultCount | number | 200 | 单次检索累计上限 |
| pickSearchRadius | number | 10 | 选点搜索的二次检索半径(米) |
| showSearch | boolean | true | 是否显示搜索入口 |
| scale | number | 15 | 地图缩放级别 |
| panelInitialRatio | number | 0.6 | 底部面板默认高度占屏比例 |
| panelExpandedRatio | number | 0.75 | 底部面板展开高度占屏比例 |
| showCrosshair | boolean | false | 是否在地图中心显示调试十字心(默认不显示) |
选点结果(PickedPoi)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 点位 id |
| title | string | 名称 |
| address | string | 地址 |
| distance | number | 距地图中心的距离(米) |
| latitude / longitude | number | 点位坐标 |
| adInfo | PoiAdInfo | 省市区信息(adcode/province/city/district) |
宿主页面注册
uni-app x 中 uni_modules 自带的页面也需在宿主 pages.json 显式注册,否则导航报 page is not found:
{
"path": "uni_modules/dl-qqmap-picker/pages/map-picker/map-picker",
"style": {
// #ifndef MP-ALIPAY
"navigationBarTitleText": "地图选点",
"navigationStyle": "custom",
// #endif
// #ifdef MP-ALIPAY
"allowsBounceVertical": "NO",
"transparentTitle": "auto",
// #endif
"disableScroll": true
}
},
{
"path": "uni_modules/dl-qqmap-picker/pages/map-search/map-search",
"style": {
// #ifndef MP-ALIPAY
"navigationBarTitleText": "地图选点",
"navigationStyle": "custom",
// #endif
// #ifdef MP-ALIPAY
"allowsBounceVertical": "NO",
"transparentTitle": "auto",
// #endif
"disableScroll": true
}
}
两页均建议 disableScroll: true、navigationStyle: "custom"(页面自带 dl-navbar 导航栏)。若宿主同时存在同名 dl-navbar 组件,需确认插件页面能解析到插件内 components/dl-navbar。
宿主前置条件
- 地图模块与 key:在
manifest.json配置<map>所需内容——app-android/app-ios:勾选uni-map模块;web:在web.sdkConfigs.maps.tencent.key配置腾讯地图 JS SDK key(用于<map>渲染)。
- 位置权限:开启
<map>与uni.getLocation所需的位置权限/隐私声明(APP 端遵循隐私政策)。 - 选点页与搜索页用到的腾讯 WebService key(
mapKey)在宿主运行时经openLocationPicker传入,非 manifest 配置项。
目录结构
dl-qqmap-picker/
├── index.uts # 入口:openLocationPicker(options)
├── package.json # uni_modules 插件元数据
├── readme.md
├── common/
│ ├── index.uts # 公共类型与常量
│ └── mapHttp.uts # 平台差异 HTTP 传输(web JSONP / 其他 uni.request)
├── components/
│ └── dl-navbar/dl-navbar.uvue # 插件自带导航栏
├── pages/
│ ├── map-picker/map-picker.uvue # 选点页(核心,全屏)
│ └── map-search/map-search.uvue # 独立搜索页
└── static/
├── point.png # 地图中心指针图标 由于uni-app x目前只支持unicode,故使用图片图标
└── fonts/iconfont.ttf # 图标字体(自包含)
已知限制 / 验证点
- uni_modules 页面路径与 easycom 自动注册依赖 uni-app x 的 uni_modules 规范,部署前请在宿主实际编译验证一次。
- iOS 端如果地图上提示‘鉴权失败,请检查你的Key’,请检查manifest.json配置的Key是否正确且授权并重新构建自定义基座。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 71
赞赏 0
下载 12736424
赞赏 1959
赞赏
京公网安备:11010802035340号