我正在尝试使用MKLocalSearchCompleter
进行地址搜索。我提供了一个地区(澳大利亚(,但提供的地区被完全忽略了,我仍然从世界各地得到结果。
...
private var searchCompleter = MKLocalSearchCompleter()
....
init {
searchCompleter.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: -25.2744, longitude: 133.7751), span: MKCoordinateSpan(latitudeDelta: 40, longitudeDelta: 40)) // Australia
searchCompleter.resultTypes = [.address]
searchCompleter.delegate = self
searchCompleter.queryFragment = "Wycombe Road"
}
extension MapSearchCompleter: MKLocalSearchCompleterDelegate {
func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) {
print("+++ (completer.results)")
}
}
如果我尝试在委托方法completerDidUpdateResults
中打印区域,我会取回该区域。
+++MK坐标区域(中心:__C.CLLocationCoordinate2D(纬度:-25.2744,经度:133.7751(,跨度:__C。MKCoordinateSpan(纬度:40.0,经度:40.0(
知道如何让它工作吗?不确定我在这里做错了什么。
我可以手动过滤掉地址,但我认为这不是正确的方法
您可以尝试这种方式`
let request = MKLocalSearch.Request()
request.naturalLanguageQuery = searchTxt
request.region = mkMapView.region
// Fetch
MKLocalSearch(request: request).start { (response, _) in
guard let result = response else { return }
self.place = result.mapItems.compactMap({ (item) -> Place? in
return Place(placemark: item.placemark)
})
}