Автозаполнение Google в определенный город

Я уже создаю api geocode на консоли Google. У меня есть вход в окно поиска с автозаполнением google на моем сайте, и я хотел бы установить конкретный город для своего геокодирования api и интегрировать его в свое веб-приложение. Город: toulouse, Страна: Франция.

Когда клиент набирает свой адрес в окне поиска, я хочу, чтобы он выполнял поиск всего адреса в городе Тулуз, исходя из центра тулузы с закрытым расстоянием 20 км.

Вот мой код, основанный на файле Function.php

public function geoCoding($lat='',$lng='') { $protocol = isset($_SERVER["https"]) ? 'https' : 'http'; if ($protocol=="http"){ $url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&sensor=true"; } else $url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&sensor=true"; $google_geo_api_key=getOptionA('google_geo_api_key'); if (!empty($google_geo_api_key)){ $url=$url."&key=".urlencode($google_geo_api_key); } $data = @file_get_contents($url); if (!empty($data)){ $result = json_decode($data,true); //dump($result); if (!isset($result['results'])){ return false; } if (is_array($result['results']) && count($result['results'])>=2){ $location = array(); foreach ($result['results'][0]['address_components'] as $component) { switch ($component['types']) { case in_array('street_number', $component['types']): $location['street_number'] = $component['long_name']; break; case in_array('route', $component['types']): $location['street'] = $component['long_name']; break; case in_array('neighborhood', $component['types']): $location['street2'] = $component['long_name']; break; case in_array('sublocality', $component['types']): $location['sublocality'] = $component['long_name']; break; case in_array('locality', $component['types']): $location['locality'] = $component['long_name']; break; case in_array('administrative_area_level_2', $component['types']): $location['admin_2'] = $component['long_name']; break; case in_array('administrative_area_level_1', $component['types']): $location['admin_1'] = $component['long_name']; break; case in_array('postal_code', $component['types']): $location['postal_code'] = $component['long_name']; break; case in_array('country', $component['types']): $location['country'] = $component['long_name']; $location['country_code'] = $component['short_name']; break; } } return $location; } } return false; } 

Solutions Collecting From Web of "Автозаполнение Google в определенный город"

Ваше описание похоже на использование виджета Search Box в библиотеке «Карты мест» API JavaScript, но ваш код показывает использование обратного геокодирования в веб-службе API геокодирования.

Поскольку я думаю, что только первый имеет смысл, я отважусь на то, что вас будут интересовать следующие запросы функций, которые позволят вам ограничить автозаполнение города:

  • Выпуск 8606 : ограничение места ограничено
  • Выпуск 4433 : разрешить компонентам-фильтрам фильтровать те же компоненты, что и служба API геокодирования

Пока что варианты, о которых я знаю, следующие:

  • Установите поле поиска в соответствии с bounds города (которые вы можете получить из API геокодирования) и полагайтесь на виджет, чтобы предпочесть (не ограничивать) предложения в пределах этих границ или
  • Создайте свой собственный виджет с помощью AutocompleteService.getQueryPredictions () и сделайте свою собственную фильтрацию после факта, чтобы удалить предложения, но это было бы очень сложно, потому что название города не обязательно всегда будет частью предложения.