【鸿蒙开发】Map Kit地图服务- 如何在鸿蒙应用使用定位能力?

一、华为地图开发准备工作

1. 配置 Client ID

在完成基本准备及公钥指纹配置后,登录 AppGallery Connect(AGC) 平台获取目标应用的 Client ID(非项目的),并于工程 entry 模块的 module.json5 文件里,在 metadata 中新增配置,名称设为 client_id,值为所取 Client ID。

"module": {
  "name": "xxxx",
  "type": "entry",
  "description": "xxxx",
  "mainElement": "xxxx",
  "deviceTypes": [
    'phone',
    'tablet'
  ],
  "pages": "xxxx",
  "abilities": [],
  "metadata": [
    {
      "name": "client_id",
      "value": "xxxxxx"  // 配置为获取的Client ID
    }
  ]
}

2. 开通地图服务

登录 AGC 网站,选 “我的项目”,在项目下挑中需开地图服务的应用,经 API 管理寻地图服务开关开启,为地图开发筑牢根基,助开发者提升应用 LBS 体验、实现地图个性化呈现与交互。 

 二、显示地图

1.导入 Map Kit 模块

import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';

2. 设 mapOptions 定地图中心及层级

@Entry
@Component
struct MapApp {
    // 地图初始化参数
    private mapOptions: mapCommon.MapOptions = {
        position: {
            target: {
                latitude: 39.9,  // 地图中心纬度,可按需修改
                longitude: 116.4  // 地图中心经度,可按需修改
            },
            zoom: 10  // 地图层级,可调整
        },
        // 可按需设置其他地图属性,如是否支持旋转手势等
        rotateGesturesEnabled: true,
        scrollGesturesEnabled: true,
        zoomGesturesEnabled: true,
        tiltGesturesEnabled: true,
        mapType: mapCommon.MapType.STANDARD,  // 地图类型,可切换
        myLocationControlsEnabled: false,  // 是否展示我的位置按钮,可设为 true 开启
        compassControlsEnabled: true,  // 是否展示指南针控件
        scaleControlsEnabled: false  // 是否展示比例尺,可设为 true 展示
    };

 MapOptions包含以下属性

属性

描述

mapType

地图类型,默认值:MapType.STANDARD。

### 如何在鸿蒙系统中接入并展示高德地图 #### 准备工作 确保已经安装了必要的开发环境,包括但不限于DevEco Studio以及获取到高德开放平台的API Key。这一步骤至关重要,因为后续所有的操作都将依赖于此。 #### 创建项目与配置权限 创建一个新的HarmonyOS工程,在`config.json`文件内声明网络访问权限以便能够请求外部资源如高德地图的数据接口: ```json { "reqPermissions": [ { "name": "ohos.permission.INTERNET" } ] } ``` 同时也要记得申请位置信息服务的相关权限来支持定位功能[^1]。 #### 添加依赖库 前往高德官网下载适用于HarmonyOS SDK版本的地图组件,并将其加入项目的依赖项列表当中。具体来说就是修改`build.gradle`文件中的dependencies部分以引入所需模块。 #### 初始化Map对象 当页面加载完成后立即初始化MapView实例并将它绑定至布局视图之上;另外还需设置好初始中心点坐标、缩放级别等参数让初次打开时即呈现合理视角范围内的地理信息给用户查看。 ```javascript import MapView from '@ohos.maps.mapkit'; // 定义经纬度变量存储当前位置数据 let currentLocation = { lat: 39.9042, lng: 116.4074 }; export default { onCreate() { this.$refs.mapContainer.init((map) => { // 设置地图样式和其他属性... map.setMyLocationEnabled(true); // 将当前地点设为中心点显示 const point = new LatLng(currentLocation.lat, currentLocation.lng); map.animateTo(point); // 更多自定义逻辑... }); }, }; ``` #### 实现交互功能 通过监听用户的触摸事件可以实现在屏幕上滑动放大缩小地图效果,点击标记物弹出详情窗口等功能增强用户体验感。此外还可以考虑集成搜索框允许输入地址名称自动解析成地理位置并标注出来方便快捷导航使用。 #### 处理不同设备兼容性问题 考虑到实际运行环境中可能存在多种型号终端共存的情况,因此建议针对特定品牌或操作系统特性做适当调整优化,例如解决某些情况下无法正常唤起第三方应用程序的问题[^2]。 #### 地理坐标转换实用代码片段 由于中国境内的电子地图普遍采用GCJ-02标准而非国际通用WGS84体系,所以在处理来自GPS接收器原始读数时往往需要先完成一次坐标的变换才能得到准确无误的结果用于绘制图标或者计算距离方向等等[^3]。 ```typescript import { map, mapCommon } from '@kit.MapKit'; const wgs84Position: mapCommon.LatLng = { latitude: 30, longitude: 118 }; const gcj02Position: mapCommon.LatLng = map.convertCoordinateSync( mapCommon.CoordinateType.WGS84, mapCommon.CoordinateType.GCJ02, wgs84Position ); console.log(`Transformed Position: ${JSON.stringify(gcj02Position)}`); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值