鸿蒙开发之定位

参考官方文档(传送门)

系统提供的定位权限如下,需要动态申请

ohos.permission.LOCATION

ohos.permission.LOCATION_IN_BACKGROUND

获取到权限后,以获取一次天气定位为例,先获取经纬度,再获取城市信息:

Locator locator = new Locator(context);
RequestParam requestParam = new RequestParam(RequestParam.SCENE_DAILY_LIFE_SERVICE); // 生活服务场景类定位
LocatorCallback callback = new LocatorCallback() {
    @Override
    public void onLocationReport(Location location) {
        // location定位数据
    }

    @Override
    public void onStatusChanged(int i) {}

    @Override
    public void onErrorReport(int i) {}
};
locator.requestOnce(requestParam, callback); // 取一次定位。持续定位用startLocating,配合stopLocating使用。

如果没有onLocationReport回调,基本上是权限的问题。

至此,我们获取到了经纬度,那么如何获取城市数据,需要用到(逆)地理编码转化

GeoConvert geoConvert = new GeoConvert();
try {
    List<GeoAddress> addressList = geoConvert.getAddressFromLocation(location.getLatitude(), location.getLongitude(), 1);
    String locality = addressList.get(0).getLocality(); // 获取到城市信息
} catch (IOException e) {
    e.printStackTrace();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容