HarmonyOS 鸿蒙Next 地图加载经纬度设置了标记后有偏移量

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 地图加载经纬度设置了标记后有偏移量

代码示例:

/**
* 地图显示
*/
import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';

@Entry
@Component
struct Map {
private TAG = "HuaweiMapDemo";
/**
* 地图初始化参数
*/
private mapOptions?: mapCommon.MapOptions;
/**
* 地图初始化的回调
*/
private callback?: AsyncCallback<map.MapComponentController>;
/**
* 地图的控制器
*/
private mapController?: map.MapComponentController;

aboutToAppear(): void {
// 地图初始化参数,设置地图中心点坐标及层级
this.mapOptions = {
//设置的经纬度
position: {
target: {
latitude: 38.023885,
longitude: 114.482445
},
//相机的图层设计
zoom: 16
},
/**
STANDARD:标准地图,展示道路、建筑物以及河流等重要的自然特征。
NONE:空地图,没有加载任何数据的地图。
TERRAIN:地形图
*/
mapType: mapCommon.MapType.STANDARD,
//是否支持滑动手势
scrollGesturesEnabled: true,
//是否支持缩放手势
zoomGesturesEnabled: true
};

// 地图初始化的回调
this.callback = async (err, mapController) => {
if (!err) {
// 获取地图的控制器类,用来操作地图
this.mapController = mapController;
// 设置地图主题色跟随系统变化
this.mapController.setDayNightMode(mapCommon.DayNightMode.AUTO);
//Marker初始化参数
let markerOptions: mapCommon.MarkerOptions = {
//标记的位置坐标
position: {
latitude: 38.023885,
longitude: 114.482445
},
//标记的旋转角度
rotation: 0,
visible: true,
zIndex: 0,
//透明度
alpha: 1,
anchorU: 0.5,
anchorV: 1,
clickable: true,
draggable: true,
flat: false
};
// 创建Marker
this.mapController.addMarker(markerOptions);

}
};
}

// 页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效
onPageShow(): void {
// 将地图切换到前台
if (this.mapController !== undefined) {
this.mapController.show();
}
}

// 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry装饰的自定义组件生效。
onPageHide(): void {
// 将地图切换到后台
if (this.mapController !== undefined) {
this.mapController.hide();
}
}

build() {
Stack() {
// 调用MapComponent组件初始化地图
MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback }).width('100%').height('100%');
}.height('100%')
}
}


更多关于HarmonyOS 鸿蒙Next 地图加载经纬度设置了标记后有偏移量的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

鸿蒙系统mapkit采用的是GCJ02坐标系,请使用坐标转换后传入,具体说明参见:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/map-convert-coordinate-V5

这个具体需要先确认使用的是哪种坐标系,如果同样是GCJ02坐标,则无需转换,如果是其它坐标,比如WGS84,则需要遵循转换规则将WGS84坐标转成GCJ02坐标。

偏移是指用的同样的经纬度数据,在鸿蒙和在高德百度地图上显示的位置不一样是吗?应该是华为地图和高德百度地图使用的坐标系不一样。

更多关于HarmonyOS 鸿蒙Next 地图加载经纬度设置了标记后有偏移量的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,地图加载经纬度并设置标记后出现偏移量的问题,通常与地图服务的数据精度、设备定位精度以及地图SDK的使用方式有关。

  1. 确认地图SDK版本:确保你使用的地图SDK是最新版本,因为新版本可能修复了旧版本的定位偏移问题。

  2. 检查经纬度数据:验证输入的经纬度数据是否准确无误,有时候数据输入错误或格式不正确也会导致偏移。

  3. 设备定位精度:设备自身的定位精度也会影响地图上的标记位置。可以尝试在开阔地带或GPS信号强的地方重新定位,看是否能减少偏移。

  4. 地图服务配置:检查地图服务的配置设置,确保所有相关的配置都正确无误,比如API密钥、服务权限等。

  5. 地图投影和坐标系统:确认地图使用的投影方式和坐标系统是否与你的经纬度数据匹配,不匹配可能会导致偏移。

  6. SDK使用方式:确保按照地图SDK的官方文档正确使用API,包括标记的添加、更新和删除等操作。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部