2016-09-21 19 views
0

コアロケーションとMKLocalSearchを使用して、 "Grocery Stores"のローカルエリアを検索しています。MKLocal Swiftのテーブルビューへの検索

私は「ローカル検索」がダウンしていると思いますが、結果とどうしたらよいか分かりません。私はswift3でxcode8を実行しています。

私は、このテーブルに店名、住所を記入し、別の「セットアップ」プロセス用に新しいView ControllerをGPS座標に渡したいと考えています。

テーブルビューを適切にセットアップしてから、MKLocalSearchからの情報を入力するコードをyoutubeリンク(または命令)が大好きです。

ありがとうございます!

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 
    } 
} 

答えて

0

ローカル検索応答から、あなたは次のように座標、店舗のタイトル、およびアドレスのように必要に必要なデータを抽出することができます。

まずあなたのtableViewを移入するために使用される空の配列を初期化します:

var searchResults: [MKMapItem]() 

次は、検索応答で、このリストを移入し、新しいデータでのtableViewを更新:

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

その後、あなたのtableViewは結果の適切なフォーマットで更新:あなたがしたくなる可能性よりも、あなたは別のViewControllerに座標データを渡したい場合、あなたは配列全体またはそれ以上を渡すことによってこれを行うことができます。最後

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 
} 

セルを選択し、セルに関連付けられたmapItemを渡すと、これを行います。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let searchResult = searchResults[indexPath.row] 
    let groceryViewController = // initialise the new viewController 
    groceryViewController.coordinate = searchResult.placemark.coordinate 

    // push the new viewController 
    self.navigationController?.pushViewController(groceryViewController, animated: true) 
} 
関連する問題