【问题标题】:Swift - Make reverseGeocoderLocation run firstSwift - 首先运行 reverseGeocodeLocation
【发布时间】: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


    【解决方案1】:

    这种事情一遍又一遍地出现。将所有添加注释的代码移到完成块内。

    【讨论】:

    • 显然!我不敢相信我没有早点想到。 @user3750319 应该将此帖子标记为答案。
    猜你喜欢
    • 1970-01-01
    • 2015-03-20
    • 2012-12-21
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多