【发布时间】:2015-07-02 19:14:15
【问题描述】:
我有以下代码:
func addAnnotation(gesture: UIGestureRecognizer){
//touch point
var touchPoint = gesture.locationInView(self.UImapMK)
var location = UImapMK.convertPoint(touchPoint, toCoordinateFromView: self.UImapMK)
var cllocation = CLLocation(latitude: location.latitude, longitude: location.longitude)
var addressStr: String = "Undefined"
//GeoCoder
CLGeocoder().reverseGeocodeLocation(cllocation, completionHandler: { (placemark, error) -> Void in
if error == nil {
if placemark.count > 0{
var address = placemark[0] as! CLPlacemark
addressStr = "\(address.locality), \(address.administrativeArea)"
}
}
else{
addressStr = "Error"
}
println("RUN: CLgeocoder")
})
//Annotation
var annotation = MKPointAnnotation()
annotation.coordinate = location
annotation.title = addressStr
UImapMK.addAnnotation(annotation)
}
但是 reverseGeocodeLocation 函数似乎在 addAnnotation 之后运行,所以每次我将 addressStr 设置为“未定义”。
有没有办法让 reverseGeocodeLocation 先运行?谢谢!
【问题讨论】:
标签: swift mapkit core-location mkannotation reverse-geocoding