1

我正在尝试使用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,我会取回该区域。

+++ MKCoordinateRegion(中心:__C.CLLocationCoordinate2D(纬度:-25.2744,经度:133.7751),跨度:__C.MKCoordinateSpan(latitudeDelta:40.0,longitudeDelta:40.0))

知道如何使它工作吗?不知道我在这里做错了什么。

我可以手动过滤掉地址,但我认为这不是正确的方法。

4

1 回答 1

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)
            })
        }
于 2022-03-02T12:23:49.657 回答