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

Posted 华为移动服务

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过经纬度坐标获取附近的地址信息?相关的知识,希望对你有一定的参考价值。

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

以上是关于如何通过经纬度坐标获取附近的地址信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何从纬度/经度获取附近的位置?

android开发 百度地图怎么获取线的经纬度

怎么用程序通过百度地图API批量获取具体地址的经纬度

怎么样用Python实现地理编码

#私藏项目实操分享#愚公系列2022年04月 微信小程序-项目篇(公交查询)-02周边站点-获取位置和城市信息

MapBox GL JS:从通过代码设置的字符串地址获取经纬度坐标