Google Maps API Geocoder组件限制语法

时间:2018-09-04 00:56:38

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

我在将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属性,例如postalCodecountry,但不能使用administrativeArea。文档说该属性与所有administrative_area levels都匹配,因此我尝试使用不同的美国县和不同的美国州,但无法使其正常工作。我想我弄错了语法,将不胜感激任何帮助!

1 个答案:

答案 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

因此,如您所见,管理区域不再是严格的过滤器。目前,唯一可用的严格过滤器是邮政编码和国家/地区。

我希望我的回答可以澄清您的疑问。