
LocationButton
LocationKit
getAddressesFromLocation方法
步骤:
- 整合 LocationButton并获取经纬度
- 通过 LocationKit 将经纬度转为地址信息
- 将地址信息渲染到页面上
- 处理异常情况(闪退)
 LocationButton({
    icon: LocationIconStyle.LINES
     })
       .backgroundColor(Color.White)
       .iconColor(Color.Blue)
       .onClick((event: ClickEvent, result: LocationButtonOnClickResult) => {
         if (result === LocationButtonOnClickResult.SUCCESS) {
           try {
             // 免去权限申请和权限请求等环节,获得临时授权,获取位置信息授权
             const requestInfo: geoLocationManager.LocationRequest = {
               'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX,
               'scenario': geoLocationManager.LocationRequestScenario.UNSET,
               'timeInterval': 1,
               'distanceInterval': 0,
               'maxAccuracy': 0
             };
// 获取当前位置,使用Promise方式异步返回结果。
             geoLocationManager.getCurrentLocation(requestInfo)
               .then((location: geoLocationManager.Location) => {
                 // promptAction.showToast({ message: JSON.stringify(location) });
                 const latitude = location.latitude
                 const longitude = location.longitude
                 let reverseGeocodeRequest: geoLocationManager.ReverseGeoCodeRequest =
                   { latitude, longitude, "maxItems": 1 };
                 try {
// 调用逆地理编码服务,将坐标转换为地理描述,使用Promise异步回调
                   geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest)
                     .then((data) => {
                       // Logger.info('getAddressesFromLocation: ' + JSON.stringify(data));
                        this.addForm.address = data[0].placeName!
                     })
                     .catch((error: BusinessError) => {
                       Logger.error('promise, getAddressesFromLocation: error=' + JSON.stringify(error));
                     });
                 } catch (err) {
                   console.error("errCode:" + JSON.stringify(err));
                 }
               })
               .catch((err: BusinessError) => {
                 console.error(`Failed to get current location. Code is ${err.code}, message is ${err.message}`);
               });
           } catch (e) {     // 错误处理
             if (e.code === '3301100') {
               promptAction.showToast({
                 message: '请开启定位开关~'
               })
             }
           }
        } else {
           promptAction.showToast({ message: '获取位置信息失败!' })
         }
       })