每个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方法返回什么? 的相关文章

  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • 通过列表视图检查动态生成的复选框时遇到问题

    我知道其他成员已经提出了这个问题 一些成员也给出了解决方案 但问题是我没有找到任何适合我的应用程序的解决方案 我正在创建一个应用程序 其中我有一个屏幕 它将显示动态列表视图 其中包含列表项 复选框和三个文本视图 一个用于候选人姓名 另外两个
  • jar 中的 apklib 有什么优点?

    我正在关注这个问题 https stackoverflow com questions 6059502 whats the difference between apklib and jar files但它并没有完全回答我的问题 jar 中
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • 不显示 WRITE_EXTERNAL_STORAGE 的权限对话框

    I want to download a file using DownloadManager And DownloadManager wants to WRITE EXTERNAL STORAGE permission I have in
  • 检测 ListView(或 ScrollView)内的滚动位置

    我正在构建一个聊天室应用程序 其中每 X 秒就会轮询一次新事件 每次发生这种情况时 此代码都会使用新数据更新 RoomAdapter ArrayAdapter 的自定义子类 并将其滚动到底部 RoomAdapter adapter Room
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • Android 中的 Google Places API - 适用于个人用户的 API_KEY

    我已经浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客 到处都建议使用 API KEY 来调用 REST 服务 API KEY 在整个项目 应用程序中都是相同的 每天的请求数限制为 1
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • putFragment() - 片段 x 当前不在 FragmentManager 中

    上面的标题被问了很多次 但答案似乎与FragmentStatePagerAdapter这与我的问题无关 我正在使用该方法putFragment Bundle String Fragment 直接地 The 安卓文档 http develop
  • 异步更新后更新Android Listview

    我正在将 HTTP 调用从同步调用转换为异步调用 由于连接在后台运行 因此当我最初设置列表适配器时 数据不存在 如何在 HTTP 调用后更新列表适配器 我尝试了一些方法 例如在数据发送回之前不设置适配器并再次设置适配器 但没有任何效果 这是
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • 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