ios - 将 MKLocalSearch 限制在一个区域

标签 ios swift mapkit

我正在使用 MKLocalSearch 搜索地点并将结果显示在 map 上。 问题是有时如果一家餐馆存在于另一个州,例如,它会去另一个州,我想将结果限制在我所在的地区。 这是我的代码

http://pastebin.com/89TxwR7X

        let searchRadius: CLLocationDistance = 10000
    let region = MKCoordinateRegionMakeWithDistance(location.coordinate, searchRadius * 2.0, searchRadius * 2.0)

    map.setRegion(region, animated: true)

        let request = MKLocalSearchRequest()
    request.naturalLanguageQuery = getRandomPlace()
    request.region = map.region

    let search = MKLocalSearch(request: request)
    search.start { response, error in
        guard let response = response else {
            print("There was an error searching for: \(request.naturalLanguageQuery) error: \(error)")
            return
        }

        for item in response.mapItems {
            self.dropPinZoomIn(item.placemark)
        }
    }

最佳答案

您无法阻止响应包含跨越某些人为边界的结果。您已经为您的请求定义了一个区域,结果将有利于该区域。但即便如此,docs很清楚:

Specifying a region does not guarantee that the results will all be inside the region. It is merely a hint to the search engine.

所以,你得到的就是你得到的。您无法阻止服务器返回它返回的结果。

如果您那么想要遍历返回的response map 项目并且为其中的一些项目制作地标,因为您不喜欢他们在哪里,这完全取决于你。但是您的代码不会那样做;你只是在盲目地为它们所有做地标。

关于ios - 将 MKLocalSearch 限制在一个区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045168/

相关文章:

ios - 正确访问 segue 的目标 View Controller 以分配协议(protocol)委托(delegate)

ios - iOS 导航栏中标题的分页效果

arrays - 在 Swift 中,如何在 PFQueryTableViewController 上执行一个查询先于另一个查询?

swift - 使用 MKMapView 获取方向和路线

iphone - 如何在 plist 中保存 MKMapRect

iphone - 在所有选项卡中显示单个 View (UITabBarController)

ios - ViewWillDisappear 没有被调用 searchcontroller

swift - iAd 横幅隐藏在键盘后面,这是个问题吗?- swift

ios - Scenekit 中的法线贴图

ios - 如何访问 MKMapItem 的类别或类型