Как ограничить использование сервиса автозаполнения API Карт Google при выдаче предложений? - PullRequest
1 голос
/ 12 апреля 2019

В настоящее время я работаю с классом AutocompleteService из API Карт Google. Из документации я использую 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
 };

Однако это работает не совсем так, как ожидалось, поскольку предложения из-за пределов Нью-Йорка показывают: enter image description here

Как видно из рисунка выше, показаны предложения от 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. Из документации нет способа ограничить это.

Как я могу ограничить AutocompleteService getPlacePredictions только для возврата объектов в границах?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

У нас есть запись для этого запроса на добавление strictBounds для службы автозаполнения в нашем общедоступном трекере Google.

Проблемы в трекере проблем напрямую курируются специалистами API Google Maps Platform., который будет предоставлять обновления в систему отслеживания проблем всякий раз, когда поступают новости от команды разработчиков.

Мы хотели бы горячо пригласить вас просмотреть проблему в программе отслеживания проблем и отметить ее, чтобы зарегистрировать свой интерес.Это позволит подписаться на получение технических обновлений по этому вопросу.Актуальность проблемы также дает нам ценную обратную связь о важности проблемы для наших клиентов и повышает приоритет проблемы с командой разработчиков продукта.

Вы можете просмотреть и отметить проблему здесь: - https://issuetracker.google.com/36219203

Эта запись отслеживания проблем является официальным источником общедоступной информации об этой проблеме, и все общедоступные обновления будут публиковаться там.

0 голосов
/ 12 апреля 2019

Тем более что AutocompleteService равен @private, похоже, вам следует использовать класс Autocomplete, который поддерживает strictBounds.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...