如何仅在Swift 5中使用MapKit显示城市

问题描述

对于一个应用程序,我已经实现了Apple MapKit,但是当我搜索时,我还会获得诸如餐馆等的本地地点。如何过滤结果以便仅获得城市?

我正在使用下面的代码通过UITextField的搜索查询自动完成建议填充到tableView中。

public func updateSearchResults(for searchController: UISearchController){
    guard let mapView = mapView,let searchBarText = searchController.searchBar.text else { return }
    
    let request = MKLocalSearch.Request()
    request.naturalLanguageQuery = searchBarText
    request.region = mapView.region
    
    let search = MKLocalSearch(request: request)
    search.start { response,_ in
        guard let response = response else {
            return
        }
        self.matchingItems = response.mapItems
        self.tableView.reloadData()
    }
}

解决方法

您可以使用MKPointOfInterestFilter

过滤出兴趣点
let request = MKLocalSearch.Request()
request.pointOfInterestFilter = MKPointOfInterestFilter.excludingAll
request.naturalLanguageQuery = searchBarText
request.region = mapView.region