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