Android高德地图定位功能,在部分机型定位成功却不返回地址信息处理方案。

Android高德地图定位功能,在部分机型定位成功却不返回地址信息处理方案。


最近做了一个关于定位相关的项目,使用的高德地图的API,结果却发生了一些问题,特此记录一下。
华为7.0,vivo8.0,小米8.0,vivo9.0,oppo9.0,红米6.0,全都没有问题。但是却在oppoR9机型出现了定位成功却不返回定位详细地址,网上找了好多方案都不行,最后没办法了想了一招,特此记录。

if (aMapLocation != null && aMapLocation.getErrorCode() == AMapLocation.LOCATION_SUCCESS )
//首先这个判断是没有任何问题的,返回的也是定位成功,并且返回了经纬度。

然后接着往下看

aMapLocation.getAdCode()	//发现数据为空
aMapLocation.getPoiName()	//发现数据为空
aMapLocation.getCityCode()	//发现数据为空

定位成功了却还是没有数据是怎么回事呢?
最后试了很多办法都不行,最后在Demo无意间看到这个地址编码的代码,只好拿出来使用,结果就好了,谁也不知道是怎么回事?有大佬知道的话可以留言告诉我一下。
下面是完整解决问题代码

private GeocodeSearch geocoderSearch =new GeocodeSearch(getmView().getmActivity());

//显示定位完成
if (aMapLocation != null && aMapLocation.getErrorCode() == AMapLocation.LOCATION_SUCCESS ) {
		//判断定位完成只给返回经纬度,却不返回定位详细地理信息时
 		if (EmptyUtils.isEmpty(aMapLocation.getAdCode())){
 			//根据经纬度去进行查询地理信息
 			 LatLonPoint point =new LatLonPoint(aMapLocation.getLatitude(),aMapLocation.getLongitude());
                                RegeocodeQuery query =new RegeocodeQuery(point, 200,GeocodeSearch.AMAP);
                                geocoderSearch.getFromLocationAsyn(query);
                                geocoderSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
                                    @Override
                                    public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
                                   		 //在这里解析得到的结果		
                                        String adCode = regeocodeResult.getRegeocodeAddress().getAdCode();
                                        String cityCode = egeocodeResult.getRegeocodeAddress().getCityCode();
                                        String formatAddress = regeocodeResult.getRegeocodeAddress().getFormatAddress();
                                       
                                    }
         }
}

此次踩坑,特此记录。
各位大佬有更好的解决方案的话,欢迎留言评论。

你可能感兴趣的:(android,高德API,Android定位)