高德地图更新SDK后,RegeocodeResult.getRegeocodeAddress部分值为空

"博客讲述了在更新高德地图SDK从7.1到8.1.0过程中遇到的应用白屏、定位信息不显示等问题。通过添加隐私权限和调用合规接口解决了白屏问题,但定位信息未显示。经过排查,发现是由于扩展字段设置不当导致,通过设置`setExtensions("all")`修复了定位数据不全的问题。"

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为公司的老项目需要更新高德地图SDK,老版本地图用的7.1,定位为4.7.2地图版本7.1.0 ,定位版本4.7.2
需要更新到最新版的SDK8.1.0
地图版本8.1.0,定位版本4.7.2
导入新SDK后基本没啥问题,初始化geocoderSearch = new GeocodeSearch(Context),一顿Try()Catch{},改完-运行,结果app直接白屏闪退,看了一下官方文档,新版本需要加隐私政策直接在Application加一下隐私权限就可以了。高德地图隐私文档 高德官方隐私合规接口说明AMapLocationClient 之前必须进行合规检查,设置接口之前保证隐私政策合规,检查接口如下:
`

AMapLocationClient.updatePrivacyShow(context,true,true);
AMapLocationClient.updatePrivacyAgree(context,true);

添加完后APP正常运行了,正当美滋滋的时候,突然发现定位不显示了,但是打印RegeocodeResult.getRegeocodeAddress是有回调值的,但是PoiItem里就是没有值`

public List<PoiItem> poilist = new ArrayList<PoiItem>();
poilist = regeocodeResult.getRegeocodeAddress().getPois()

这个问题薅了一上午头发也没找到原因问题如图所示
没办法只好提交工单,等了一下午终于回复:
官方技术大大说,扩展字段 base表示只返回基础数据,all表示所有数据 ,默认 base
扩展字段 base表示只返回基础数据,all表示所有数据 ,默认 base。问题终于知道了,响应逆地理编码初始化时候设置一下setExtensions(“all”);即可。
`

 RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200,GeocodeSearch.AMAP);
  //扩展字段 base表示只返回基础数据,all表示所有数据 ,默认 base,
  query.setExtensions("all");
  // 设置同步逆地理编码请求
  geocoderSearch.getFromLocationAsyn(query);`

设置完成,搞定!

以下是获取当前位置的代码: 1. 添加权限到 AndroidManifest.xml 文件中: ``` <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> ``` 2. 在代码中获取位置信息: ``` LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { // 获取到位置信息后的处理 } @Override public void onStatusChanged(String provider, int status, Bundle extras) {} @Override public void onProviderEnabled(String provider) {} @Override public void onProviderDisabled(String provider) {} }; // 获取位置信息 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); // 获取最后一次的位置信息 Location lastLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); // 获取经纬度 double latitude = lastLocation.getLatitude(); double longitude = lastLocation.getLongitude(); ``` 3. 利用高德地图 SDK 获取当前位置的地址信息: ``` GeocodeSearch geocodeSearch = new GeocodeSearch(this); geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() { @Override public void onRegeocodeSearched(RegeocodeResult result, int rCode) { if (rCode == AMapException.CODE_AMAP_SUCCESS) { if (result != null && result.getRegeocodeAddress() != null && result.getRegeocodeAddress().getFormatAddress() != null) { String address = result.getRegeocodeAddress().getFormatAddress(); // 获取到地址信息后的处理 } } } @Override public void onGeocodeSearched(GeocodeResult result, int rCode) {} }); // 根据经纬度获取地址信息 LatLonPoint latLonPoint = new LatLonPoint(latitude, longitude); RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200, GeocodeSearch.AMAP); geocodeSearch.getFromLocationAsyn(query); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值