HarmonyOS Next开发教程之地图定位

今天分享一下在鸿蒙开发中的地图定位问题,也就是在地图中如何定位自己所在的位置。 关于如何加载显示地图在之前的文章已经详细介绍过,有问题的友友可以点击查看: HarmonyOS NEXT实战教程-实现Keep运动轨迹 ​​将地图定位到自己所在的位置,有几种方法: 一种是在初始化地图前先获取到当前的坐标,然后将坐标初始化到地图上

geoLocationManager.getCurrentLocation(request).then((result) 复制代码
  console.log('current location: ' + JSON.stringify(result));
//初始化地图坐标
this.mapOptions = {
  position: {
    target: {
       latitude: result.latitude,
       longitude: result.longitude
     
    },
    //当前比例
    zoom: 14.2
  },
  //地图最小比例,也就是能局部放大的小比例
  minZoom:3,
  //地图最大比例
  maxZoom:18,
  scaleControlsEnabled: true
};
})
  .catch((error:BusinessError) => {
    console.error('promise, getCurrentLocation: error=' + JSON.stringify(error));
  });

另一种方法是使用moveCamera方法移动相机来实现:

// 复制代码
let cameraUpdate: map.CameraUpdate = map.newCameraPosition(cameraPosition);
// 移动相机
this.mapController.moveCamera(cameraUpdate);

然后可以使用setMyLocation方法标记当前的位置坐标:

kotlin 复制代码
//设置我的位置
this.mapController?.setMyLocation(location)
//显示我的位置
this.mapController?.setMyLocationEnabled(true)

这里有一个困扰了我很久的问题,这里的位置标记点和定位是用的同一个坐标,位置标记的正确说明坐标没有问题,那么既然坐标没有问题的话,为什么我的位置不在屏幕中央,而且就偏了那么一点点? 研究许久之后了解到,其实在初始化地图和移动镜头时不能直接传入获取到的位置坐标,而是要进行坐标系的转换,由WGS84坐标系转换到GCJ02坐标系,在进行地图的定位:

ini 复制代码
let gcj02Posion: mapCommon.LatLng =  await map.convertCoordinate(mapCommon.CoordinateType.WGS84, mapCommon.CoordinateType.GCJ02,    point);

这样的话当前的位置就会出现在屏幕中间啦。

相关推荐
程序猿追8 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
懿路向前11 小时前
HarmonyOS 粒子特效实战:emitter.size 是双刃剑:粒子精确定位 [0,0] 与条带随机出生(HarmonyOS)
华为·harmonyos
马剑威(威哥爱编程)11 小时前
【共创稿事节】HarmonyOS 7 Agent 开发实战 04:云端 RAG 搭企业私有知识库问答
人工智能·华为·harmonyos
贾伟康12 小时前
【晨迹相机|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·appgallery·发布审核·上架复查
特立独行的猫a13 小时前
用仓颉写桌面应用:从 npx 建工程到串口实时示波器
开源·harmonyos·tauri·仓颉·cj-tarui
懿路向前14 小时前
HarmonyOS 粒子特效实战:马赛克切块提速 17.6×~38×:desiredRegion 重复读盘与一次解码管线(HarmonyOS)
华为·harmonyos
天府云创16 小时前
Agentic开发时代到来——鸿蒙PC三大原生开发工具公测
华为·操作系统·harmonyos·鸿蒙系统·cli·deveco·agentic
程序猿追16 小时前
Fleks 鸿蒙适配:从八个小球看实体和组件的变化
华为·harmonyos
Sunny_GMF16 小时前
Markdown 导出 HTML 实战:2.6MB 编辑器快照如何瘦身 71%(DOM 净化 + CSSOM 运行时裁剪)
编辑器·html·ai编程·harmonyos
m0_7381858217 小时前
Flutter 鸿蒙化实战:the_apple_sign_in 适配 OpenHarmony,Apple 登录
flutter·华为·harmonyos·鸿蒙