以下代码适用于在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;
}
答案 0 :(得分:1)
嗨,我遇到了同样的问题和同样的情况。我得到了一个Nexus One,我得到了一个使addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1);
工作的解决方法。
您只需重新启动设备即可。我注意到Geocoder的getFromLocation方法不知道Locale设置有任何变化(在我的例子中,使得该方法停止工作的原因是我的默认Locale的更改)。
重启后一切正常。有人有合理的理由吗? (对不起游戏这个词:-P)
答案 1 :(得分:0)
我正在使用HTC Tmobile G2,在测试基于GeoCoder的功能时遇到了同样的问题。重启有帮助,但当我的客户开始抱怨这个时,这不是一个可接受的解决方案。如果这是某种缓存清除问题,那么我希望可以通过编程方式实施解决方法。