Google Maps API Geocoder componentRestrictions语法

问题描述 投票:0回答:1

我在将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相匹配,因此我尝试使用不同的美国郡和美国各州,但无法让它发挥作用。我想我的语法错了,任何帮助都会非常感激!

google-maps google-geocoding-api google-javascript-api
1个回答
1
投票

你的代码是正确的。不幸的是,前一段时间组件过滤行为发生了重大变化。看起来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

所以,你可以看到行政区域不再是严格的过滤器了。目前唯一可用的严格过滤器是邮政编码和国家/地区。

我希望我的回答能够澄清你的疑问。

© www.soinside.com 2019 - 2024. All rights reserved.