2017-05-16 9 views
0

私はこのTutorialをGoogleで使用して、SwiftのiOSアプリにGoogleプレイスオートコンプリートを実装していますが、これは特定の場所に限定しようとしています。linkは可能ですが、私の人生ではどこも見えませんそうするために..........場所のバイアス方法Googleプレイスのオートコンプリート?

これはビューコントローラです:

import UIKit 
import GooglePlaces 

class ViewController: UIViewController { 

    var resultsViewController: GMSAutocompleteResultsViewController? 
    var searchController: UISearchController? 
    var resultView: UITextView? 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    resultsViewController = GMSAutocompleteResultsViewController() 
    resultsViewController?.delegate = self 

    searchController = UISearchController(searchResultsController: resultsViewController) 
    searchController?.searchResultsUpdater = resultsViewController 

    let subView = UIView(frame: CGRect(x: 0, y: 65.0, width: 350.0, height: 45.0)) 

    subView.addSubview((searchController?.searchBar)!) 
    view.addSubview(subView) 
    searchController?.searchBar.sizeToFit() 
    searchController?.hidesNavigationBarDuringPresentation = false 

    // When UISearchController presents the results view, present it in 
    // this view controller, not one further up the chain. 
    definesPresentationContext = true 
    } 
} 

// Handle the user's selection. 
extension ViewController: GMSAutocompleteResultsViewControllerDelegate { 
    func resultsController(_ resultsController: GMSAutocompleteResultsViewController, 
         didAutocompleteWith place: GMSPlace) { 
    searchController?.isActive = false 
    // Do something with the selected place. 
    print("Place name: \(place.name)") 
    print("Place address: \(place.formattedAddress)") 
    print("Place attributions: \(place.attributions)") 
    } 

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

    // Turn the network activity indicator on and off again. 
    func didRequestAutocompletePredictions(forResultsController resultsController: GMSAutocompleteResultsViewController) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = true 
    } 

    func didUpdateAutocompletePredictions(forResultsController resultsController: GMSAutocompleteResultsViewController) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = false 
    } 
} 

答えて

0

右ドキュメントでは、このために使用されているものをクラス言います。

GMSCoordinateBoundsオブジェクトは、結果を緯度と経度の境界で指定された特定の領域にバイアスします。

注:人がエッフェル塔を検索しても、これらの範囲外のものは完全に消去することはできません。結果の99%はおそらくこれらの範囲内にあるでしょう。それは単なるバイアス検索です。

GMSCoordinateBoundsクラスの経度と緯度を指定すると、それだけです。

そして、それはこのように使われています:ここで

let northEastBoundsCorner = CLLocationCoordinate2D(latitude: -33.843366, 
              longitude: 151.134002) 
let southWestBoundsCorner = CLLocationCoordinate2D(latitude: -33.875725, 
              longitude: 151.200349) 
let bounds = GMSCoordinateBounds(coordinate: neBoundsCorner, 
           coordinate: swBoundsCorner) 
func placeAutocomplete() { 
    let filter = GMSAutocompleteFilter() 
    filter.type = .establishment 
    placesClient.autocompleteQuery("Sydney Oper", bounds: bounds, filter: filter, callback: {(results, error) -> Void in 
    if let error = error { 
     print("Autocomplete error \(error)") 
     return 
    } 
    if let results = results { 
     for result in results { 
      print("Result \(result.attributedFullText) with placeID \(result.placeID)") 
     } 
    } 
}) } 

は、彼らはそれを使用しているドキュメントからのURLです: Set the GMSCoordinateBounds of autocomplete

+0

申し訳ありませんが、これは愚かな質問ですが、どこ私はこのコードを置けばいいのか? –

関連する問題