5

我正在尝试使用 Google API v2 检索我的位置地址。

这是我所做的:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
            List<Address> addresses = null;
            String addressText = "";
            try {
                while (addresses==null){
                    addresses = geocoder.getFromLocation(userLocation.latitude,
                            userLocation.longitude, 1);
                }

                if (addresses != null && addresses.size() > 0) {
                    Address address = addresses.get(0);
                    addressText = String.format(
                            "%s, %s, %s",
                            address.getMaxAddressLineIndex() > 0 ? address
                                    .getAddressLine(0) : "", address
                                    .getLocality(), address.getCountryName());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

我已经阅读了几篇文章,发现 getFromLocation() 请求并不总是能检索到结果。所以我尝试循环播放。

这不会崩溃,但 addressText 总是“”,有什么想法吗?INTERNET 权限已授予我的应用程序。我不使用 GPS。

userLocation 不为空,所以这不是问题,我使用它向地图添加标记,它工作正常。严格来说,这似乎是地理编码器的问题。

4

4 回答 4

5

您可以通过两种方法获取地址 1. 使用 Geocoder 2. 使用 Google API

您可以从此链接获取解决方案。它有两种解决方案。访问我对 Google API 解决方案的回答。

使用纬度和经度获取特定地址

于 2013-07-31T09:10:12.557 回答
1

我设法解决了这个问题……我的代码抛出了 getFromLocation() 上不可用的服务异常。

详细信息可以在这里找到:https ://code.google.com/p/android/issues/detail?id=38009

我重新启动了我的设备,现在它工作正常。感谢你的帮助!

于 2013-07-31T09:58:49.353 回答
-1

尝试重启设备!我的代码在 geocoder.getFromLocation(lat, lng, 1); 上崩溃了 并导致(IOException e)但是在尝试了许多权限、代码更改等之后,我只是打开/关闭了我的三星手机并且它工作了......我认为 Linux 内核应该比 Windows 更好,即不需要重启?

于 2014-09-03T01:23:48.050 回答
-1

伙计们仔细检查你没有交换你的经纬度:DI 一直在寻找大西洋中部的地址,我花了大约 3 个小时才意识到。

同样使用模拟器 GPS,您至少需要在我找到后启动 Google 地图,以初始化播放服务位置信息。

于 2017-12-21T14:34:09.213 回答