更新记录

1.0.0(2025-12-23)

  • 初始版本
  • 支持 Android、iOS、HarmonyOS 三端
  • 定位功能:单次定位、持续定位
  • 地图功能:地图显示、控制、手势、Marker、折线、圆形、多边形
  • 搜索功能:POI 搜索、地理编码、逆地理编码
  • 导航功能:驾车导航、步行导航、骑行导航

平台兼容性

uni-app x(4.87)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序
- - 5.0 1.0.0 12 1.0.0 12 1.0.0 -

pow-tmapx 腾讯地图 UTS 插件

  • 腾讯地图+定位+导航 UTS 插件,支持 Android、iOS、HarmonyOS 三端。
  • 仅支持 uniappx 项目

功能特性

已支持

  • 定位功能

    • 单次定位
    • 持续定位
    • 停止定位
    • 后台定位
    • 定位权限检查
  • 地图功能

    • 地图显示
    • 地图类型切换(普通/卫星/夜间/3D沉浸)
    • 地图控制(中心点、缩放级别)
    • 路况显示
    • 指南针、比例尺控制
    • 手势控制(缩放/拖拽/旋转/倾斜)
    • 自身位置显示
  • 覆盖物功能

    • Marker 标注(支持气泡callout)
    • 折线
    • 纹理折线
    • 圆形
    • 多边形
  • 搜索功能

    • 关键词搜索 POI
    • 周边搜索 POI
    • 地理编码(地址转坐标)
    • 逆地理编码(坐标转地址)
  • 导航功能

    • 驾车导航
    • 步行导航
    • 骑行导航
    • 货车导航
    • GPS实时导航
    • 模拟导航
    • TTS语音播报
  • 工具功能

    • 距离计算
    • 面积计算
    • 坐标转换

使用方式

  1. 在插件市场导入本插件到工程中(试用也可以)
  2. 项目根目录manifest.json 的安卓配置targetSdkVersion33 或者以上
  3. 【鸿蒙】把示例工程根目录中的harmony-configs复制到自己工程根目录
  4. 【鸿蒙】鸿蒙不用打自定义基座,直接仿照示例工程中的 index.uvue 中的getHarmonyAppId()方法,在自己项目中调用getHarmonyAppId()获取鸿蒙的 专属appIdentifier
  5. 申请腾讯地图的key
    1. 鸿蒙要把专属appIdentifier粘贴到腾讯地图key的申请页面
    2. 如果要用 poi 搜索功能,需要勾选 webservice 并且把 secretkey 复制下来,传到下一步骤中的 setTencentKey
  6. 【鸿蒙,安卓,iOS】在App.uvue中的onLaunch方法中,调用插件的setTencentKey方法
  7. 【安卓,iOS】打自定义基座(鸿蒙不需要打)
  8. 【安卓,iOS】运行到自定义基座,【鸿蒙】直接运行
  9. 【鸿蒙,安卓,iOS】参考示例工程的index.uvue中的申请定位权限,单次定位,持续定位方法
  10. 【鸿蒙】鸿蒙平台如果想调用持续后台定位,需要参考示例工程的App.uvue,在自己工程的App.uvueonShow调用tmapOnAppShow(),在onHide调用tmapOnAppHide()
  11. 导航使用方式可以仿照powtmap/pages/index/tmap-navi-view.uvue创建一个导航页面,然后仿照powtmap/pages/index/navi.uvue来设置导航参数
  12. 【HBuilderX的bug】【鸿蒙】4.87以及之前的hbx,试用插件鸿蒙端无法运行,不是插件问题,是 hbx 问题,要先这样绕过:把插件中的 项目根目录/uni_modules/pow-tmapx/components 目录剪切,粘贴到 uni_modules 之外,让 components 目录和 uni_modules 目录平级,变成 项目根目录/components,然后就能正常运行了

3. 定位功能

import { 
    getTencentLocation,
    startTencentLocation,
    stopTencentLocation,
    checkAndRequestLocationPermission
} from '@/uni_modules/pow-tmapx'

// 检查定位权限
checkAndRequestLocationPermission(res => {
    console.log('权限状态:', res)
})

// 单次定位
getTencentLocation({
    needAddress: true
}, res => {
    console.log('定位结果:', res)
})

// 持续定位
startTencentLocation({
    interval: 2000,
    needAddress: true
}, res => {
    console.log('持续定位:', res)
})

// 停止定位
stopTencentLocation({}, res => {
    console.log('已停止定位')
})

4. 地图组件

<template>
    <pow-tmapx
        ref="mapRef"
        class="map"
        :center="'116.398111,39.91054'"
        :zoomLevel="12"
        @load="onMapLoad"
        @mapLoaded="onMapLoaded"
        @markerClick="onMarkerClick"
    ></pow-tmapx>
</template>

<script>
export default {
    methods: {
        onMapLoad() {
            console.log('地图加载完成')
        },
        onMapLoaded(e) {
            console.log('地图已加载')
        },
        onMarkerClick(e) {
            console.log('Marker点击:', e.detail)
        },

        // 调用地图方法
        addMarker() {
            const mapRef = this.$refs['mapRef']
            mapRef.$callMethod('addMarkers', JSON.stringify([{
                id: 'marker1',
                lat: 39.909187,
                lng: 116.397455,
                title: '天安门'
            }]))
        }
    }
}
</script>

5. 工具函数

import {
    tencentLineDistance,
    tencentCalculateArea
} from '@/uni_modules/pow-tmapx'

// 计算距离
const distance = tencentLineDistance(lat1, lng1, lat2, lng2)

// 计算面积
const area = tencentCalculateArea(lat1, lng1, lat2, lng2)

6. 搜索功能

import {
    searchTencentPoisWithKeywords,
    searchTencentPoisNearby,
    searchTencentGeocode,
    searchTencentRegeocode
} from '@/uni_modules/pow-tmapx'

// 关键词搜索 POI
// 代码示例待添加

// 周边搜索 POI
// 代码示例待添加

// 地理编码
// 代码示例待添加

// 逆地理编码
// 代码示例待添加

搜索参数说明

关键词搜索参数
参数名 类型 必填 说明
keyword string 搜索关键词
city string 城市名称
pageSize number 每页数量,默认10
pageIndex number 页码,从1开始
周边搜索参数
参数名 类型 必填 说明
keyword string 搜索关键词
lat number 中心点纬度
lng number 中心点经度
radius number 搜索半径,单位米,默认1000
pageSize number 每页数量,默认10
pageIndex number 页码,从1开始
地理编码参数
参数名 类型 必填 说明
address string 地址文本
city string 城市名称(提高精度)
逆地理编码参数
参数名 类型 必填 说明
lat number 纬度
lng number 经度
getPoi boolean 是否返回周边POI,默认false
poiRadius number POI搜索半径,单位米

7. 导航功能

导航功能分为两个页面:导航配置页面和导航视图页面。

导航配置页面 (navi.uvue)

用于设置导航参数,选择导航类型和模式。

代码示例待添加

导航视图页面 (tmap-navi-view.uvue)

实际显示导航界面的页面,使用 pow-tmap-navi 组件。

代码示例待添加

导航组件方法说明

方法名 参数 说明
calculateDriveRoute JSON字符串 规划驾车路线
calculateWalkRoute JSON字符串 规划步行路线
calculateRideRoute JSON字符串 规划骑行路线
calculateTruckRoute JSON字符串 规划货车路线
startGPSNavi 开始GPS实时导航
startEmulatorNavi 开始模拟导航
stopNavi 停止导航
destroy 销毁导航组件
onPause 暂停地图渲染(页面隐藏时调用)
onResume 恢复地图渲染(页面显示时调用)

路线规划参数说明

{
  "startLat": 39.909187,    // 起点纬度
  "startLng": 116.397455,   // 起点经度
  "endLat": 39.917839,      // 终点纬度
  "endLng": 116.397029,     // 终点经度
  "naviType": "drive",      // 导航类型: drive/walk/ride/truck
  "naviMode": "gps",        // 导航模式: gps/simulate
  "enableTTS": true,        // 是否开启语音播报
  "simulateSpeed": 60,      // 模拟导航速度(米/秒),仅模拟模式有效
  // 货车专用参数(仅 naviType 为 truck 时有效)
  "truckOptions": {
    "height": 4.2,          // 车高(米)
    "width": 2.5,           // 车宽(米)
    "length": 12,           // 车长(米)
    "weight": 20,           // 车重(吨)
    "axisCount": 4          // 轴数
  }
}

导航回调事件说明

事件名 说明 返回数据
initNavi 导航初始化 { success: boolean }
calculateRoute 路线规划结果 { success: boolean, status: string, errorCode: number }
startNavi 导航开始 { type: 'GPS'/'EMULATOR' }
stopNavi 导航停止 { status: string }
endNavi 导航结束 { status: string }
arriveDestination 到达目的地 { status: 'arrived' }
naviInfoUpdate 导航信息更新 { curRoadName, nextRoadName, remainDistance, remainTime, curSpeed }
locationChange 位置变化 { lat, lng, speed, bearing }
recalculateRoute 重新规划路线 { reason: 'yaw'/'congestion' }
goBack 用户点击退出按钮 { status: string }
error 错误信息 { message: string }
warning 警告信息 { message: string }

地图组件方法

方法名 参数 说明
setCenter lat, lng, animated 设置中心点
setZoomLevel level, animated 设置缩放级别
getCenter - 获取中心点
getZoomLevel - 获取缩放级别
setMapType type 设置地图类型(1普通/2卫星/3夜间/4 3D沉浸)
showTraffic show 显示/隐藏路况
setCompassEnabled enabled 显示/隐藏指南针
setScaleControlsEnabled enabled 显示/隐藏比例尺
setZoomGesturesEnabled enabled 允许/禁止缩放手势
setScrollGesturesEnabled enabled 允许/禁止拖拽手势
setRotateGesturesEnabled enabled 允许/禁止旋转手势
setTiltGesturesEnabled enabled 允许/禁止倾斜手势
showMyLocation params 显示自身位置
addMarkers params 添加标注点
removeMarker params 移除标注点
removeSomeMarkers params 移除指定的多个标注点
removeAllMarkers - 移除所有标注点
drawPolyline params 绘制折线
removePolyline params 移除折线
removeAllPolylines - 移除所有折线
drawTexturedPolyline params 绘制纹理折线
removeTexturedPolyline params 移除纹理折线
removeAllTexturedPolylines - 移除所有纹理折线
drawCircle params 绘制圆形
removeCircle params 移除圆形
removeAllCircles - 移除所有圆形
drawPolygon params 绘制多边形
removePolygon params 移除多边形
removeAllPolygons - 移除所有多边形
setVisibleIncludeMarkers params 缩放以包含所有标注

地图组件事件

事件名 说明
load 组件加载完成
mapLoaded 地图加载完成
mapRendered 地图渲染完成
markerClick 标注点击
markerDrag 标注拖拽
cameraChange 视角改变完成
cameraChangeStart 视角开始改变

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要定位权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。