HarmonyOS鸿蒙Next中获取当前地理位置示例代码

HarmonyOS鸿蒙Next中获取当前地理位置示例代码

介绍

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

获取当前地理位置源码链接

效果预览

图片名称

使用说明

  1. 点击“获取当前位置”的按钮,点击按钮出现是否允许应用获取地理位置的弹窗,允许之后可获取当前位置。
  2. 应用设置获取精准定位的开关,打开开关获取精准位置,精准度在米级别。

实现思路

用户允许获取定位的弹窗

定位前检查是否已经获取用户授权访问设备位置信息,如未获得授权,向用户申请需要的位置权限。

  1. ohos.permission.APPROXIMATELY_LOCATION:用于获取模糊位置,精确度为5公里。
  2. 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

2 回复

在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接口,可以在获取到地理位置时进行处理。

回到顶部