2017-02-09 2 views
1

Я использую официальный Google Documentation для создания адреса.Bias Google Результаты поиска в определенном регионе

В версии для Android я могу предвзято привести результат в свою область.

Например, набрав в «123 Main St» первую главную страницу в моем городе, прежде чем показывать мне другие результаты.

В iOS Я не могу понять, как это сделать. Я использую «Добавить полноэкранный контроль» с делегатом GMSAutocompleteViewController.

Существует GMSCoordinateBounds, но пример для карты. Я не использую карту.

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

- (void) placeAutocomplete : (NSString*) location : Bounds:(GMSCoordinateBounds *)bounds{               
[_placesClient autocompleteQuery:location 
          bounds:bounds 
          filter:filter 
         callback:^(NSArray *results, NSError *error) { 
          if (error != nil) { 
          NSLog(@"Autocomplete error %@", [error localizedDescription]); 
          return; 
          } 

          for (GMSAutocompletePrediction* result in results) { 
          NSLog(@"Result '%@' with placeID %@", result.attributedFullText.string, result.placeID); 
          } 
         }]; 
} 

Любая помощь?

ответ

2

Вы можете установить границы на GMSAutocompleteViewController непосредственно, например:

// Present the Autocomplete view controller when the button is pressed. 
@IBAction func autocompleteClicked(_ sender: UIButton) { 
    let autocompleteController = GMSAutocompleteViewController() 
    autocompleteController.delegate = self 

    // Set bounds to inner-west Sydney Australia. 
    let neBoundsCorner = CLLocationCoordinate2D(latitude: -33.843366, 
               longitude: 151.134002) 
    let swBoundsCorner = CLLocationCoordinate2D(latitude: -33.875725, 
               longitude: 151.200349) 
    let bounds = GMSCoordinateBounds(coordinate: neBoundsCorner, 
            coordinate: swBoundsCorner) 

    autocompleteController.bounds = bounds 

    present(autocompleteController, animated: true, completion: nil) 
} 
+0

Спасибо, но как вы вычисляете lat/lon вашего ограничивающего прямоугольника? Вы смотрите в центр, где вы находитесь, и расширяетесь на 20 миль? – JasonBourne

+0

Я не знаю о коде выше (copypasta с сайта разработчика Google), но если вы хотите рассчитать 20-минутный ограничивающий прямоугольник вокруг точки latlng, методы в SphericalUtil помогут (https://developers.google.com/ карты/документация/Android-апи/утилиты/# сферические) – AndrewR

0

Создать окаймляет на основе местоположения и установить его в качестве границ GMSAutocompleteViewController

func presentAddressFinder(){ 
    let autocompleteController = GMSAutocompleteViewController() 
     autocompleteController.delegate = self 
     let bounds = GMSCoordinateBounds() 
     autocompleteController.autocompleteBounds = bounds.includingCoordinate(currentLocation) 
    present(autocompleteController, animated: true, completion: nil) 
} 

здесь currentLocation - текущее местоположение устройства в CLLocationCoordinate2D!

Смежные вопросы