地理编码器有时会将地址返回为null

时间:2013-10-04 12:46:10

标签: android-intent

我试图在经度和纬度的基础上使用地理编码器检索地址。有时我看到它抛出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”出现时有什么条件。

让我知道如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

有时谷歌不提供某些地点的地址。我在创建地理围栏应用程序时测试过它。

所以当你得到地址时。检查空值

答案 1 :(得分:0)

最好使用NETWORK_PROVIDER位置而不是GPS_PROVIDER来在反向地理编码中获取正确的地址

locManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);