Google 地点 API,GMS 自动完成搜索仅针对城市、国家/地区 iOS Swift
Google Places API, GMSAutocomplete search only for City, Country iOS Swift
我已经像这样设置了 Google GMSAutocomplete:
private func setupAutocompleteWithTextFieldController() {
let kTextFieldTop: CGFloat = searchField.frame.origin.y
let kTextFieldHeight: CGFloat = 44.0
let kContentRectTop = kTextFieldTop + kTextFieldHeight
contentRect = CGRectMake(0, kContentRectTop, self.view.bounds.size.width, self.view.bounds.size.height - kTextFieldHeight)
searchField.autocorrectionType = .No
searchField.returnKeyType = .Done
searchField.clearButtonMode = .WhileEditing
searchField.addTarget(self, action: "searchFieldTextFieldEditingChanged:", forControlEvents: UIControlEvents.EditingChanged)
searchField.delegate = self
tableDataSource = GMSAutocompleteTableDataSource()
tableDataSource.delegate = self
resultsController = UITableViewController(style: UITableViewStyle.Plain)
resultsController.tableView.delegate = tableDataSource
resultsController.tableView.dataSource = tableDataSource
}
并且还实施了代表,UITextFieldDelegate
,GMSAutocompleteTableDataSourceDelegate
,而且效果很好。但是,我想将搜索限制在地区、行政区域和国家。例如我不希望它搜索 'Places'。让
我知道有过滤对象;但是,如何将它应用到我的使用中?有什么想法吗?
filter = GMSAutocompleteFilter()
、filter.type = GMSPlacesAutocompleteTypeFilter.City
func placeAutocomplete() { //Call function from your search editing method
let filter = GMSAutocompleteFilter()
filter.type = GMSPlacesAutocompleteTypeFilter.City
//"YOUR_SEARCH_DATA" Ex. Sydney Oper
//Uou will get data for city sydney
placesClient?.autocompleteQuery("YOUR_SEARCH_DATA", bounds: nil, filter: filter, callback: { (results, error: NSError?) -> Void in
if let error = error {
println("Autocomplete error \(error)")
}
for result in results! {
if let result = result as? GMSAutocompletePrediction {
println("Result \(result.attributedFullText) with placeID \(result.placeID)")
}
}
})
}
您可以设置 GMSAutocompleteTableDataSource
的 autocompleteFilter 字段。
我已经像这样设置了 Google GMSAutocomplete:
private func setupAutocompleteWithTextFieldController() {
let kTextFieldTop: CGFloat = searchField.frame.origin.y
let kTextFieldHeight: CGFloat = 44.0
let kContentRectTop = kTextFieldTop + kTextFieldHeight
contentRect = CGRectMake(0, kContentRectTop, self.view.bounds.size.width, self.view.bounds.size.height - kTextFieldHeight)
searchField.autocorrectionType = .No
searchField.returnKeyType = .Done
searchField.clearButtonMode = .WhileEditing
searchField.addTarget(self, action: "searchFieldTextFieldEditingChanged:", forControlEvents: UIControlEvents.EditingChanged)
searchField.delegate = self
tableDataSource = GMSAutocompleteTableDataSource()
tableDataSource.delegate = self
resultsController = UITableViewController(style: UITableViewStyle.Plain)
resultsController.tableView.delegate = tableDataSource
resultsController.tableView.dataSource = tableDataSource
}
并且还实施了代表,UITextFieldDelegate
,GMSAutocompleteTableDataSourceDelegate
,而且效果很好。但是,我想将搜索限制在地区、行政区域和国家。例如我不希望它搜索 'Places'。让
我知道有过滤对象;但是,如何将它应用到我的使用中?有什么想法吗?
filter = GMSAutocompleteFilter()
、filter.type = GMSPlacesAutocompleteTypeFilter.City
func placeAutocomplete() { //Call function from your search editing method
let filter = GMSAutocompleteFilter()
filter.type = GMSPlacesAutocompleteTypeFilter.City
//"YOUR_SEARCH_DATA" Ex. Sydney Oper
//Uou will get data for city sydney
placesClient?.autocompleteQuery("YOUR_SEARCH_DATA", bounds: nil, filter: filter, callback: { (results, error: NSError?) -> Void in
if let error = error {
println("Autocomplete error \(error)")
}
for result in results! {
if let result = result as? GMSAutocompletePrediction {
println("Result \(result.attributedFullText) with placeID \(result.placeID)")
}
}
})
}
您可以设置 GMSAutocompleteTableDataSource
的 autocompleteFilter 字段。