HarmonyOS鸿蒙Next中获取当前地理位置示例代码
HarmonyOS鸿蒙Next中获取当前地理位置示例代码
介绍
本示例利用 [@ohos.geoLocationManager](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5#location) 通过位置服务获取当前设备所处的地理位置及经纬度,设置精准定位开关可获取精准位置。
效果预览

使用说明
- 点击“获取当前位置”的按钮,点击按钮出现是否允许应用获取地理位置的弹窗,允许之后可获取当前位置。
- 应用设置获取精准定位的开关,打开开关获取精准位置,精准度在米级别。
实现思路
用户允许获取定位的弹窗
定位前检查是否已经获取用户授权访问设备位置信息,如未获得授权,向用户申请需要的位置权限。
- ohos.permission.APPROXIMATELY_LOCATION:用于获取模糊位置,精确度为5公里。
- ohos.permission.LOCATION:用于获取精准位置,精准度在米级别。
获取当前位置
使用[@ohos.geoLocationManager](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5#location)接口获取设备位置的经纬度,再将经纬度转换成实际位置。核心代码如下,源码参考
Index.ets
let locationChange = (err: BusinessError, location: geoLocationManager.Location) => {
// 获取经纬度
if (location.latitude === 0 && location.longitude === 0) {
return;
}
// 将经纬度转成实际位置
let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest = {
'locale': this.locale.toString().includes('zh') ? 'zh' : 'en',
'latitude': location.latitude,
'longitude': location.longitude,
'maxItems': 1
};
geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then(data => {
if (data[0].placeName) {
this.message = this.message + data[0].placeName;
}
}).catch((err: Error) => {
Logger.error('GetAddressesFromLocation err ' + JSON.stringify(err));
});
};
更多关于HarmonyOS鸿蒙Next中获取当前地理位置示例代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中获取当前地理位置,可以使用@ohos.geolocation模块。以下是一个示例代码:
import geolocation from '@ohos.geolocation';
// 获取当前地理位置
geolocation.getCurrentLocation((err, data) => {
if (err) {
console.error('获取地理位置失败:', err);
return;
}
console.log('当前地理位置:', data);
});
该代码通过geolocation.getCurrentLocation方法获取当前设备的地理位置信息。如果获取成功,返回的数据包含经度、纬度等信息;如果失败,则返回错误信息。
更多关于HarmonyOS鸿蒙Next中获取当前地理位置示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,可以使用LocationManager来获取当前地理位置。以下是一个简单的示例代码:
import ohos.location.Location;
import ohos.location.LocationManager;
import ohos.location.Locator;
import ohos.location.LocatorCallback;
public class LocationExample {
private LocationManager locationManager;
private Locator locator;
public void getCurrentLocation() {
locationManager = LocationManager.getInstance();
locator = locationManager.createLocator();
LocatorCallback callback = new LocatorCallback() {
@Override
public void onLocationReport(Location location) {
// 处理获取到的地理位置
double latitude = location.getLatitude();
double longitude = location.getLongitude();
System.out.println("Latitude: " + latitude + ", Longitude: " + longitude);
}
@Override
public void onStatusChanged(int status) {
// 处理状态变化
}
@Override
public void onErrorReport(int errorCode) {
// 处理错误
}
};
locator.startLocating(callback);
}
public void stopLocationUpdates() {
if (locator != null) {
locator.stopLocating();
}
}
}
在这个示例中,LocationManager用于管理位置服务,Locator用于启动和停止定位。通过实现LocatorCallback接口,可以在获取到地理位置时进行处理。

