我使用的是JavaScript API,但似乎无法使用CURL API。
问题:我想限制县+州的地理编码结果。 Google地图地理编码API组件过滤不再以administrativeArea
格式识别"San Mateo County, CA"
(之前曾工作过),并且即使它"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"
根据结果对象。
例如,components=country:US|administrative_area:San+Mateo+County|adminstrative_area:CA
会返回奥克兰的结果,即使它位于阿拉米达县,而不是圣马刁县。使用" San Mateo County,CA"完全被忽略了。同样地做{
$match: {
"UnitOfMeasure" : { $eq :'Metric' }
}
并不起作用(就我所知,JS API无论如何都是不可能的。)
(最终用例是当地理编码的地址实际上不是某个位置时处理结果,例如"无家可归",它曾用于返回错误代码但最近开始返回& #34;美国",部分原因是组件过滤似乎已经改变。)
如果你想使用API,这里有一个JS小提琴允许:https://jsfiddle.net/Lzj1uvfd/
答案 0 :(得分:1)
Geocoding API的组件过滤发生了变化,早在2018年1月。在此更改之后,只有邮政编码和国家/地区过滤器才用作严格的过滤器,路线,位置和管理区域不是严格的过滤器,只会影响结果。 / p>
Google向高级计划客户发送了有关此更改的通知。我在这里共享此电子邮件的副本
Hello Maps API高级计划客户
要提高Google Maps地理编码服务的质量,将要求Geocoding API的“组件过滤”功能的限制越来越少。该规定将于2018年1月16日生效。
同时,我们将在Geocoding API Web服务上公开一个测试参数,以便您可以使用组件过滤功能查看此更改是否会影响您的地理编码请求。要使用该参数,请在您的请求中添加Relax_components = true。
此测试参数将在2018年1月16日之前可用。在该日期之后,该参数将被忽略,但使用该参数的请求仍将被接受。没有等效的JavaScript。
质量改进将为寻求查找有效地址的请求提供更高质量的结果。但是,以下语句将不再适用于组件筛选功能: 包含组件过滤器的查询仅返回与过滤器匹配的地理编码结果。如果未找到匹配项,则地理编码器将返回与过滤器本身匹配的结果。 仅当您提供相互排斥的过滤器时,组件过滤才会返回ZERO_RESULTS响应。
将继续严格执行所有查询的邮政编码和国家/地区代码过滤器。
示例
将找到一个地址,该地址未严格包含在位置过滤器中(内华达州Spring Valley),但在附近(在内华达州天堂市),而不是精确地匹配位置过滤器的不太明确的结果:
示例请求1:地址= 4755 + W +火烈鸟+ Rd&components =位置:Spring + Valley |国家/地区:美国 当前结果:“美国内华达州春谷,W Flamingo Rd”(路线,partial_match) 未来结果:“美国内华达州89103,拉斯维加斯,弗拉明戈路4755号”(前提)
如果位置过滤器原本会形成一个不存在的地址,则可能会返回不同位置的结果,而不是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 未来结果:“美国伊利诺斯州61830,思科,朋友溪公园路13734号,朋友溪保护区”(公园)
相互排斥的过滤器不再保证ZERO_RESULTS。自从旧的前向地理编码器于2017年4月3日永久停用以来,情况已经如此。即将到来的更改将使这种情况发生的频率更高,例如当Administrative_area过滤器优于位置过滤器时:
示例请求4:地址=Müslistrasse+ 16&components =位置:Spreitenbach |行政区域:ZH |国家/地区:CH 当前结果:ZERO_RESULTS 未来结果:“瑞士Wädenswil,Muslistrasse 16,8820”(街道地址)
从未发现的无效地址将不再产生与过滤器本身匹配的结果。这可能会导致ZERO_RESULTS或一个或多个与某些过滤器匹配的有效地址。
示例请求5:地址= 13 + Rue + del + Percebe&components = locality:Sydney | country:AU 当前结果:“澳大利亚新南威尔士州悉尼2000”(本地) 未来结果:ZERO_RESULTS
示例请求6:地址=芝麻+ St&components =地理位置:悉尼|国家/地区:AU 当前结果:“澳大利亚新南威尔士州悉尼2000”(本地) 未来结果:“ Sesame St,Mount Waverley VIC 3149,澳大利亚”(路线)和另外2个
在极少数情况下,对于给定的过滤器值,可能找不到有效地址。
示例请求7:地址= Fuerteventura&components = locality:Almeria | administrative_area:AL | country:ES 当前结果:“ Calle Isla de Fuerteventura,西班牙04007阿尔梅里亚”(路线) 未来结果:ZERO_RESULTS
关于, Google Maps API小组
我希望这些信息对您有帮助!