我在将componentRestrictions参数添加到Google Maps Geocoder对象时遇到问题。我正在使用JavaScript客户端api。具体来说,administrativeArea
财产对我不起作用。 Docs说类型是一个字符串,我尝试了很多组合,但仍然没有运气。
这是我的地理编码功能:
function geocodeAddress(geocoder, resultsMap) {
var address = document.getElementById('address').value;
geocoder.geocode({'address': address, 'componentRestrictions': {administrativeArea: 'Maricopa County'}}, function(results, status) {
if (status === 'OK') {
resultsMap.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: resultsMap,
position: results[0].geometry.location
});
console.log(results)
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
我可以让其他componentRestriction属性工作,如postalCode
和country
,但不是administrativeArea
。文件称该物业与所有administrative_area levels
相匹配,因此我尝试使用不同的美国郡和美国各州,但无法让它发挥作用。我想我的语法错了,任何帮助都会非常感激!
你的代码是正确的。不幸的是,前一段时间组件过滤行为发生了重大变化。看起来Google Maps API文档尚未针对组件限制进行更新。
我建议您查看相应的Web服务文档,该文档已更新并说明如下
可以过滤的组件包括:
- postal_code匹配postal_code和postal_code_prefix。
- 国家/地区匹配国家/地区名称或双字母ISO 3166-1国家/地区代码。注意:API遵循ISO标准来定义国家/地区,并且在使用国家/地区的相应ISO代码时过滤效果最佳。
以下组件可用于影响结果,但不会强制执行:
- route匹配路由的长名称或短名称。
- locality与locality和sublocality类型匹配。
- administrative_area匹配所有administrative_area级别。
来源:https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering
所以,你可以看到行政区域不再是严格的过滤器了。目前唯一可用的严格过滤器是邮政编码和国家/地区。
我希望我的回答能够澄清你的疑问。