6

下面的代码非常适合在 1.5、1.6 和 2.0 上运行的真实设备以及在 2.1 上运行的模拟器。

但是,在 Nexus One(运行 2.1)上执行它会引发 IOException:

java.io.IOException: Unable to parse response from server
at android.location.Geocoder.getFromLocation(Geocoder.java:124)

这就是它发生的代码片段:

Double myLatitude = AppObject.myLocation.getLatitude();
Double myLongitude = AppObject.myLocation.getLongitude();
DEBUG.i(TAG, "My location: " + myLatitude + " | " + myLongitude);
Geocoder geocoder = new Geocoder(MainActivity.this);
java.util.List<Address> addressList;
try {
    addressList = geocoder.getFromLocation(myLatitude, myLongitude, 5);
    if(addressList!=null && addressList.size()>0) {
        currentAddress = new String();
        DEBUG.i(TAG,addressList.get(0).toString());
        currentAddress = addressList.get(0).getAddressLine(0) + ", "
        + addressList.get(0).getAddressLine(1) + ", "
        + addressList.get(0).getAddressLine(2); 

    }
    return true;

} catch (IOException e) {
    e.printStackTrace();
    return false;
}
4

2 回答 2

1

嗨,我遇到了同样的问题和同样的情况。我有一个 Nexus One,我有一个解决方法来addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1);工作。您只需要重新启动您的设备。我注意到 Geocoder 的 getFromLocation 方法不知道区域设置的任何更改(在我的情况下,使该方法停止工作的是我的默认区域设置的更改)。重新启动后一切正常。有人对此有合理的理由吗?(对不起文字游戏:-P)

于 2011-08-22T20:22:39.957 回答
0

我使用的是 HTC Tmobile G2,在测试基于 GeoCoder 的功能时遇到了同样的问题。重新启动有所帮助,但当我的客户开始抱怨时,这不是一个可接受的解决方案。如果这是某种缓存清除问题,那么我希望可以以编程方式实施解决方法。

于 2011-11-03T23:08:38.360 回答