HarmonyOS 鸿蒙Next 调用getCurrentLocation,获取经纬度

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 调用getCurrentLocation,获取经纬度

通过调用getCurrentLocation,获取经纬度,然后传入高德使用,定位比实际位置偏移很多,请问调用getCurrentLocation获取经纬度属于哪个坐标系呢?  WGS84(国际通用) GCJ02(高德、QQ地图) BD09(百度地图) CGCS2000(2000国家大地坐标)   我测试的结果getCurrentLocation获取经纬度应该为WGS84,然后通过转换为GCJ02就差不多了


更多关于HarmonyOS 鸿蒙Next 调用getCurrentLocation,获取经纬度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

这样处理是没问题的。 当前LocationKit提供的默认坐标系都是84坐标系,地图的地理坐标在国内站点使用时,需要先将其转换为GCJ02坐标系再访问。这是因为华为地图涉及到的坐标系知识介绍中指出,在国内(包括港澳)通过WGS84坐标调用Map Kit服务时需要进行坐标转换。如果不进行转换,可能会导致展示位置有偏移。

以下是文档中的示例代码:

我的位置:


// 需要引入@ohos.geoLocationManager模块

import { geoLocationManager } from '@kit.LocationKit';

// ...

// 获取用户位置坐标

let location = await geoLocationManager.getCurrentLocation();

// 设置用户的位置

let position = await geoLocationManager.getCurrentLocation();

this.mapController.setMyLocation(position);

地图坐标系说明及转换:

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

let wgs84Position: mapCommon.LatLng = { 

  latitude: 30, 

  longitude: 118 

};

let gcj02Position: mapCommon.LatLng = await map.convertCoordinate(mapCommon.CoordinateType.WGS84, mapCommon.CoordinateType.GCJ02,wgs84Position);

参考链接:

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

更多关于HarmonyOS 鸿蒙Next 调用getCurrentLocation,获取经纬度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,调用getCurrentLocation以获取设备当前经纬度,通常涉及到使用系统提供的定位API。以下是一个简要示例,展示如何通过定位服务获取当前位置:

首先,确保你的应用已在config.json中声明了定位权限:

"requiredPermissions": [
    "ohos.permission.READ_LOCATION",
    "ohos.permission.ACCESS_FINE_LOCATION"
]

然后,在代码中通过LocationKit API获取位置信息:

import location from '@ohos.multimedia.location';

function getCurrentLocation() {
    const locationManager = location.getLocationManager();
    const options = {
        accuracyMode: location.AccuracyMode.HIGH,
        priority: location.RequestPriority.HIGH,
        interval: 1000,
        distance: 1.0,
    };

    locationManager.requestLocationUpdates(options, (err, locationResult) => {
        if (err) {
            console.error('Failed to get location:', err);
        } else {
            const location = locationResult.locations[0];
            console.log('Latitude:', location.latitude);
            console.log('Longitude:', location.longitude);
        }
    });
}

getCurrentLocation();

上述代码通过LocationKit请求位置更新,并在回调函数中处理位置信息。locationResult包含当前位置的一个或多个Location对象,你可以从中提取经纬度。

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

回到顶部