我正在寻找一个本地搜索“杂货店”,使用核心位置和MKLocalSearch。
我想我得到了“本地搜索”,但我不确定如何处理结果。我正在用swift3运行xcode8。
我希望用商店名称、地址填充这个表,并通过GPS坐标传递一个新的视图控制器,用于另一个“设置”过程。
我想要一个youtube链接(或说明),以正确设置表视图,然后从MKLocalSearch填充信息的代码。
谢谢!
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
}
}发布于 2016-09-28 17:01:01
从本地搜索响应中,您可以提取所需的必要数据,如坐标、商店名称和地址,如下所示:
首先初始化一个空数组,该数组将用于填充tableView:
var searchResults: [MKMapItem]()接下来,使用您的搜索响应填充此列表,并使用新数据更新tableView:
search.start { (localSearchResponse, error) -> Void in
searchResults = localSearchResponse.mapItems
tableView.reloadData() // update the tableView data source
}然后使用适当的结果格式更新您的tableView:
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
}最后,如果您想要将坐标数据传递给另一个viewController,您可以通过传递整个数组来完成此操作,或者在选择该单元格并传递与该单元格关联的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)
}https://stackoverflow.com/questions/39627133
复制相似问题