【问题标题】:Find city in Google Geocoding API在 Google Geocoding API 中查找城市
【发布时间】:2018-04-03 13:10:46
【问题描述】:

我正在使用谷歌地理编码 API 按需将城市存储在数据库中。我提供了一个输入字段供用户输入他们的城市。为此我使用了谷歌的地点自动完成功能。

我想存储在输入字段中输入的城市及其国家/地区。使用输入字段中的数据调用谷歌地理编码 API,以 JSON 格式返回数据。

我查看了address_components 中的国家/地区。然后我在address_components 中接受了types = locality 的对象。问题是,对于在输入字段中键入的某些位置,来自谷歌地理编码 API 的 JSON 没有types = locality。所以在这些情况下,我应该将 address_components 中的哪一个对象作为城市存储在我的数据库中。
这个网站是google geocoding api https://findcity.in/

的例子

需要建议。这个问题之前可能不清楚。所以我编辑了它。谢谢

【问题讨论】:

  • 我建议过滤自动完成 API 调用以仅检索城市(使用 types=(cities))。这样您就可以确保您将在types 响应中收到localityadministrative_area_level_3。更多信息here。然后,您可以使用收到的placeId 来查询地理编码 API,以确保您指的是完全相同的地方。

标签: google-maps google-geocoding-api


【解决方案1】:

你是对的,locality 类型并不总是出现在地址组件数组中。根据国家甚至同一国家的地区,城市名称可能出现在不同的地址组件中。这取决于使用 Google 的特定区域和地址模板的数据建模。不幸的是,没有针对每个国家/地区的文档。

在官方文档中可以找到如下解释

此示例中特定地址组件的选择基于典型的地址格式。您可能需要选择不同的组件以与不同国家/地区的邮政地址格式保持一致。例如,代码选择 locality 组件,该组件通常表示地址的城市部分。但是,请注意以下组件可能不同的示例:

  • 在英国和瑞典,显示城市的正确组件是 postal_town。

  • 在日本,各县的成分不同。

  • 布鲁克林和纽约市的其他地区不包括该城市作为地址的一部分。他们改用 sublocality_level_1。

来源:https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

我希望这会有所帮助。

【讨论】:

  • 谢谢。该链接对我帮助很大。
【解决方案2】:

administrative_area_3表示国家级以下的三阶民事实体。

这方面的一个例子是对Montgomery 的搜索查询在Montgomery, AL 之前以您的特定状态返回Montgomery County。这部分是由于区域偏差会根据您当前的位置返回指定的结果。

Here is some documentation from Google 超过了GeocoderResult

我想鼓励您在直接提问之前务必先查看 Google Maps API 参考指南。它相当健壮,您可以在那里找到很多有用的信息。

【讨论】:

  • 我已经阅读了文档。我需要建议将某些事物视为城市。在某些特殊地点的情况下(在您的情况下为蒙哥马利)。谢谢
猜你喜欢
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2012-05-14
  • 1970-01-01
  • 2011-06-12
相关资源
最近更新 更多