【问题标题】:Restricting a Google Maps geocode request by county?按县限制谷歌地图地理编码请求?
【发布时间】:2018-05-02 21:45:39
【问题描述】:

我正在使用 JavaScript API,但似乎也无法让它与 CURL API 一起工作。

问题:我想按县 + 州限制我的地理编码结果。 Google Maps 地理编码 API 组件过滤不再识别 "San Mateo County, CA" 格式的 administrativeArea(以前工作过),并且无法识别 "San Mateo County",即使根据结果对象它绝对是 administrative_area_level_2

例如,"https://maps.googleapis.com/maps/api/geocode/json?address=oakland&components=country:US|administrative_area:San+Mateo+County&key=YOUR_KEY_HERE" 返回 Oakland 的结果,即使它位于阿拉米达县,而不是圣马特奥县。使用“加利福尼亚州圣马特奥县”也完全被忽略。执行components=country:US|administrative_area:San+Mateo+County|adminstrative_area:CA 同样不起作用(据我所知,无论如何使用 JS API 是不可能的)。

(最终的用例是在地理编码的地址实际上不是位置时处理结果,例如“无家可归”,它曾经返回错误代码但最近开始返回“美国”,部分原因是出现了组件过滤已经改变了。)

如果你想使用 API,这里有一个 JS fiddle 来实现这一点:https://jsfiddle.net/Lzj1uvfd/

【问题讨论】:

  • 打开一个新的issue
  • 我提交了一个问题,我们看看会发生什么。

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


【解决方案1】:

早在 2018 年 1 月,Geocoding API 的组件过滤就发生了变化。在此更改之后,只有邮政编码和国家/地区过滤器作为严格过滤器起作用,路线、地区和管理区域不是严格过滤器,只会影响结果。

Google 向高级计划客户发送了有关此更改的通知。我在这里分享这封电子邮件的副本

您好 Maps APIs 高级计划客户,

Google 地图地理编码服务即将进行的质量改进将要求地理编码 API 的组件过滤功能限制较少。这将于 2018 年 1 月 16 日生效。

与此同时,我们在 Geocoding API Web 服务上公开了一个测试参数,以便您了解此更改是否会影响您使用组件过滤功能的地理编码请求。要使用该参数,请将relax_components=true 添加到您的请求中。

此测试参数将在 2018 年 1 月 16 日之前提供。在该日期之后,该参数将被忽略,但仍会接受使用该参数的请求。没有等效的 JavaScript。

质量改进将为寻求找到有效地址的请求提供更高质量的结果。但是,以下陈述将不再适用于组件过滤功能: 包含组件过滤器的查询仅返回与过滤器匹配的地理编码结果。如果未找到匹配项,则地理编码器将返回与过滤器本身匹配的结果。 仅当您提供相互排除的过滤器时,组件过滤才会返回 ZERO_RESULTS 响应。

邮政编码和国家/地区代码过滤器将继续严格执行所有查询。

例子

位置过滤器未严格包含的地址(内华达州斯普林谷)但在附近(内华达州帕拉代斯)将被找到,而不是与位置过滤器完全匹配的不太具体的结果:

示例请求 #1:address=4755+W+Flamingo+Rd&components=locality:Spring+Valley|country:US 当前结果:“W Flamingo Rd, Spring Valley, NV, USA”(路线,partial_match) 未来结果:“4755 W Flamingo Rd, Las Vegas, NV 89103, USA”(前提)

当位置过滤器会形成不存在的地址时,可能会返回不同位置的结果,而不是 ZERO_RESULTS:

示例请求 #2:components=locality:Montreal+Lake+Reserve|administrative_area:Saskatchewan|country:CA 当前结果:ZERO_RESULTS 未来结果:“蒙特利尔湖,SK S0J 1Y0,加拿大”(成立)

示例请求 #3:components=country:US|locality:friends+creek+conservation+area+cisco|administrative_area:IL 当前结果:ZERO_RESULTS 未来结果:“Friends Creek Conservation Area, 13734 Friends Creek Park Rd, Cisco, IL 61830, USA”(公园)

互斥过滤器不再保证零结果。自从旧的正向地理编码器于 2017 年 4 月 3 日永久停用以来,情况就已经如此。即将发生的变化将使这种情况更频繁地发生,例如当管理区域过滤器优于位置过滤器时:

示例请求 #4:address=Müslistrasse+16&components=locality:Spreitenbach|administrative_area:ZH|country:CH 当前结果:ZERO_RESULTS 未来结果:“Muslistrasse 16, 8820 Wädenswil, Switzerland”(street_address)

从未找到的无效地址将不再产生与过滤器本身匹配的结果。这可能会导致 ZERO_RESULTS 或一个或多个与某些过滤器匹配的有效地址。

示例请求 #5:address=13+Rue+del+Percebe&components=locality:Sydney|country:AU 当前结果:“Sydney NSW 2000, Australia”(地点) 未来结果:ZERO_RESULTS

示例请求 #6:address=Sesame+St&components=locality:Sydney|country:AU 当前结果:“Sydney NSW 2000, Australia”(地点) 未来结果:“Sesame St, Mount Waverley VIC 3149, Australia”(路线)和另外 2 个

在极少数情况下,对于给定的过滤器值,可能不再找到有效地址。

示例请求 #7:address=Fuerteventura&components=locality:Almeria|administrative_area:AL|country:ES 当前结果:“Calle Isla de Fuerteventura, 04007 Almería, Spain”(路线) 未来结果:ZERO_RESULTS

问候, Google Maps API 团队

希望这些信息对您有所帮助!

【讨论】:

  • 是的,这就是团队对我的问题的回复!显然,文档是在 5 月初左右更新的,所以可能就在我遇到这个之后。 ¯_(ツ)_/¯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多