使用gocoder时出现IOException:等待服务器响应超时

时间:2016-04-03 20:24:21

标签: android google-maps google-geocoder

我一直在开发使用谷歌地理编码器的Android应用程序将不同的纬度和经度转换为人类可读的地址但是几分钟之前我一直在收到IOException并显示以下消息“超时等待来自服务器的响应”。还有其他人面临同样的问题吗?我知道今年1月,地理编码器API出现了类似的问题,这是Google的问题。

我几个月来没有改变与申请中使用地理编码器有关的任何事情。

我按预期使用地理编码器:

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); List addresses = geocoder.getFromLocation(latitude, longitude, 1);

我的清单中有正确的权限:

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

这是我得到的完整堆栈跟踪:

04-03 22:55:51.788 19955-19955/com.tek3.thanksfrog W/System.err: java.io.IOException: Timed out waiting for response from server
04-03 22:55:51.798 19955-19955/com.tek3.thanksfrog W/System.err:     at android.location.Geocoder.getFromLocation(Geocoder.java:136)
04-03 22:55:51.798 19955-19955/com.tek3.thanksfrog W/System.err:     at com.tek3.thanksfrong.AppController.getLocationInfoFromLatLng(AppController.java:687)
04-03 22:55:51.798 19955-19955/com.tek3.thanksfrog W/System.err:     at com.tek3.thanksfrong.fragments.NewSceneFragment.loadCurrentLocationAddress(NewSceneFragment.java:268)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at com.tek3.thanksfrong.fragments.NewSceneFragment.onResume(NewSceneFragment.java:247)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.Fragment.performResume(Fragment.java:1832)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:995)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.os.Handler.handleCallback(Handler.java:725)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:92)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.os.Looper.loop(Looper.java:176)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5317)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

首先,它取决于您正在使用的Android版本。例如,在API 23中,您需要检查是否有权使用位置权限?

我的第二点是:你检查你的位置(纬度和经度)是否为空。因为如果您使用位置管理器,有时位置为空,因为GPS比网络慢,或者因为网络和GPS不可用。

但我不确定我的最后一点,但是对于使用谷歌的地理编码器,你不需要拥有API密钥吗?或许我只是混合了一切