Ios 如何在MKMapView中使用MKLocalSearch
我在MKMapView中使用MKLocalSearch..我实现如下Ios 如何在MKMapView中使用MKLocalSearch,ios,swift,mkmapview,mklocalsearch,Ios,Swift,Mkmapview,Mklocalsearch,我在MKMapView中使用MKLocalSearch..我实现如下 extension MYClass: SendLocationDelegate{ func sendCoOrdinates(loccoordinate:CLLocation, placemark:CLPlacemark){ println(" Google VC coordinate is as \(loccoordinate.coordinate.longitude) \(loccoordinat
extension MYClass: SendLocationDelegate{
func sendCoOrdinates(loccoordinate:CLLocation, placemark:CLPlacemark){
println(" Google VC coordinate is as \(loccoordinate.coordinate.longitude) \(loccoordinate.coordinate.latitude)")
let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude:loccoordinate.coordinate.latitude, longitude: loccoordinate.coordinate.longitude)
let theSpan : MKCoordinateSpan = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta:0.01)
let theRegion : MKCoordinateRegion = MKCoordinateRegion(center: location, span: theSpan)
self.mapView.setRegion(theRegion, animated: false)
let request = MKLocalSearchRequest()
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.startWithCompletionHandler({(response: MKLocalSearchResponse!,
error: NSError!) in
if error != nil {
println("Error occured in search: \(error.localizedDescription)")
} else if response.mapItems.count == 0 {
println("No matches found")
} else {
println("Matches found")
println("\(response)")
}
})
}
}
输出:谷歌VC坐标为72.8561644 19.0176147
搜索时出错:无法完成操作。(MKErrorDomain错误1。)为什么会发生这种情况
已编辑:但是当我将请求更改为
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = "india"
//request.region = mapView.region
let search = MKLocalSearch(request: request)
我得到了很好的回应
{
边界区域=”;
mapItems=(
{\n isCurrentLocation=0;\n name=India;\n placemark=\“India,India@
+/-0.00m,区域Cl圆形区域
(标识符:'radius 2237301.34',
中心:,半径:2237301.34米)\“;\n}”
)}
一切正常。只是您在请求中犯了一个错误,该请求不包含naturalLanguageQuery
let request = MKLocalSearchRequest()
request.region = mapView.region
let search = MKLocalSearch(request: request)
在本例中,request.naturalLanguageQuery
将其设置为nil…因此您得到了未知类型的(MKErrorDomain error 1)。查看Apple文档naturanguagequery
不能包含nil值…因此请使用它发出请求
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = "india"
let search = MKLocalSearch(request: request)
您可以使用region
参数将搜索结果列表缩小到指定区域内或附近的搜索结果。指定区域并不保证所有结果都在该区域内。这只是对搜索引擎的一个提示。因此,region
可以在这里作为可选项。或者,您也可以提出请求,以获得更好的结果
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = "india"
request.region = mapView.region
let search = MKLocalSearch(request: request)