2017-09-04 2 views
0

Ich versuche Google Autocomplete mit Google Places in Swift 3.0 zu tun. Aber ich muss nach meinem aktuellen Standort suchen. Beispiel: Wenn ich in Kalkutta, Indien bin und ich Suchbegriff eingeben "Ko", werden die Ergebnisse von Kolkata zuerst angezeigt.Swift google Autocomplete mit lokaler Suche

Kann mir jemand helfen. Hier ist mein Code. ich importieren GooglePlaces in meiner Klasse

@IBAction func txtFieldLocationDidStartEditing(_ sender: Any) { 
    self.placeAutocomplete() 
} 
func placeAutocomplete() { 
    let autocompleteController = GMSAutocompleteViewController() 
     autocompleteController.delegate = self 
    present(autocompleteController, animated: true, completion: nil) 
} 

// MARK: - autocomplete Delegierten

func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) { 
    print("Place name: \(place.name)") 
    dismiss(animated: true, completion: nil) 
} 

func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) { 
    // TODO: handle the error. 
    print("Error: ", error.localizedDescription) 
} 

// User canceled the operation. 
func wasCancelled(_ viewController: GMSAutocompleteViewController) { 
    dismiss(animated: true, completion: nil) 
} 

// Turn the network activity indicator on and off again. 
func didRequestAutocompletePredictions(_ viewController: GMSAutocompleteViewController) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = true 
} 

func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = false 
} 

Bitte jemand mir helfen, es zu lösen aus. Vielen Dank im Voraus.

+0

Sie könnten die API mit Ihrem mapview Begrenzungsrahmen – nathan

Antwort

1

Die einzige von GMSAutocompleteViewController bereitgestellt API ist die GMSCoordinateBounds wie so (reference) einzustellen:

func placeAutocomplete() { 
    let visibleRegion = mapView.projection.visibleRegion() 
    let bounds = GMSCoordinateBounds(coordinate: visibleRegion.farLeft, coordinate: visibleRegion.nearRight) 

    let autocompleteController = GMSAutocompleteViewController() 
    acController.autocompleteBounds = bounds 
    autocompleteController.delegate = self 
    present(autocompleteController, animated: true, completion: nil) 
} 
+0

Danke @nathan, Grenzen einrichten funktioniert gut versorgen. –