0

我创建了一个自动完成地址搜索文本框。我的问题是我无法让它正常工作:

  1. 无论我做什么,地址通常都超出了边界框 -这没有帮助
  2. 查找不包含键入文本的地址。
  3. 找到的地址比 max 少,但它不包含好的结果。
  4. 结果列表有时完全无关紧要。
  5. 我需要输入几乎整个地址才能得到正确的结果。

资源:

    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
       List<Address> addresses = null;
          try {
             if (Geocoder.isPresent()) {
                // Bounding box: Hungary
                addresses = geocoder.getFromLocationName(text, 5, 46.13, 21.96, 48.89, 16.69);
             }
          } catch (IOException e) {
             Log.v(tag, "Geocoding error: " + e.getMessage());
             e.printStackTrace();
          }

我的目标是制作一个地址搜索文本框,该文本框的结果与 Android Maps 搜索文本框中的结果相同 - 除了之前输入/最喜欢的地址等,这是另一回事。

4

1 回答 1

0

Google Places Autocomplete API可能会有所帮助。据我所知,您必须获得许可才能在商业应用程序中使用它。如果您的应用程序是免费的,那么您应该没问题。

编辑关于不准确的地理编码器结果:

我还没有玩过 Geocoder。但到目前为止我可以告诉你的是:

您需要考虑到,在某些设备上,所有方法都返回 null(请检查 Geocoder.isPresent() 确定),因为 Geocoder 依赖于某些设备上可能缺少的一些底层实现。

这些结果也有可能来自 Google Places 以外的其他 Geocoder 引擎/服务。

最重要的是,查询结果永远不会完美。您很少获得当前位置的确切地址,因为该位置已关闭,或者因为地理编码器数据不够准确(或只是过时)。

如果你真的需要一个准确的地址,你应该给用户一个最佳候选选项列表和一些手动编辑地址的方法。

如果您需要基于位置名称的更准确的结果,您可以查看可用的在线服务,这些服务可以更好地满足您的需求。一个例子是 geonames.org。如果他们的数据库对您来说足够好,那么您需要获取或实现一些 Java API 来连接您选择的服务,并使用它来代替 Geocoder。

于 2012-07-08T21:25:36.763 回答