【发布时间】:2016-02-06 16:07:08
【问题描述】:
所以我为我的地图应用程序实现了searchBar,它给了我一些奇怪的结果。例如,如果我搜索“Oslo”,它会将我指向城市北部一个非常具体但奇怪的地方,然后放大得很远。这里的代码一定是我做错了。任何人都能够发现这个问题?
// When user submits search query
func searchBarSearchButtonClicked(searchBar: UISearchBar){
// resign first responder and dismiss the searchbar.
searchBar.resignFirstResponder()
dismissViewControllerAnimated(true, completion: nil)
// Create and start search request
localSearchRequest = MKLocalSearchRequest()
localSearchRequest.naturalLanguageQuery = searchBar.text
localSearch = MKLocalSearch(request: localSearchRequest)
localSearch.startWithCompletionHandler { (localSearchResponse, error) -> Void in
if localSearchResponse == nil{
let alertController = UIAlertController(title: nil, message: "Place Not Found", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
return
}
let center = CLLocationCoordinate2D(latitude: localSearchResponse!.boundingRegion.center.latitude, longitude: localSearchResponse!.boundingRegion.center.longitude)
self.updateCurrentMapRegion(center, distance: 5000)
NSNotificationCenter.defaultCenter().postNotificationName("LocationUpdate", object: nil, userInfo: ["latitude": center.latitude, "longitude": center.longitude])
}
}
另外,一个问题是我在获得搜索结果后更新地图区域时将距离硬编码为 5000 米。我怎样才能以更动态的方式处理这个问题?
什么是使用 MKLocalSearchRequest() 的替代方法,在我看来,这听起来像是你在寻找附近的东西而不是更大的实体(如城市等)时应该使用的东西。
【问题讨论】: