我在将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
都匹配,因此我尝试使用不同的美国县和不同的美国州,但无法使其正常工作。我想我弄错了语法,将不胜感激任何帮助!
答案 0 :(得分:1)
您的代码正确。不幸的是,前一段时间组件过滤行为发生了重要变化。看来有关组件限制的Maps JavaScript API文档尚未更新。
我建议您查看相应的Web服务文档,该文档已更新并显示以下内容
可以过滤的组件包括:
邮政编码匹配邮政编码和前缀。
国家/地区与国家/地区名称或两个字母的ISO 3166-1国家/地区代码匹配。注意:API遵循用于定义国家/地区的ISO标准,并且在使用国家/地区的相应ISO代码时,过滤效果最佳。
以下组件可能会影响结果,但不会强制执行:
路线与路线的长名称或短名称匹配。
地区与地区和子地区类型匹配。
administrative_area 匹配所有Administrative_area级别。
来源:https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering
因此,如您所见,管理区域不再是严格的过滤器。目前,唯一可用的严格过滤器是邮政编码和国家/地区。
我希望我的回答可以澄清您的疑问。