【问题标题】:How to restrict Google Maps API AutocompleteService from giving out of bounds suggestions如何限制 Google Maps API AutocompleteService 给出超出范围的建议
【发布时间】:2019-09-03 08:19:48
【问题描述】:

目前我正在使用来自 Google Maps API 的 AutocompleteService 类。从documentation 我使用bounds 来应用纽约市的界限。但是,我正在从 NJ 和 PA 获得结果。

AutocompleteService 类没有strictBounds 选项,这使得很难将结果限制在范围内。以下是我为纽约市提供的以下界限:

/**
 * NYC Bound Parameters for Google Maps API
 * @enum {object}
 */
 OfficeMap.NYC_BOUNDS = {
   'south': 40.4773991,
   'west': -74.25908989999999,
   'north': 40.9175771,
   'east': -73.7002721
 };

但是,由于来自纽约以外的建议显示,这并没有完全按预期工作:

正如您从上面的图片中看到的那样,显示了来自 PA 的建议。

  /** @private {this._google.maps.places.Autocomplete}Autocomplete instance */
    this._service = new this._google.maps.places.AutocompleteService();

  // Attach handler for the autocomplete search box. This updates the map
    // position and re-sorts locations around that position.
    this._searchEl.addEventListener('keyup', event => {
      if(event.target.value) {
        this._service.getPlacePredictions({
           input: event.target.value,
           offset: 3,
           types: ['geocode'],
           componentRestrictions: {country: 'us'},
           bounds: OfficeMap.NYC_BOUNDS
        }, predictions => {
          if(predictions) {
            let results = predictions.map(e => [e['description']]);
            this._inputAutocomplete._autocomplete.options = results;
            const autocompleteSelf = this._inputAutocomplete._autocomplete;

            this._inputAutocomplete._autocomplete.select = () => {
                if (autocompleteSelf.highlightedIndex !== -1) {
                  autocompleteSelf.input.value = autocompleteSelf
                    .scoredOptions[autocompleteSelf.highlightedIndex]
                    .displayValue;
                  autocompleteSelf.removeDropdown();

                  let nameOfLocation = autocompleteSelf.input.value;
                  let googlePlaceObj = this.getGooglePlaceByName(nameOfLocation,
                                                                 predictions);

                  this.displayPlacesOnMap(googlePlaceObj);
                }
              };
            }
        });
      }
    });

getPlacePredictions 方法应该只给出 NYC 建议,因为传递的是 NYC bounds 参数。来自documentation 没有办法限制它。

如何将 AutocompleteService getPlacePredictions 限制为仅返回范围内的对象?

【问题讨论】:

标签: java google-maps google-maps-api-3


【解决方案1】:

特别是因为AutocompleteService@private,看来您应该改用Autocomplete 类,它确实支持strictBounds

【讨论】:

  • 问题是Autocomplete 没有提供我需要的offset 选项。
  • 您是否尝试过将所需的选项传递给其中一个?即使没有记录也可能支持它,因为我打赌 Autocomplete 只是传递给 AutocompleteService 在引擎盖下。
【解决方案2】:

我们为此功能请求添加了一个条目,以便在我们的 Google 公共问题跟踪器中添加 strictBounds for Autocomplete Service

问题跟踪器中的问题由 Google Maps Platform API 专家直接策划,只要工程团队有消息,他们就会在问题跟踪器中提供更新。

我们诚挚地邀请您在问题跟踪器中查看该问题,并为其加注星标以注册您的兴趣。这将订阅您接收有关该问题的技术更新。为该问题加注星标还为我们提供了有关该问题对客户的重要性的宝贵反馈,并提高了产品工程团队对该问题的优先级。

您可以在此处查看问题并加注星标: - https://issuetracker.google.com/36219203

此问题跟踪器条目是有关此问题的公开信息的权威来源,所有公开相关的更新都将在此处发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2011-04-23
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多