当前位置: 首页 > news >正文

如何通过经纬度坐标获取附近的地址信息?

经纬度是确定每个地点位置的精确坐标,使用坐标描述一个位置,非常准确但是并不直观,面向用户表达并不友好。HMS Core定位服务提供了逆地理编码功能,可以通过纬度获取附近地点的详细地址,将坐标转化为地理描述。例如,在电商App的地图里标定一个点,就可以显示具体位置;打车、外卖App里拖动地图或者点击地图上的某一点,定位标能够选择附近合适的上车地址或者外卖地址;在物流配送App中,需要很精确直观的描述物流车辆所在的线路以及物流配送点,使用逆地理编码功能通过回传的经纬度坐标,来确认车辆位置。

HMS Core定位服务逆地理编码功能拥有强大的地址理解能力,使用更加本地化位置的表达方式,准确率高达90%,支持79种语言,低至200ms的时延。

Demo演示

开发步骤

集成准备

注册成为开发者

在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法请参见帐号注册认证。

创建应用

参见创建项目和创建应用完成应用的创建。

生成并配置签名证书指纹

签名证书指纹用于校验应用的真实性,您需要根据签名证书在本地生成签名证书指纹,并在应用上架前将签名证书指纹配置到AppGallery Connect。

具体操作步骤见官网。

集成SDK

针对Android Studio开发环境,华为提供了Maven仓集成方式的SDK包。在开始开发前,您需要将SDK集成到您的Android Studio开发环境中。

具体操作步骤见官网。

开发步骤

1. 创建地理编码服务客户端

在您的项目中使用到地理编码服务的GeocoderActivity中的onClick()方法中创建一个GeocoderService实例,通过该实例调用地理编码相关接口。

Locale locale = new Locale("zh", "CN");
GeocoderService geocoderService = LocationServices.getGeocoderService(GeocoderActivity.this, locale);

2. 获取逆地理编码信息

如果您希望应用获取逆地理编码信息,可以使用定位服务中的GeocoderService对象提供的getFromLocation()接口。该接口会根据您设置的GetFromLocationRequest请求信息返回一个包含位置信息的List<HWLocation>对象。

2.1. 设置逆地理编码请求参数。

// 参数一:纬度
// 参数二:经度
// 参数三:返回结果最大数量 
// 请传入合理的地区经纬度,否则没有相关地理信息返回。如果是非中国地区,请传入非中国地区的经纬度,且确保经纬度是准确的。
GetFromLocationRequest getFromLocationRequest = new GetFromLocationRequest(39.985071, 116.501717, 5);

2.2. 调用getFromLocation()接口,获取逆地理编码信息。

private void getReverseGeocoding() {
    //初始化GeocoderService对象
    if (geocoderService == null) {
        geocoderService = new GeocoderService(this, new Locale("zh", "CN"));
    }
    geocoderService.getFromLocation(getFromLocationRequest)
            .addOnSuccessListener(new OnSuccessListener<List<HWLocation>>() {
                @Override
                public void onSuccess(List<HWLocation> hwLocation) {
                    // TODO:接口调用成功的处理
                    if (null != hwLocation && hwLocation.size() > 0) {
                        Log.d(TAG, "hwLocation数据集数量: " + hwLocation.size());
                        Log.d(TAG, "CountryName: " + hwLocation.get(0).getCountryName());
                        Log.d(TAG, "City: " + hwLocation.get(0).getCity());
                        Log.d(TAG, "Street: " + hwLocation.get(0).getStreet());
                    }
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(Exception e) {
                    // TODO:接口调用失败的处理
                }
            });
}

2.3. Log日志为:

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

相关文章:

  • LNMP+Redis
  • 记一次java组装elementPlus的TreeSelect树形菜单的数据结构
  • springboot基于web模式的师资管理系统的设计与实现毕业设计源码040928
  • 计算机复试面试题总结
  • 计算机二级--java篇
  • Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第10章 Vuex状态管理 10.4 actions的使用
  • 玩转 uniapp 全端开发
  • 【AGC】云存储如何上传文件?是否可以自行开通?云存储的相关问题,来这里看看!
  • 新款FTP替代系统重磅登场!怎样摆脱传统FTP弊端?
  • 页面引擎之velocity的基础入门学习
  • kafka详解(一)--kafka是什么及怎么用
  • 期货开户趋势的本质是惯性
  • 解决在Windows下elasticsearch启动失败,报${ES_TMPDIR}找不到的问题
  • 水一篇挖矿清除记录
  • js制作的模拟超逼真下雨效果
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android组件 - 收藏集 - 掘金
  • HashMap剖析之内部结构
  • QQ浏览器x5内核的兼容性问题
  • SOFAMosn配置模型
  • spring学习第二天
  • Vue 2.3、2.4 知识点小结
  • Web设计流程优化:网页效果图设计新思路
  • 构建工具 - 收藏集 - 掘金
  • 开发基于以太坊智能合约的DApp
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何优雅地使用 Sublime Text
  • 删除表内多余的重复数据
  • 深度学习在携程攻略社区的应用
  • 试着探索高并发下的系统架构面貌
  • 项目管理碎碎念系列之一:干系人管理
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (八)c52学习之旅-中断实验
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (备忘)Java Map 遍历
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (三)mysql_MYSQL(三)
  • (四) 虚拟摄像头vivi体验
  • (一) storm的集群安装与配置
  • (转)linux 命令大全
  • (转)程序员疫苗:代码注入
  • ***详解账号泄露:全球约1亿用户已泄露
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .java 9 找不到符号_java找不到符号
  • .Net - 类的介绍
  • .NET Compact Framework 多线程环境下的UI异步刷新