如何在 iOS 中仅过滤 GMSAutocompleteResultsViewController 中的学校?
How to filter only schools in GMSAutocompleteResultsViewController in iOS?
我正在使用 GMSAutocompleteResultsViewController 搜索 iOS 中的地点。我写下地名并根据关键字获得结果。但问题是我只想搜索学校。因此,如果我输入任何地名,如果它是学校,那么我应该出现在结果中,否则不会。
GMSAutocompleteFilter 只显示一些过滤器,如机构、地区、城市、地址等,但在 android 中它有过滤器作为学校
下面是我用于搜索的代码。
class SearchLocationController: DIBaseController {
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 filter = GMSAutocompleteFilter()
filter.type = .establishment
resultsViewController?.autocompleteFilter = filter
// Put the search bar in the navigation bar.
searchController?.searchBar.sizeToFit()
navigationItem.titleView = searchController?.searchBar
// When UISearchController presents the results view, present it in
// this view controller, not one further up the chain.
definesPresentationContext = true
// Prevent the navigation bar from being hidden when searching.
searchController?.hidesNavigationBarDuringPresentation = false
}
}
// Handle the user's selection.
extension SearchLocationController: GMSAutocompleteResultsViewControllerDelegate {
func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
didAutocompleteWith place: GMSPlace) {
searchController?.isActive = false
// Do something with the selected place.
}
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(_ viewController: GMSAutocompleteViewController) {
UIApplication.shared.isNetworkActivityIndicatorVisible = true
}
func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
}
}
显然,在iOS SDK中,支持的地方类型只有geocode
、address
、establishment
、region
和city
.
详情请参考this。
我正在使用 GMSAutocompleteResultsViewController 搜索 iOS 中的地点。我写下地名并根据关键字获得结果。但问题是我只想搜索学校。因此,如果我输入任何地名,如果它是学校,那么我应该出现在结果中,否则不会。
GMSAutocompleteFilter 只显示一些过滤器,如机构、地区、城市、地址等,但在 android 中它有过滤器作为学校
下面是我用于搜索的代码。
class SearchLocationController: DIBaseController {
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 filter = GMSAutocompleteFilter()
filter.type = .establishment
resultsViewController?.autocompleteFilter = filter
// Put the search bar in the navigation bar.
searchController?.searchBar.sizeToFit()
navigationItem.titleView = searchController?.searchBar
// When UISearchController presents the results view, present it in
// this view controller, not one further up the chain.
definesPresentationContext = true
// Prevent the navigation bar from being hidden when searching.
searchController?.hidesNavigationBarDuringPresentation = false
}
}
// Handle the user's selection.
extension SearchLocationController: GMSAutocompleteResultsViewControllerDelegate {
func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
didAutocompleteWith place: GMSPlace) {
searchController?.isActive = false
// Do something with the selected place.
}
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(_ viewController: GMSAutocompleteViewController) {
UIApplication.shared.isNetworkActivityIndicatorVisible = true
}
func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
}
}
显然,在iOS SDK中,支持的地方类型只有geocode
、address
、establishment
、region
和city
.
详情请参考this。