【问题标题】:Geocoder getFromLocation() not null but has size 0 alwaysGeocoder getFromLocation() 不为空,但大小始终为 0
【发布时间】:2013-07-31 09:01:38
【问题描述】:

我正在尝试使用 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 不为空,所以这不是问题,我使用它向地图添加标记,它工作正常。严格来说,这似乎是地理编码器的问题。

【问题讨论】:

  • 您是否尝试过增加结果数量?例如addresses = geocoder.getFromLocation(userLocation.latitude, userLocation.longitude, 10); 从技术上讲,这不重要,只是“感兴趣”!
  • 不,不幸的是这不起作用。但感谢您的及时回复:)

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


【解决方案1】:

你可以通过两种方法获取地址 1. 使用地理编码器 2. 使用谷歌 API

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

Get the particular address using latitude and longitude

【讨论】:

  • 我已经检查了你的答案,我有一个问题,parser_Json 是什么类型的对象?
  • 它是一个 JSON 解析类。它从给定的 url 返回 JSON 对象。
  • 不,它基本上是一个类,您可以通过它读取和解析 json 字符串并将其转换为 JSONObject。我已经更新了该问题的答案并添加了 json_parser 类。你可以从那里得到它。
  • 谢谢,我尝试了您的解决方案,但仍然没有显示地址,除了“”之外没有任何空值。也许我传递坐标的方式有问题,我会对此进行更多研究。谢谢!
【解决方案2】:

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

详情请见:https://code.google.com/p/android/issues/detail?id=38009

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      伙计们,请仔细检查您的经纬度:D 我一直在询问大西洋中部的地址,我花了大约 3 个小时才意识到。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-07
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-06
        相关资源
        最近更新 更多