每个Android的location.Address方法返回什么?

2024-04-08

我试图弄清楚如何使用 Android SDK 和 android.location.Address 类获取地址组件。

有些方法非常简单,其他方法很容易通过示例中的示例来理解文档 http://developer.android.com/reference/android/location/Address.html,但其中一些对我来说完全不清楚。要么是因为文档中没有示例,要么是因为该示例指的是美国,而美国没有与其他国家相同的政治组织。

我一直在寻找它们的含义,但网上大多数教程都只是使用该方法getAddressLine(int index)教,然后由开发人员学习其余的。

  • getAdminArea():返回州首字母缩略词(“CA”,代表加利福尼亚州)
  • getCountryCode():返回国家 ISO 代码(“JP”,代表日本)
  • getCountryName():返回国家/地区名称(“西班牙”,代表...西班牙)
  • getFeatureName():返回位置名称(如果有)(“Louvre”,对于博物馆)
  • getLocality():返回城市名称(“伦敦”)
  • getPostalCode():返回邮政编码(“94110”,在美国)
  • getPremises(): ???
  • getSubAdminArea(): ???
  • getSubLocality(): ???
  • getSubThoroughfare(): ???
  • getThoroughfare():返回街道和建筑物编号(“1600 Amphitheatre Parkway”)

我的问题是所有这些方法返回什么(以及示例,如果可能的话)。

另外,我想知道如何分别获取建筑物号码和街道名称。解析 Thoroughfare 字符串似乎并不难,但考虑到在某些国家/地区数字位于街道之前,而其他国家则位于街道之后,解析文本的最佳方法是什么?


我没有找到有关该标准的完整文档android.location.Address用于在全球范围内识别和存储地址,因此我对不同国家/地区进行了多次地址查询以解释结果。

正如 Guilherme 所说,我们有getAddressLine(int index)以及提取地址每个元素的方法列表。

这篇文章并不是为了解释代码,而是把它放在这里供需要的人查看。

List<Address> addresses;
Geocoder geocoder = new Geocoder(getActivity());
addresses = geocoder.getFromLocation(latitude, longitude, 10);
if (addresses == null || addresses.isEmpty()) {
    // Mygeocoder is a class with a http request to google server, that replaces Geocoder, if not work
    addresses = MyGeocoder.getFromLocation(latitude, longitude, 10);
}

HashMap itemAddress;
ArrayList itemList = new ArrayList<HashMap<String, String>>();

Log.d("Addresses", "" + "Start to print the ArrayList");
for (int i = 0; i < addresses.size(); i++) {
    itemAddress = new HashMap<String, String>();
    Address address = addresses.get(i);
    String addressline = "Addresses from getAddressLine(): ";
    for (int n = 0; n <= address.getMaxAddressLineIndex(); n++) {
        addressline += " index n: " + n + ": " + address.getAddressLine(n) + ", ";
    }
    Log.d("Addresses: ", addressline);
    Log.d("Addresses getAdminArea()", "" + address.getAdminArea());
    Log.d("Addresses getCountryCode()", "" + address.getCountryCode());
    Log.d("Addresses getCountryName()", "" + address.getCountryName());
    Log.d("Addresses getFeatureName()", "" + address.getFeatureName());
    Log.d("Addresses getLocality()", "" + address.getLocality());
    Log.d("Addresses getPostalCode()", "" + address.getPostalCode());
    Log.d("Addresses getPremises()", "" + address.getPremises());
    Log.d("Addresses getSubAdminArea()", "" + address.getSubAdminArea());
    Log.d("Addresses getSubLocality()", "" + address.getSubLocality());
    Log.d("Addresses getSubThoroughfare()", "" + address.getSubThoroughfare());
    Log.d("Addresses getThoroughfare()", "" + address.getThoroughfare());
}

以下是迈阿密某个点的纬度和经度的结果:

  • D/Addresses:开始打印ArrayList
  • D/地址::来自 getAddressLine() 的地址:索引 n:0:7500 SW 120th St,索引 n:1:迈阿密,佛罗里达州 33156,索引 n:2:EE。呃.,
  • D/Addresses getAdminArea():佛罗里达州
  • D/Addresses getCountryCode()﹕美国
  • D/Addresses getCountryName(): 统一国家
  • D/地址 getFeatureName():7500
  • D/Addresses getLocality(): 迈阿密
  • D/地址 getPostalCode()﹕33156
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():null
  • D/Addresses getSubLocality():null
  • D/地址 getSubThoroughfare(): 7500
  • D/地址 getThoroughfare():SW 120th St
  • D/地址::来自 getAddressLine() 的地址:索引 n:0:Pinecrest,佛罗里达州,索引 n:1:EE。呃.,
  • D/Addresses getAdminArea():佛罗里达州
  • D/Addresses getCountryCode()﹕美国
  • D/Addresses getCountryName(): 统一国家
  • D/Addresses getFeatureName():Pinecrest
  • D/Addresses getLocality():Pinecrest
  • D/Addresses getPostalCode():null
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():Condado de 迈阿密-戴德
  • D/Addresses getSubLocality():null
  • D/Addresses getSubThoroughfare(): null
  • D/Addresses getThoroughfare():null
  • D/地址::来自 getAddressLine() 的地址:索引 n:0:迈阿密,佛罗里达州 33156,索引 n:1:EE。呃.,
  • D/Addresses getAdminArea():佛罗里达州
  • D/Addresses getCountryCode()﹕美国
  • D/Addresses getCountryName(): 统一国家
  • D/地址 getFeatureName():33156
  • D/Addresses getLocality(): 迈阿密
  • D/地址 getPostalCode()﹕33156
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():null
  • D/Addresses getSubLocality():null
  • D/Addresses getSubThoroughfare(): null
  • D/Addresses getThoroughfare():null
  • D/地址::来自 getAddressLine() 的地址:索引 n:0:Condado de Miami-Dade,索引 n:1:佛罗里达州,索引 n:2:EE。呃.,
  • D/Addresses getAdminArea():佛罗里达州
  • D/Addresses getCountryCode()﹕美国
  • D/Addresses getCountryName(): 统一国家
  • D/Addresses getFeatureName():Condado de 迈阿密-戴德
  • D/Addresses getLocality(): null
  • D/Addresses getPostalCode():null
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():Condado de 迈阿密-戴德
  • D/Addresses getSubLocality():null
  • D/Addresses getSubThoroughfare(): null
  • D/Addresses getThoroughfare():null
  • D/地址::来自 getAddressLine() 的地址:索引 n:0:佛罗里达州,索引 n:1:EE。呃.,
  • D/Addresses getAdminArea():佛罗里达州
  • D/Addresses getCountryCode()﹕美国
  • D/Addresses getCountryName(): 统一国家
  • D/Addresses getFeatureName():佛罗里达州
  • D/Addresses getLocality(): null
  • D/Addresses getPostalCode():null
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():null
  • D/Addresses getSubLocality():null
  • D/Addresses getSubThoroughfare(): null
  • D/Addresses getThoroughfare():null
  • D/Addresses::来自 getAddressLine() 的地址:索引 n:0:Estados Unidos,
  • D/Addresses getAdminArea():null
  • D/Addresses getCountryCode()﹕美国
  • D/Addresses getCountryName(): 统一国家
  • D/Addresses getFeatureName(): 统一国家
  • D/Addresses getLocality(): null
  • D/Addresses getPostalCode():null
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():null
  • D/Addresses getSubLocality():null
  • D/Addresses getSubThoroughfare(): null
  • D/Addresses getThoroughfare():null

在上面的结果集中,我们看到 Geocoder 产生了 6 组结果,如果我们分析的是从确切地址及其所有属性开始的分层位置,所以只有国家/地区。就好像每一层都是不同的地图,单个国家的地图,州和国家的地图,直到方向和街道的地图,以及每个地图的每组地理编码器查询结果。

我咨询了哥伦比亚一个村庄的一个点, Geocoder 给了我 5 组结果。我们只分析第一组与前一组进行比较。

  • D/Addresses:开始打印ArrayList
  • D/地址:: getAddressLine() 中的地址:索引 n:0:Calle 34 # 36-2 a 36-100,索引 n:1:帕尔米拉,Valle del Cauca,索引 n:2:哥伦比亚,
  • D/Addresses getAdminArea():考卡山谷
  • D/地址 getCountryCode()﹕CO
  • D/Addresses getCountryName():哥伦比亚
  • D/地址 getFeatureName():362-36100
  • D/Addresses getLocality():帕尔米拉
  • D/Addresses getPostalCode():null
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():null
  • D/Addresses getSubLocality():null
  • D/地址 getSubThoroughfare():362-36100
  • D/地址 getThoroughfare():Calle 34

唯一的区别是这些结果没有 PostalCode 和 SubAdminArea。

现在,我参考了埃及的一个观点:

  • D/Addresses:开始打印ArrayList
  • D/Addresses::来自 getAddressLine() 的地址:索引 n: 0: 埃及,索引 n: 1: 埃及,索引 n: 2: 埃及,索引 n: 3: Gobernación de El Cairo,索引 n: 4: 埃及,
  • D/Addresses getAdminArea():null
  • D/地址 getCountryCode():EG
  • D/Addresses getCountryName():Egipto
  • D/地址 getFeatureName():
  • D/Addresses getLocality(): null
  • D/Addresses getPostalCode():null
  • D/Addresses getPremises():null
  • D/Addresses getSubAdminArea():null
  • D/Addresses getSubLocality():null
  • D/Addresses getSubThoroughfare(): null
  • D/Addresses getThoroughfare(): ??????

埃及有很多不同之处;例如,getMaxAddressLine()抛出5个结果,哥伦比亚和美国只有3个结果。更改国家/地区的位置顺序getAddressLine()哥伦比亚和美国是getAddressLine(2)埃及是getAddressLine(4). getLocality()应该有城市“开罗”,但没有保存。

总之,Geocoder 结果列表是针对各个国家/地区系统的适配,并且缺少更新。

已经取决于正在开发的应用程序,为了优化地理编码器显示的结果,如果我们向用户显示它所在的位置,最好使用getAddressLine(),但是如果我们需要国家数据库,则必须使用getCountry()。如果你想了解更多细节,我们必须识别每个国家或地区的制度并针对每个国家或地区制定制度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个Android的location.Address方法返回什么? 的相关文章

随机推荐

  • NLTK 中的 FreqDist 未对输出进行排序

    我是 Python 新手 我正在尝试自学语言处理 python 中的 NLTK 有一个名为 FreqDist 的函数 可以给出文本中单词的频率 但由于某种原因它无法正常工作 这是教程让我写的 fdist1 FreqDist text1 vo
  • Hadoop 分布式缓存类路径

    我有一个 Hadoop 0 20 2 集群 我正在考虑使用分布式缓存 http hadoop apache org common docs r0 20 2 api org apache hadoop filecache Distribute
  • 如何摆脱 NSLog 中的所有这些垃圾?

    当我使用 NSLog fooBar 它打印出很多我不想要的东西 2009 09 03 13 46 34 531 MyApp 3703 20b fooBar 有没有办法在没有这个大前缀的情况下将某些内容打印到控制台 我想在控制台中绘制一张桌子
  • 在 Eclipse 中的两个独立设备上运行调试

    我有 2 台 Android 设备连接到我的电脑 我需要同时调试它们 因为我在它们之间来回发送数据 当我将它们都设置为调试模式时 它一次只会停止一个 我无法在发送后立即停止 发送者 然后调试 接收者 它只是不喜欢而已 我真的需要能够运行两个
  • 没有错误:未调用 PDO 构造函数

    下午好 我昨天开始使用 PDO 但遇到了一些问题 我正在创建扩展类 它不起作用 而且我找不到错误 这是我的助手类的代码 用于工作女巫 PDO class EPDO extends PDO Some identificator of conn
  • 如何在 Javascript 的脚本元素中添加局部变量和不同的函数[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要创建一个脚本元素 如下所示 div class abcd div 我尝试通过首先通过 document Createelement 选
  • 如何查找特定

    环境 美丽的汤4 Python 2 7 5 Logic 找到所有 li 内的实例 ul 与一类my class eg ul class my class li thing one li li thing two li ul 澄清 只需获取之
  • Flutter - 自动调整 AlertDialog 大小以适合列表内容

    我需要从休息网络服务动态加载列表城市 并让用户从警报对话框中选择一个城市 我的代码 createDialog fetchCities then response showDialog context context builder Buil
  • VSCode 显示文件夹 /run/user/1000/doc 中路径的问题

    我最近在更新到 v1 77 3 后在 VSCode 中遇到了一个问题 新项目的路径是错误的 而旧项目的路径是正确的 特别是 新项目在前缀为的文件夹中打开 run user 100 doc 接下来是类似于 sha256 的摘要 每个文件夹都不
  • \ 对非转义字符有何作用?

    I 又问了一个不好的问题 https stackoverflow com questions 4380386 fix escape javascript escape character所以我会问别的事情 根据http www c poin
  • 存储值以便在以后的函数中使用的最佳方法是什么?我听说全局变量很邪恶

    所以我使用的代码位于http jsfiddle net 8j947 10 http jsfiddle net 8j947 10 它为变量 isLive 返回 true 或 false 值 如何在稍后的函数中使用变量 onLive 我在以下位
  • 使用Jackson写yaml?

    我正在使用 Jackson 来读取和修改 yaml 文件 效果很好 不过 我找不到编写 yaml 所需的魔法 ObjectMapper mapper new ObjectMapper new YAMLFactory ObjectNode r
  • 使用 docker-compose 时如何为 mongodb 镜像添加 --auth ?

    我正在使用 docker compose 来运行由 node mongodb nginx 创建的项目 我已经使用构建了该项目docker build 然后我用docker up d nginx开始我的项目 但我还没有找到使用 auth 运行
  • 我应该在 Common Lisp 中使用哪些正则表达式库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python 列表索引效率

    关于内置 python 列表对象的快速问题 假设您有一个包含数字 0 99 的列表 您正在编写一个程序 该程序获取列表中的最后一项并将其用于其他目的 使用list 1 比使用list 99 更有效吗 换句话说 无论哪种情况 python 都
  • Python-从另一个列表中删除一组列表

    array1 1 2 3 4 5 6 7 8 9 array2 1 2 2 2 5 6 6 6 9 temp set array2 array1 remove temp Traceback most recent call last Fil
  • JqG​​rid 搜索字段的多个文本框

    我想知道 JqGrid 高级搜索是否可以为我想要搜索的某些字段显示多个文本框 例如 如果我有一个 电话号码 字段 我希望能够可视化 2 个框 一个用于区号 另一个用于电话号码的其余部分 然后按 查找 后 我希望能够获取两个值并将它们合并或执
  • 将事件分配给事件处理程序的两种不同类型之间的区别

    我在 SO 中看到了这个示例代码 它说一种做法不好 另一种做法很好 但我不明白为什么 事实上 我收到了著名的 RCW COM 对象错误 该帖子说这可能是一个原因 public class SomeClass private Interop
  • 如何在单击项目时检查ListView的复选框?

    如何在单击项目时检查ListView的复选框 我有一个带有复选框 文本视图 按钮的列表视图 这里我想选择ListView的多行 所以使用了CheckBox 如果我点击一行 我想让它对应的CheckBox被选中并获取ListView中被点击项
  • 每个Android的location.Address方法返回什么?

    我试图弄清楚如何使用 Android SDK 和 android location Address 类获取地址组件 有些方法非常简单 其他方法很容易通过示例中的示例来理解文档 http developer android com refer