鸿蒙开发中获取定位信息

使用LocationButton位置控件,首次点击应用中的位置控件,系统将弹窗请求用户授权,如果用户点取消,弹窗消失,应用无授权,用户再次点击位置控件时将会重新弹窗;用户点击允许,弹窗消失,应用将被授予临时位置权限,此后点击该应用的位置控件将不会弹窗。精准定位的临时授权会持续到灭屏、应用切后台、应用退出等任一情况发生,然后恢复到临时授权之前的授权状态。

核心步骤:1.整合LocationButton获取经纬度。2.通过Location kit将经纬度转为地址信息。3.将地址渲染到页面上。4.如果未开启定位将会闪退,处理闪退情况,用try catch。

 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
                      };
                      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 {
                            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: '获取位置信息失败!' })
                  }
                })

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值