java.io.IOException:无法解析来自服务器的响应getFromLocationName()

时间:2011-10-31 10:38:57

标签: android google-maps reverse-geocoding google-geocoder

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

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)...

7 个答案:

答案 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卫星”来自“位置和安全”设置。