我试图在经度和纬度的基础上使用地理编码器检索地址。有时我看到它抛出IOException,说“服务不可用”并将地址返回为null。以下是我的相同代码:
public Address getAddress(double lat, double lng){
if(Constants.LOCAL_LOG)Log.v(Constants.LOG_TAG, "CustomLocationManager : getAddress() START");
Address address = null;
if(Geocoder.isPresent()){
Geocoder geocoder = new Geocoder(mContext);
try {
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
if(addresses != null && addresses.isEmpty() == false){
address = addresses.get(0);
}
} catch (IOException e) {
Log.e(Constants.LOG_TAG, e.getMessage(), e);
}
}
if(Constants.LOCAL_LOG)Log.v(Constants.LOG_TAG, "CustomLocationManager : getAddress() END");
return address;
}
抛出IOException并且“Service is available available”出现时有什么条件。
让我知道如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
有时谷歌不提供某些地点的地址。我在创建地理围栏应用程序时测试过它。
所以当你得到地址时。检查空值
答案 1 :(得分:0)
最好使用NETWORK_PROVIDER位置而不是GPS_PROVIDER来在反向地理编码中获取正确的地址
locManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);