【问题标题】:Google Maps API Geocoder componentRestrictions syntaxGoogle Maps API Geocoder 组件限制语法
【发布时间】:2018-09-04 00:56:38
【问题描述】:

我在将 componentRestrictions 参数添加到 Google Maps Geocoder 对象时遇到问题。我正在使用 JavaScript 客户端 api。具体来说,administrativeArea 属性对我不起作用。 Docs 说 type 是一个字符串,我尝试了很多组合但仍然没有运气。

这是我的地理编码功能:

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-maps-api-3 google-geocoding-api google-api-javascript-client


    【解决方案1】:

    您的代码是正确的。不幸的是,前段时间组件过滤行为发生了重要变化。关于组件限制,Maps JavaScript API 文档似乎尚未更新。

    我建议查看相应的已更新 Web 服务文档并说明以下内容

    可以过滤的组件包括:

    • postal_code 匹配 postal_code 和 postal_code_prefix。

    • country 匹配国家/地区名称或两个字母的 ISO 3166-1 国家/地区代码。注意:API 遵循 ISO 标准定义国家,使用国家对应的 ISO 代码过滤效果最佳。

    以下组件可用于影响结果,但不会强制执行:

    • route 匹配路线的长名或短名。

    • locality 匹配地区和子地区类型。

    • administrative_area 匹配所有的 Administrative_area 级别。

    来源:https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering

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

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

    【讨论】:

    • 嗯,是的,这确实对一些人有所帮助,但它似乎并没有影响我的结果。例如。有一个皮奥里亚,伊利诺伊州和一个皮奥里亚,亚利桑那州,当我搜索没有过滤器的“皮奥里亚”时,它返回伊利诺伊州皮奥里亚,但添加 administrativeArea: 'Arizona' 仍然返回伊利诺伊州皮奥里亚。如果我添加短名称 administrativeArea: 'AZ' 我会收到 ZERO_RESULTS 错误。也许我会尝试使用视口偏置,看看是否能得到更好的结果。我会将您的答案标记为正确,因为这似乎不是语法问题
    • 如果您认为观察到的行为是意外的,请在 Google 问题跟踪器中file a bug
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2018-02-27
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多