将MKLocalSearch限制为某个地区

时间:2017-02-04 20:20:55

标签: ios swift mapkit

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

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

1 个答案:

答案 0 :(得分:2)

您无法阻止响应包含某些人为边界的结果。您已为自己的请求定义了region,结果将有利于该地区。但即便如此,docs也很清楚:

  

指定区域并不能保证结果全部都在区域内。这只是对搜索引擎的暗示。

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

如果你那么想要浏览返回的response地图项目而为其中一些制作地标,因为你不喜欢哪里他们是,这完全取决于你。但你的代码那样做;你只是盲目地为所有制作地标。