x-tianditumap-u 天地图
天地图地图组件。支持 marker、折线、多边形、圆、图片图层和视野控制。不含定位,定位请用 x-location-s。
Key 在 天地图开发者中心 申请浏览器端 Key。App / 鸿蒙的 web-origin 要和 Key 白名单一致。
兼容性
| Harmony | IOS | Android | WEB | 小程序 |
|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 |
调用
vue
<x-tianditumap-u
ref="mapRef"
:api-key="apiKey"
web-origin="https://你的域名"
:longitude="115.853080"
:latitude="28.686340"
:scale="12"
:markers="markers"
@ready="onReady"
@error="onError"
></x-tianditumap-u>ts
const markers = [
{ id: 1, longitude: 115.853080, latitude: 28.686340 }
] as XTiandituMapMarker[]
mapRef.value?.moveToLocation({
longitude: 115.85,
latitude: 28.68
})参数
| 字段 | 说明 | 默认 |
|---|---|---|
| apiKey | 天地图 Key | "" |
| webOrigin | 域名白名单,Web 空则用当前 origin | "" |
| coordType | gcj02 / wgs84 | gcj02 |
| longitude / latitude | 中心点 | 0 |
| scale | 缩放 | 16 |
| minScale / maxScale | 缩放范围 | 3 / 20 |
| layerType | normal / satellite / terrain | normal |
| showLabel | 地名标注 | true |
| markers / polyline / polygons / circles | 覆盖物 | [] |
| includePoints | 视野包含的点 | [] |
| enableZoom / enableScroll / enableRotate | 手势 | true |
| catchGesture | 挡住父级滚动,仅 App,初始化后不可改 | false |
| rpcTimeout | 桥接超时 ms | 10000 |
| isDev | 调试浮层 | false |
未传 iconPath 时 App / Web 用内置定位针,微信为官方红点。自定义图标可配 width / height / anchor。微信网络图标需配置 downloadFile 合法域名。
事件
| 名称 | 参数 | 说明 |
|---|---|---|
| ready | { provider, coordType } | 地图初始化完成 |
| markertap | 标记点信息 | 点击标记 |
| callouttap | 标记点信息 | 点击标记气泡 |
| labeltap | 标记点信息 | 点击标记文字 |
| controltap | 控件信息 | 点击自定义控件 |
| regionchange | 视野信息 | 视野变化 |
| click | { longitude, latitude } | 点击地图空白处 |
| poitap | POI 信息 | 点击 POI |
| polylinetap | 折线信息 | 点击折线 |
| updated | 更新信息 | 地图渲染更新 |
| interpolatepoint | 插值点 | 标记动画过程中的位置 |
| abilitysuccess / abilityfail | 能力调用结果 | 能力调用成功 / 失败 |
| authsuccess | 鉴权信息 | Key 鉴权成功 |
| error | { errCode, errMsg } | 发生错误 |
方法
| 名称 | 需要 | 说明 |
|---|---|---|
| getCenterLocation | 可选 success / fail / complete | 取当前中心点经纬度 |
| moveToLocation | longitude?、latitude?,不传则回中心 | 移动到指定坐标 |
| translateMarker | 标记 id、目标坐标等 | 平滑移动指定标记 |
| includePointsToView | 点数组 | 缩放视野以包含这些点 |
| getRegion | 可选回调 | 取当前视野四角 |
| getScale | 可选回调 | 取当前缩放级别 |
| addMarkers | markers,可选 clear 先清空 | 增量添加标记 |
| removeMarkers | 标记 id 数组 | 按 id 移除标记 |
| moveAlong | 标记 id、路径点、时长 | 沿路径移动标记 |
| addGroundOverlay | 图片图层配置 | 添加地面图片图层 |
| updateGroundOverlay | 图层 id 与更新字段 | 更新地面图片图层 |
| removeGroundOverlay | 图层 id | 移除地面图片图层 |
| getState | 无 | 同步返回当前地图状态 |
平台差异
- 微信映射官方
<map>,坐标系按coordType转换。 catchGesture仅 App 三端,初始化后不能改。
版本
版权归https://xui.tmui.design你不得修改及二次开发,仅供TMUI4会员商用使用。不得转给非VIP会员使用,一经查实数倍赔偿,并追究法律责任。
更新日志
1.1.1
修复
- 组件对外点击事件由
tap改为click:tap与 uni-app-x 内置触摸事件同名冲突,鸿蒙端@tap会被编译为原生触摸监听而非组件emit,且触摸事件对象含元素引用,整体序列化曾触发 OOM 闪退。内部桥接协议与小程序原生@tap保持不变。 - marker 缺省图标:
XTiandituMapMarker未传iconPath时 App 三端 / Web 端显示内置默认定位针图标,修复addMarkers/translateMarker/moveAlong无可见效果的问题(微信 mapmarkers.iconPath为必填,天地图T.Marker无 icon 不可见)。 - 微信端 marker 尺寸对齐:
markers未显式传width/height时统一按 32×32 渲染,避免按图片实际尺寸/默认红点导致的图标过小(网络iconPath加载失败会回退默认红点,需在小程序后台配置downloadFile合法域名)。 - Android / 鸿蒙资源白名单放宽:
isAllowedResource放行用户提供的 https 子资源(markericonPath远程图标等),修复自定义 CDN 图标被shouldInterceptRequest/onInterceptRequest拦成 403 不显示的问题;页面跳转仍由导航拦截,脚本/网络请求仍由 CSP 限定。
特性
- 鸿蒙端 Web 组件对齐 Android/iOS:开启
domStorageAccess、注入 Android 移动端 UA 关键字,修复天地图 JS API 的 localStorage 与触摸手势识别。
1.1.0
特性
- 新增
catchGesture属性:App 三端(Android / iOS / 鸿蒙)操作地图时阻止手势冒泡到父级滚动容器,解决地图嵌在scroll-view中拖动/缩放被抢走的问题。默认false,初始化生效,不支持动态切换;Web / 微信小程序端接受但不处理。
1.0.0(2025-08-07)
首个正式版本。
特性
- 多端地图视图组件,一套代码覆盖 Android / iOS / 鸿蒙 / Web / 微信小程序。
- 覆盖物:marker、polyline、polygon、circle、control、groundOverlay。
- 视图控制:
getCenterLocation、moveToLocation、getRegion、getScale、includePointsToView。 - 标记能力:
addMarkers、removeMarkers、translateMarker、moveAlong(含动画插值回调)。 - 图片图层:
addGroundOverlay、updateGroundOverlay、removeGroundOverlay。 - 完整事件:
ready、markertap、callouttap、labeltap、controltap、regionchange、tap、poitap、polylinetap、updated、interpolatepoint、abilitysuccess、abilityfail、authsuccess、error。 - 坐标系支持
wgs84/gcj02,微信小程序端自动对齐官方<map>坐标系。 isDev调试浮层:握手成功且isDev=true才显示,生产默认隐藏。
说明
- 本组件为纯地图视图,不含定位(getLocation)能力,定位请使用独立定位插件。
- App / 鸿蒙端基于原生 WebView 承载天地图 JS API,修改原生依赖后需重打自定义基座。
