代码之家  ›  专栏  ›  技术社区  ›  Shehan Simen

place_Administration_area_level_1为同一区域返回不同的值

  •  -1
  • Shehan Simen  · 技术社区  · 7 年前

    我使用谷歌地图api获得了西班牙马德里一所房子的街道地址。然后我得到了地方行政区1级的以下信息。

    地方行政区1层短: 马德里大学 地点、行政区、级别、长度: 马德里大学

    然后我将这些细节保存到数据库中。现在我想搜索我从马德里保存的地址。所以从前端,我再次搜索西班牙马德里的google place api。然后谷歌给我返回以下地点行政区级别1。

    地方行政区1层短: 马德里自治区 地点、行政区、级别、长度: 马德里自治区

    看到区别了吗?现在我不能用这个字符串来搜索我的数据库,因为它有不同的值。在这两种情况下,我都发送language=en。那么为什么它会为这个地址字段返回不同的值呢? 唯一的区别是,在第一个例子中,我使用了马德里一所房子的街道地址。在第二个例子中,我只使用了西班牙马德里。但在这两种情况下,它应该为place_Administration_area_level_1返回相同的值。正因为如此,我无法按单个值搜索数据库。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    这是因为地理编码API web服务应用了本地化策略。你可以在下面的帖子中读到:

    https://mapsplatform.googleblog.com/2014/11/localization-of-street-addresses-in.html

    谷歌地图地理编码API现在返回的街道级别地址 偏爱当地语言 ,同时尽可能让只阅读所需语言的用户和本地人都能理解地址。

    如果本地语言和用户语言都使用相同的字母表,那么地理编码API现在将返回街道和地方的本地名称。

    在您的示例中,第一个请求搜索街道级别的地址,因此您可以获得地址组件Administration_area_level_1的西班牙语名称 Comunidad de Madrid 如上所述。

    第二个请求不是街道级别的地址,因此上述策略不适用,您将根据语言参数(英语)获得一个名称 Community of Madrid .

    我相信您可能对以下功能请求非常感兴趣:

    Add place_id in each address_components

    一旦实现了此功能请求,您将能够比较地址组件中的位置ID而不是名称。

    我希望这能解决你的疑问。