6

我知道这个问题以前经常被问到,但我无法从任何答案或搜索结果中得到解决方案。我必须尽快解决这个问题。我试图从用户输入的地址中获取纬度和经度,但我继续得到:

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 版)上对其进行测试...

4

7 回答 7

2

您是否尝试过 3G 连接?我注意到,如果您从 wifi 发送多个反向地理定位请求,您的 IP 会在一段时间后被阻止,并且反向地理定位在一段时间内不会响应。当我遇到类似问题时,切换到 3G 使请求对我有用。

于 2012-03-16T10:47:35.507 回答
2

我的三星 Galaxy Tab 10.1 也有同样的问题。我在几个小时内寻找解决方案,但没有任何帮助。要解决问题,请尝试以下操作:

转到位置设置并启用:

1.使用无线网络 2.使用 GPS 卫星

等待 GPS 定位修复

此后,地理编码器服务器开始响应。即使我禁用了无线和 GPS 定位,服务器仍在工作。我认为只有在您与 Google 共享您的位置时才能使用地理编码器。

于 2012-10-15T09:59:38.007 回答
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());
于 2013-10-03T23:00:24.563 回答
1

如果您在创建 Geocoder 时设置 locale 参数,这可能会很有用:

yourGeocoder = new Geocoder(this, Locale.CANADA); 

请用最佳值替换第二个参数。

我猜默认语言环境值可能与您使用的地图区域不对应。

于 2011-11-05T15:02:50.243 回答
0

可能您的手机未连接,无法从服务器检索答案。

正如这里解释的地理编码器

throws IOException if the network is unavailable or any other I/O problem occurs
于 2013-05-01T22:16:23.013 回答
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();
 }
}
于 2011-10-31T12:06:12.600 回答
0

我在 Android 2.3.4 上进行测试,收到“无法解析来自服务器的响应”异常。

确保您的谷歌地图正常工作,我的不工作!一旦谷歌地图开始工作,地理编码器就很好了。

我确实从“位置和安全”设置中切换了“使用无线网络”和“使用 GPS 卫星”。

于 2014-01-24T00:22:18.803 回答