百度地图不能从定位的BDLocation里获取地址怎么办?

来源:互联网 发布:快递数据 编辑:程序博客网 时间:2024/05/01 22:14

官方文档、DEMO请转移:http://api.map.baidu.com/lbsapi/cloud/geosdk-android-developv3.1.htm


首先第一点,确认你对LocationClient设置的参数是否包含 option.setPoiExtraInfo(true); 是否需要POI的电话和地址等详细信息  mLocClient.requestLocation();// 响应定位事件


具体如下:

        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true);//打开gps
        option.setCoorType("bd09ll");     //设置坐标类型
        option.setScanSpan(5000);
option.disableCache(true);//禁止启用缓存定位
option.setPoiNumber(5);//最多返回POI个数
option.setPoiDistance(1000); //poi查询距离
option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息


        mLocClient.setLocOption(option);
        mLocClient.start();
        mLocClient.requestLocation();
        mLocClient.requestPoi();


如果这样还不能获取到地址的话(v3.1就是这样,很讨厌),还有一种方法补救。


public class MyLocationListenner implements BDLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            if (location == null){
            return;
            }
            else{
                
                GeoPoint gp = new GeoPoint((int)(locData.latitude* 1e6), 
                (int)(locData.longitude *  1e6));
               mSearch.reverseGeocode(gp); //mSearch为 MKSearch对象
            }
        
        }
        
        public void onReceivePoi(BDLocation poiLocation) {
            if (poiLocation == null){
                return ;
            }
        }
    }

class PickSearchListener implements MKSearchListener {


@Override
public void onGetAddrResult(MKAddrInfo res, int error) {
if (error != 0) {
String str = String.format("百度地址查找错误,错误号:%d", error);
Log.e("error -->>", "e == " + str);
return;
}


System.out.print("解析的地址为 == "+res.strAddr);
}


@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
}


@Override
public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
}


@Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
}


@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
}


@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
}


@Override
public void onGetPoiDetailSearchResult(int arg0, int arg1) {
}


@Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
}
}