现在的位置: 首页 > 综合 > 正文

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

2018年01月18日 ⁄ 综合 ⁄ 共 1920字 ⁄ 字号 评论关闭

官方文档、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) {
}
}

抱歉!评论已关闭.