place_administrative_area_level_1返回相同区域的不同值

时间:2019-01-31 11:33:35

标签: google-maps google-maps-api-3 geocoding google-geocoding-api

我用Google Map API获取了西班牙马德里一所房屋的街道地址。然后我获得了place_administrative_area_level_1的以下信息。

place_administrative_area_level_1_short:马德里自治大学 place_administrative_area_level_1_long:马德里自治大学

然后我将这些详细信息保存到数据库中。现在,我要搜索我从马德里保存的地址。因此,从前端开始,我再次搜索西班牙马德里的Google Place API。然后Google向我返回了place_administrative_area_level_1的以下内容。

place_administrative_area_level_1_short:马德里自治区 place_administrative_area_level_1_long:马德里自治区

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

1 个答案:

答案 0 :(得分:2)

这是因为Geocoding API Web服务应用了本地化策略。您可以在以下文章中了解它:

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

  现在,由Google Maps Geocoding API返回的

街道级地址偏爱本地语言,同时使仅阅读所请求语言的用户以及本地人都尽可能地理解该地址

     

如果本地语言和用户语言都使用相同的字母,则Geocoding API现在将返回街道和位置的本地名称。

在您的示例中,第一个请求搜索街道级别的地址,因此您获得了地址部分的管理名称的西班牙语名称,如上文所述。

第二个请求不是街道地址,因此上述策略未应用,并且您根据语言参数(英语为Comunidad de Madrid)获得了一个名称。

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

Add place_id in each address_components

实施此功能请求后,您将能够比较场所ID而不是地址组件中的名称。

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