# UniAppMapIntegrationDemo
**Repository Path**: scenario-samples/uni-app-map-integration-demo
## Basic Information
- **Project Name**: UniAppMapIntegrationDemo
- **Description**: 本示例使用了不同方法去集成地图功能,通过map组件集成腾讯地图,通过嵌入HarmonyOS组件集成高德地图。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-12
- **Last Updated**: 2025-12-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# uni-app地图集成示例
## 场景介绍
本示例使用了不同方法去集成地图功能,通过[map组件](https://doc.dcloud.net.cn/uni-app-x/component/map.html#map)集成腾讯地图,通过[嵌入HarmonyOS组件](https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html#%E5%B5%8C%E5%85%A5%E9%B8%BF%E8%92%99%E5%8E%9F%E7%94%9F%E7%BB%84%E4%BB%B6)集成高德地图。
## 效果图
## 实现思路
**本示例涉及知识点。**
| 知识点 | 说明 | 备注 |
| - | - | - |
| [嵌入HarmonyOS组件](https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html) | 1. 在插件的ets文件中注册HarmonyOS组件,
2. 在Vue中使用embed组件来渲染注册好的HarmonyOS组件。 | 通过本示例的高德地图集成步骤,介绍嵌入HarmonyOS组件。 |
| [依赖适配](https://doc.dcloud.net.cn/uni-app-x/plugin/uts-for-harmony.html#%E9%85%8D%E7%BD%AEuts%E6%8F%92%E4%BB%B6%E4%BE%9D%E8%B5%96) | 在uts插件的config.json文件内可以配置三方依赖。 | 集成高德地图/华为地图分别配置了ohpm依赖和二进制依赖。 |
| [权限申请](https://uniapp.dcloud.net.cn/tutorial/harmony/runbuild.html#%E9%80%9A%E8%BF%87-uts-%E6%8F%92%E4%BB%B6%E9%85%8D%E7%BD%AE%E9%B8%BF%E8%92%99%E6%9D%83%E9%99%90) | 1. 在uts插件的module.json5文件中可以声明权限。
2. [UTSHarmony.requestSystemPermission](https://doc.dcloud.net.cn/uni-app-x/uts/utsharmony.html#requestsystempermission-permissions-success-fail)方法可以申请权限。 | 本示例在hongmeng-amap插件中声明的所需的权限,在hongmeng-permission插件中封装了申请权限的方法。 |
| [生命周期注册](https://uniapp.dcloud.net.cn/collocation/App.html#applifecycle) | 本示例在onShow生命周期中,申请了权限 | 触发时机同UIAbility.onForeground |
**一、通过[map组件](https://doc.dcloud.net.cn/uni-app-x/component/map.html#map)集成地图。**
目前[map组件](https://doc.dcloud.net.cn/uni-app-x/component/map.html#map)在HarmonyOS上仅支持腾讯地图,通过[uni.createMapContext](https://uniapp.dcloud.net.cn/api/location/map.html#createmapcontext)方法获取[mapContext](https://uniapp.dcloud.net.cn/api/location/map.html#mapcontext)可以用来操作地图,经过验证mapContext对象的getCenterLocation和moveToLocation方法已经适配了HarmonyOS平台,其余未验证的方法请以[mapContext](https://uniapp.dcloud.net.cn/api/location/map.html#mapcontext)文档为准。
1. 腾讯位置服务的key可以参考[工程配置](https://lbs.qq.com/mobile/harmonyMapSDK/guide/createProject/config)去申请。首先打开腾讯位置服务的[控制台](https://lbs.qq.com/dev/console/application/mine),登录或注册开发者。
2. 然后在腾讯位置服务控制台创建应用。
3. 在刚刚创建的应用上,点击添加key。
4. 点击uni-app项目的manifest.json文件,找到HarmonyOS应用配置,将腾讯位置服务的key配置上去。
5. 调用[mapContext.moveToLocation](https://uniapp.dcloud.net.cn/api/location/map.html#mapcontext)方法将地图中心移到当前定位。
```Vue
```
**二、嵌入高德地图组件。**
1. 高德SDK可以从OHPM中心仓获取,可以直接将依赖配置到插件的config.json文件中。
2. 将“获取定位权限”和“获取模糊定位权限”声明拷贝到插件hongmeng-amap中。
3. 将.ets地图页和资源文件直接拷贝到插件hongmeng-amap中。
4. 注册HarmonyOS组件Amap,标签为“amapbuilder”。
5. 新建uts文件,引入定义的.ets文件。
6. 在页面中引入标签“amapbuilder”。
7. 在[onShow生命周期](https://uniapp.dcloud.net.cn/collocation/App.html#applifecycle)中申请权限,触发时机同UIAbility.onForeground。
**三、嵌入华为地图组件。**
1. 本示例将华为地图页面封装进了maps功能模块,将地图初始化参数的方法封装进了utils功能模块,maps模块依赖utils模块。
2. 将utils模块和maps模块编译成.har文件,然后在插件hongmeng-huaweimap中新增hars文件夹用于存放这两个.har文件,同时在config.json中配置依赖。
3. 注册模块中的HuaweiMap组件,标签为“huaweimapbuilder”。
4. 新建uts文件,引入定义的.ets文件。
5. 在.Vue文件中的embed组件中引入注册好的标签。
**四、uni-app嵌入地图组件总结。**
| 操作顺序 | 说明 | 备注 |
| - | - |--------------------------------------------------------------------|
| [注册HarmonyOS组件](https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html#%E6%B3%A8%E5%86%8C%E9%B8%BF%E8%92%99%E5%8E%9F%E7%94%9F%E7%BB%84%E4%BB%B6) | 1. 将HarmonyOS页面、权限、资源文件拷贝到插件中,
2. 使用defineNativeEmbed方法注册组件,并设定标签名。 | 高德地图SDK可以从OHPM中心仓获取,在uni-app应用中仅需要配置到插件的config.json文件中,即可使用SDK的功能。 |
| [调用HarmonyOS组件](https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html#%E8%B0%83%E7%94%A8%E9%B8%BF%E8%92%99%E5%8E%9F%E7%94%9F%E7%BB%84%E4%BB%B6) | 在Vue文件中用embed组件来渲染注册好的HarmonyOS组件,embed的属性包含:
1. tag:填写注册后的标签名。
2. options:填写HarmonyOS组件的参数集。 | / |
## 约束与限制
* 本示例支持API Version 20 Release及以上版本。
* 本示例支持HarmonyOS 6.0.0 Release SDK及以上版本。
* 本示例需要使用DevEco Studio 6.0.0 Release及以上版本进行编译运行。
## 权限说明
* 允许应用获取设备模糊位置信息:[ohos.permission.APPROXIMATELY_LOCATION](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/permissions-for-all-user#ohospermissionapproximately_location),
* 允许应用获取设备位置信息:[ohos.permission.LOCATION](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/permissions-for-all-user#ohospermissionlocation)。
## 工程目录
```
├─arkTSMapsDemo // 原HarmonyOS工程,通过ArkTS API集成地图。
├─hars // 二进制依赖文件目录。
├─App.vue
├─index.html
├─main.js
├─manifest.json // 应用相关配置
├─pages.json
├─uni.scss
├─harmony-configs // harmony工程定制化配置目录。
├─pages
│ └─index
│ └─index.vue // 主页面
│
├─static // 静态资源文件夹
├─uni_modules // 插件目录,存放uniapp的插件
│ └─hongmeng-amap
│ └─hongmeng-huaweimap
│ └─hongmeng-permission
```
## 参考文档
[嵌入HarmonyOS组件](https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html#%E5%B5%8C%E5%85%A5%E9%B8%BF%E8%92%99%E5%8E%9F%E7%94%9F%E7%BB%84%E4%BB%B6)
[HarmonyOS NEXT 地图SDK](https://lbs.amap.com/api/harmonyosnext-map3d-sdk/gettingstarted)
[uni.createMapContext](https://uniapp.dcloud.net.cn/api/location/map.html#createmapcontext)
[腾讯位置服务工程配置指南](https://lbs.qq.com/mobile/harmonyMapSDK/guide/createProject/config)