Автозаполнение Google Адресов - Типы: геокод, адрес, учреждение - не работает должным образом - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь установить типы в автозаполнении мест Google, и это сводит меня с ума!

Я хочу, чтобы мои пользователи могли фильтровать там поиск, вводя адрес или учреждение, которое они ищут, но по какой-то причине он не работает должным образом.

Код, который я использую:

<script defer src="https://maps.googleapis.com/maps/api/js?libraries=places&key=[my_api_key]"></script>
<script>
    var searchInputStart = 'start_address';
    start_address = new google.maps.places.Autocomplete((document.getElementById(searchInputStart)), {
        types: ['geocode'],
        types: ['address'],
        types: ['establishment']
    });
    google.maps.event.addListener(start_address, 'place_changed', function () {
        var place_start = start_address.getPlace();
        document.getElementById('loc_lat_start').value = place_start.geometry.location.lat();
        document.getElementById('loc_long_start').value = place_start.geometry.location.lng();
        //get_directions to address
        set_route();
    });
</script>

Если я достану -> типы: [адрес] - -> показывает правильные заведения, но не адреса.

Если я вычеркну -> типы: [установление] -> показывает правильные адреса, но не установление.

Как мои пользователи могут правильно фильтровать места по вводу адреса или заведения?

Может кто-нибудь помочь мне, пожалуйста? Что я делаю не так?

Спасибо.

1 Ответ

0 голосов
/ 31 января 2020

В соответствии с документацией Google Maps API вы можете установить только один тип параметров автозаполнения на месте.

types Array<string>: типы предсказаний, которые будут возвращены. Список поддерживаемых типов см. В руководстве разработчика. Если ничего не указано, возвращаются все типы. Как правило, разрешен только один тип. Исключением является то, что вы можете безопасно смешивать типы 'геокод' и 'учреждение', но имейте в виду, что это будет иметь тот же эффект, что и отсутствие типов.

источник: https://developers.google.com/maps/documentation/javascript/reference/places-widget#AutocompleteOptions

Это означает, что вы можете использовать

start_address = new google.maps.places.Autocomplete(
    document.getElementById(searchInputStart), 
    {
        types: ['address']
    }
);

или

start_address = new google.maps.places.Autocomplete(
    document.getElementById(searchInputStart), 
    {
        types: ['geocode', 'establishment']
    }
);

, но не все они в одном объекте параметров.

Надеюсь, мой ответ прояснит ваше сомнение.

...