Ich bin auf der Suche nach Durchführung der Suche abgeschlossen in einer Map-Seite mit nativen iOS-Funktionen. Ich habe gefunden this answer, die geholfenWie gebe ich die MKLocalSearchCompletion-Ergebnisse an den UISearchController
Allerdings geben sie ihre Ergebnisse zu einem Tableview. Ich möchte die Ergebnisse in derselben Ansicht wie die Karte präsentieren. Ich frage mich auch, wie zu sehen, welche Abschluss der Benutzer
hier alle relevanten Code wählt ich jetzt
// Enable Searching
var searchController: UISearchController!
var request: MKLocalSearchRequest!
var search: MKLocalSearch!
var response: MKLocalSearchResponse!
// Autocompletion
var searchCompleter = MKLocalSearchCompleter()
var searchResults = [MKLocalSearchCompletion]()
override func viewDidLoad() {
searchCompleter.delegate = self
searchCompleter.filterType = MKSearchCompletionFilterType.LocationsOnly
super.viewDidLoad()
}
@IBAction func searchAction(sender: UIBarButtonItem) {
searchController = UISearchController(searchResultsController: nil) // nil as I want the autocompletion results to appear in this view
searchController.hidesNavigationBarDuringPresentation = false
self.searchController.searchBar.delegate = self
presentViewController(searchController, animated: true, completion: nil)
}
func completerDidUpdateResults(completer: MKLocalSearchCompleter) {
searchResults = completer.results
print(searchResults) // Shows me that this is working and that it is grabbing locations
// I need to instead give these results to the UISearchController to display
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String){
searchCompleter.queryFragment = searchBar.text!
}
func searchBarSearchButtonClicked(searchBar: UISearchBar){
searchBar.resignFirstResponder()
dismissViewControllerAnimated(true, completion: nil)
//request = MKLocalSearchRequest(completion: /* user's completion selection*/)
//Since I don't know the above, it currently just searches by user text
request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchBar.text
search = MKLocalSearch(request: request)
search.startWithCompletionHandler {
(response, error) -> Void in
if response == nil{
return
}
self.map.centerCoordinate = CLLocationCoordinate2D(latitude: response!.boundingRegion.center.latitude, longitude: response!.boundingRegion.center.longitude)
}
}