【问题标题】:MKLocalSearchCompleter - Ignores regionMKLocalSearchCompleter - 忽略区域
【发布时间】:2021-12-11 23:50:38
【问题描述】:

我正在尝试使用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(center: __C.CLLocationCoordinate2D(latitude: -25.2744, longitude: 133.7751), span: __C.MKCoordinateSpan(latitudeDelta: 40.0, longitudeDelta: 40.0))

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

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

【问题讨论】:

    标签: swift mapkit mklocalsearch


    【解决方案1】:

    你可以试试这个方法`

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

    【讨论】:

    • 非常感谢,它帮助了我。
    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2018-07-26
    • 2012-12-18
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多