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

经纬度是确定每个地点位置的精确坐标,使用坐标描述一个位置,非常准确但是并不直观,面向用户表达并不友好。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日志为:

了解更多详情>>

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

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

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/HMSCore/blog/5571928

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。