2016-09-21 18 views
0

Ich suche nach einem lokalen Bereich für "Lebensmittelgeschäfte", mit Kern-Standort und MKLocalSearch.MKLocalSearch zur Tabellenansicht in Swift

Ich denke, ich habe die "lokale Suche" runter, aber ich bin mir nicht sicher, was ich mit den Ergebnissen anfangen soll. Ich benutze xcode8 mit swift3.

Ich bin auf der Suche nach dieser Tabelle mit dem Store Name, Adresse und GPS-Koordinaten einen neuen View-Controller für einen anderen "Setup" -Prozess zu übergeben.

Ich würde gerne einen Youtube-Link (oder Anweisung), um die Tabellenansicht richtig einzurichten und dann den Code, um die Informationen aus MKLocalSearch zu füllen.

Danke!

func updateSearchResultsForSearchController(){ 
    let request = MKLocalSearchRequest() 
    let span = MKCoordinateSpan(latitudeDelta: 0.025, longitudeDelta: 0.025) 

    let region = MKCoordinateRegion(center: (locationManager.location?.coordinate)!, span: span) 

    request.naturalLanguageQuery = "Grocery" 

    request.region = region 

    let search = MKLocalSearch(request: request) 

    search.start { (localSearchResponse, error) -> Void in 
     print(localSearchResponse) 
     //Code needed here to fill table view 
    } 
} 

Antwort

0

Von der lokalen Suchantwort Sie die notwendigen Daten extrahieren können Sie wie Koordinaten erfordern, Titel des Ladens, und die Adresse wie folgt:

Erste Initialisierung ein leeres Array, das verwendet wird Ihre Tableview zu füllen :

var searchResults: [MKMapItem]() 

Weiter diese Liste mit Ihrer Such Antwort bevölkern und die Tableview mit den neuen Daten aktualisiert:

search.start { (localSearchResponse, error) -> Void in 
    searchResults = localSearchResponse.mapItems 
    tableView.reloadData() // update the tableView data source 
} 

Dann wird Ihr Tableview mit entsprechenden Formatierung der Ergebnisse aktualisieren:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let searchResult = searchResults[indexPath.row] 
    let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil) 
    cell.textLabel?.text = searchResult.title 
    cell.detailTextLabel?.text = searchResult.subtitle 
    return cell 
} 

Schließlich, wenn Sie die Koordinatendaten an einen anderen Viewcontroller übergeben möchten, können Sie dies tun, indem das gesamte Array vorbei oder mehr als wahrscheinlich werden Sie wollen Tun Sie dies, indem Sie die Zelle auswählen und das mapItem übergeben, das der Zelle zugeordnet ist:

Verwandte Themen