func forwardGeocoding(address: String) {
CLGeocoder().geocodeAddressString(address, completionHandler: { (placemarks, error) in
if error != nil {
print(error)
return
}
if placemarks?.count > 0 {
let placemark = placemarks?[0]
let location = placemark?.location
let coordinate = location?.coordinate
print("\nlat: \(coordinate!.latitude), long: \(coordinate!.longitude)")
if placemark?.areasOfInterest?.count > 0 {
let areaOfInterest = placemark!.areasOfInterest![0]
print(areaOfInterest)
} else {
print("No area of interest found.")
}
}
})
var INITIAL_DESTINATION = forwardGeocoding(initialDestination)
var DESIRED_DESTINATION = forwardGeocoding(desiredDestination)
var location = CLLocationCoordinate2DMake(<#T##CLLocationDegrees#>, <#T##CLLocationDegrees#>)你好,我正在尝试做一个地图应用程序,并与这一部分有问题。我想要做的是能够将INITIAL_DESTINATION的纬度和经度分开。我必须这样做才能创建一个CLLocationCoordinate2DMake。我一直在尝试做的就是使用INITIAL_DESTINATION.latitude和INITIAL_DESTINATION.longitude,但我仍然面临着同样的错误,那就是"Value of tuple type "()" has no member "latitude"。这也很奇怪,因为它没有给出INITIAL_DESTINATION.longitude的那个错误。
我们非常感谢您的帮助或建议,并感谢您的阅读和宝贵时间的回复。
发布于 2016-06-28 15:48:32
您的函数不会返回任何内容,也不会对异步完成处理程序中返回的值执行任何操作。您需要获取异步结果并以某种方式使用它。
尝试这样做:将打印放在函数的末尾,放在完成处理程序中,然后运行代码。您将看到该函数是在完成处理程序运行之前完成的,因为在远程网站通过网络返回答案之前,块内的代码不会运行。此时,Alamofire将结果传递给完成块中的代码。
您还需要注意,iOS中有多个队列,并且UI更改只能在主队列上完成。不过,完成块并不在主队列上运行,因此要使用从网络返回的信息,您需要使用dispatch_async函数来调用程序中的函数,并使其在主队列上执行。
https://stackoverflow.com/questions/38065862
复制相似问题