Ios MKLocalSearch返回0值
我正在开发一个iOS应用程序,需要搜索位置并将注释放入地图。 我用Swift语言编写以下搜索代码。但是,它总是返回0值作为响应Ios MKLocalSearch返回0值,ios,swift,mapkit,Ios,Swift,Mapkit,我正在开发一个iOS应用程序,需要搜索位置并将注释放入地图。 我用Swift语言编写以下搜索代码。但是,它总是返回0值作为响应 var searchRequest : MKLocalSearchRequest = MKLocalSearchRequest() searchRequest.naturalLanguageQuery = address searchRequest.region = self.mapView.region var sea
var searchRequest : MKLocalSearchRequest = MKLocalSearchRequest()
searchRequest.naturalLanguageQuery = address
searchRequest.region = self.mapView.region
var search : MKLocalSearch = MKLocalSearch(request: searchRequest)
var response: MKLocalSearchResponse
var err : NSError = NSError()
search.startWithCompletionHandler { (
response, err) -> Void in
var placeMarks: NSMutableArray = NSMutableArray()
for mp in placeMarks{
placeMarks.addObject(mp)
}
self.mapView.removeAnnotations(self.mapView.annotations)
self.mapView.showAnnotations(placeMarks, animated: true)
}
我试过用不同的地址、城市名、州名。但是没有帮助。
所以,请帮帮我。任何帮助都将不胜感激请查看此代码的作用:
var placeMarks: NSMutableArray = NSMutableArray()
for mp in placeMarks{
placeMarks.addObject(mp)
}
首先,它创建并初始化一个名为placeMarks
的空数组
然后,它循环通过placeMarks
(为空)并将自己的对象添加到自身中(但该代码从不执行,因为数组一开始是空的)
然后,这个空的placeMarks
数组被传递给showAnnotations
,后者什么也不做(因为数组是空的)
相反,代码应该在
response.mapItems
数组中循环,并将该数组中每个MKMapItem
对象的placemark
添加到placeMarks
数组中
此外,在尝试处理响应之前,代码应检查err
是否为nil
最后,调用startWithCompletionHandler
之前的response
和err
的局部变量声明是不必要的。完成处理程序不需要这些变量,它将搜索在内部创建的对象传递给块
修改后的代码可能如下所示:
//var response: MKLocalSearchResponse
//var err : NSError = NSError()
search.startWithCompletionHandler { (
response, err) -> Void in
if (err == nil) {
var placeMarks: NSMutableArray = NSMutableArray()
for res in response.mapItems {
if let mi = res as? MKMapItem {
placeMarks.addObject(mi.placemark)
}
}
self.mapView.removeAnnotations(self.mapView.annotations)
self.mapView.showAnnotations(placeMarks, animated: true)
}
}
谢谢,我只是对var-response:MKLocalSearchResponse-var-err:NSError=NSError()进行了注释,它正在工作。。