我知道此问题经常被问过,但我无法从任何答案或搜索结果中获得解决方案。 我必须尽快解决这个问题.. 我试图从用户输入的地址获得纬度和经度,但我继续得到:
java.io.IOException: Unable to parse response from server
我正在使用此代码:
Geocoder geocoder = new Geocoder(this ,Locale.getDefault());
String newAddress = (String)saveas.getText().toString();
List<Address> addresses = geocoder.getFromLocationName(newAddress, 1);
我用不同的方式尝试了很多但没有任何作用...... 默认的地图应用程序运行良好,当用户输入地址时,它成功显示地图中的地址。我怎么能这样做..?
我已经添加了所有必需的权限,我正在真实设备上测试它(版本2.3)...
答案 0 :(得分:2)
您是否尝试过3G连接?我注意到如果你从wifi发送了几个反向地理定位请求,看起来你的IP在一段时间后被阻止,反向地理定位将不会响应一段时间。当我遇到类似的问题时,切换到3G后,请求对我有用。
答案 1 :(得分:2)
我的三星Galaxy Tab 10.1遇到了同样的问题。我搜索时间寻找解决方案并没有任何帮助。要解决问题,请尝试以下操作:
转到位置设置并启用:
1.使用无线网络 2.使用GPS卫星
等待GPS定位
此后,地理编码服务器开始响应。即使我禁用无线和GPS位置服务器仍在工作。我认为,如果您与Google分享您的位置,则只能使用地理编码器。
答案 2 :(得分:2)
我解决了改变背景的同样问题。
我使用Fragment,所以我的代码就像这样
public class SearchRoteFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.teste_mapa, container, false);
context = getActivity();
...
}
当我调用地理编码时,我会这样做
Geocoder geoCoder = new Geocoder(context, Locale.getDefault());
答案 3 :(得分:1)
如果在创建Geocoder时设置locale参数可能很有用:
yourGeocoder = new Geocoder(this, Locale.CANADA);
请用最佳值替换第二个参数。
我猜默认的语言环境值可能与您使用的地图区域不对应。
答案 4 :(得分:0)
我不知道它是否有助于BTW以下是我项目的片段工作正常修改它以满足您的需求
String newAddress = saveas.getText().toString();
searchFromLocationName(newAddress);
private void searchFromLocationName(String name){
try {
List<Address> result
= myGeocoder.getFromLocationName(name, MAX_RESULT);
if ((result == null)||(result.isEmpty())){
Toast.makeText(AndroidgetFromLocationNameActivity.this,
"No matches were found or there is no backend service!",
Toast.LENGTH_LONG).show();
}else{
MyArrayAdapter adapter = new MyArrayAdapter(this,
android.R.layout.simple_list_item_1, result);
listviewResult.setAdapter(adapter);
Toast.makeText(AndroidgetFromLocationNameActivity.this,
"Finished!",
Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(AndroidgetFromLocationNameActivity.this,
"The network is unavailable or any other I/O problem occurs!",
Toast.LENGTH_LONG).show();
}
}
答案 5 :(得分:0)
可能您的手机未连接且无法从服务器检索答案。
正如解释here地理编码器
throws IOException if the network is unavailable or any other I/O problem occurs
答案 6 :(得分:0)
我在Android 2.3.4上测试,并收到“无法解析服务器响应”异常。
确保您的Google地图正常运行,我的地图无效!一旦谷歌地图开始工作Geocoder 很好。
我切换过“使用无线网络”&amp; “使用GPS卫星”来自“位置和安全”设置。