如何以组织良好的格式获取地址

How to get address in a well-organized format

首先,我熟悉 Geocoder 和 Places API。出于这个原因,我不问如何通过使用这些来获得原始格式的整个地址。我正在寻找某个地方的正式地址。由于可以使用 Geocoder API 获取的地点没有组织,因此我无法通过调用同一个地点单元到达两个不同 LatLng 值的省份。例如,我可以通过调用 .adminArea() 获取与我当前位置相对应的城市,但我朋友的位置可能会作为他的引擎盖从 .adminArea() 返回。因此,尽管此对象的地址包含城市名称,但我无法从 Geocoder 对象中获取城市字符串。

如果我调用相关方法,是否还有另一个 API 可以给我正确的 street/locality/city?或者有没有办法解析 Geocoder 对象的地址,以便我可以获得最干净的地址组件?

你可以试试Bing Maps API。它本身不是 Android API,但您可以向 RESTful API 发出请求并获得非常标准化的结果。

这是一个示例结果JSON(下面只显示主要部分):

"address":{
    "addressLine":"1 Microsoft Way",
    "adminDistrict":"WA",
    "adminDistrict2":"King Co.",
    "countryRegion":"United States",
    "formattedAddress":"1 Microsoft Way, Redmond, WA 98052",
    "locality":"Redmond",
    "postalCode":"98052"
}

Locality 始终是城市,而 AdminDistrict 始终是州。

PS:我在我的一个项目中使用它,他们的配额非常公平。

有很多 API 可用于验证地址并将其解析为其组成部分。不要试图自己解决这个问题 ("step away from those regexes with your hands up!") 我偏爱 smartystreets.com 和他们的服务,但那是因为(披露)我是那里的开发人员并帮助构建了其中的大部分。