HarmonyOS使用LocationButton获取地理位置

按钮效果图

 

LocationButton

LocationKit

getAddressesFromLocation方法

步骤:

  1. 整合 LocationButton并获取经纬度
  2. 通过 LocationKit 将经纬度转为地址信息
  3. 将地址信息渲染到页面上
  4. 处理异常情况(闪退)

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142459.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

robomimic基础教程(一)——基本概念

robosuite和robomimic都是由ARISE Initiative开发的开源工具,旨在推进机器人学习和机器人操作领域的研究。 一、基本概念 robomimic是一个用于机器人示范学习的框架。它提供了在机器人操作领域收集的大量示范数据集,以及用于从这些数据集中学习的离线学…

初始爬虫6

数据提取 数据提取总结 响应分类 结构化 json数据(高频出现) json模块 jsonpath模块 xml数据(低频出现) re模块 …

基于Python DoIPClient库的DoIP上位机开发手顺

代码 address, announcement DoIPClient.await_vehicle_announcement()logical_address announcement.logical_addressip, port addressprint(ip, port, logical_address) 效果 代码 address, announcement DoIPClient.get_entity(ecu_ip_addresssIp, protocol_version3…

重生归来之挖掘stm32底层知识(1)——寄存器

概念理解 要使用stm32首先要知道什么是引脚和寄存器。 如下图所示,芯片通过这些金属丝与电路板连接,这些金属丝叫做引脚。一般做软件开发是不需要了解芯片是怎么焊的,只要会使用就行。我们平常通过编程来控制这些引脚的输入和输出&#xff0c…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)

一、预览 实现功能:通过vue标题栏按钮锁屏和关机 1.1 预览 1.2 代码 锁屏代码csharp LockWorkStation() 关机代码chsharp 注意vue代码参数和此参数一致(0/1/2) 方法ExitWindowsEx()

Docker部署ddns-go教程(包含完整的配置过程)

本章教程教程,主要介绍如何用Docker部署ddns-go。 一、拉取容器 docker pull jeessy/ddns-go:v6.7.0二、运行容器 docker run -d \--name ddns-go \--restart unless-stopped \

鲲鹏云-docker安装mysql8.0-并设置参数(--lower-case-table-names=1)

前言: 由于鲲鹏云是arm架构,公司现有的镜像就用不了,为了搭建个测试环境,记录一下搭建过程 注意在mysql8.0里面lower-case-table-names必须在第一次安装时设置。 ①镜像的获取 鲲鹏镜像pull下来是不能跑的,会提示内…

Pycharm打印区打印数据不全问题

问题:pycharm底下的打印区打印一个比较大的数据,发现数据不全,只显示一板 解析:可能是打印区域的缓存不足导致的 解决办法: 找到pycharm的idea.properties文件,具体路径以下显示,前面路径看个人…

【十一,是忆】往事如风,回忆如诗,且行且歌

【十一,是忆】往事如风,回忆如诗,且行且歌 十一天的入职培训之所见、所得、所思、所感 820 启程 时隔两月,回到了熟悉的北京,我的脚又一次踏在这片土地上,遗憾的是周转的北京西站,未曾停留多久…

C语言中数据类型

一、C 语言中数据类型 基本数据类型: 整型(int):用于存储整数,如:1、2、3等。字符型(char):用于存储单个字符,如:‘a’、‘b’、c’等。浮点型&a…

Docker安装SVN,搭建自己的本地版本仓库

一、拉取镜像并运行容器 docker pull garethflowers/svn-server docker run --restart always --name svn -d -v /root/dockers/svn:/var/opt/svn -p 3690:3690 garethflowers/svn-server 1、解析 /root/dockers/svn为宿主机的文件目录,/var/opt/svn为容器内的文件…

线程池是啥有啥用,怎么用,如何自己实现一个

目录 一、线程池是啥,有啥用 二、线程池怎么用 1.构造方法 2.如何使用Java的线程池 三、简单实现一个线程池 假设我是一个(好看有才华) 的妹子,那么我就会有很多追求者,这些也叫备胎们,我们若把他…

应用性能优化实践(一)ArkTS高性能编程

在开发HarmonyOS应用时,优化应用性能是至关重要的。通过ArkTS高性能编程、减少丢帧卡顿、提升应用启动和响应速度,可以有效提升用户体验。 一、ArkTS高性能编程 ArkTS是基于TypeScript涉及的,但出于编码的稳定性和性能考虑,一些T…

QT项目添加资源文件

效果 1.先将图片等资源文件复制到QT项目源码目录中。 2.再添加资源文件 打开资源文件编辑 全选文件 代码

【遥感图像船舶检测数据集】

【遥感图像船舶检测数据集】nc1 标签names: [ship,] 名称:【‘船’】共4126张,8:1:1比例划分,(train;3300张,val:412张,test:414张标注文件为YOLO适用的txt格式。可以直接用于模型训…

利用LaTeX写学位论文使用biblatex生成盲评的成果列表

利用LaTeX写学位论文使用biblatex生成盲评的成果列表 引言 在之前的文章《latex参考文献中修改指定作者的格式来突出显示》,我们介绍了在LaTeX中利用参考文献的方式生成学位论文的成果列表,而且将其中的作者突出显示。 但这种方式是用于明评的&#xf…

建筑物检测系统源码分享

建筑物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

C语言-结构体-详解

博客主页:【夜泉_ly】 本文专栏:【C语言】 欢迎点赞👍收藏⭐关注❤️ C语言-结构体-详解 1.前言2.结构体类型2.1声明2.2变量的创建与初始化2.3访问2.4匿名结构体类型 3.结构体内存对齐3.1对齐规则3.2示例 1.前言 在C语言中,除了整…

MyBatis 增删改查【后端 17】

MyBatis 增删改查 引言 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (…

挑战力扣高难度算法、数据库题

一.算法类 1622题,困难,奇妙序列 class Fancy { public:static const int MOD 1e9 7;long long M_total; // cumulative multiplicative factorlong long A_total; // cumulative additive factorvector<long long> val; // original valuesvector<long long> …