我想请求函数注释返回坐标(CLLocationCoordinate2D)以供其他函数使用,这里是我的部分代码:
// ULMap is MapView.
override func viewDidLoad() {
var longPressGR = UILongPressGestureRecognizer(target: self, action: "annotation:")
longPressGR.minimumPressDuration = 1
UImap.addGestureRecognizer(longPressGR)
}
func annotation(gesture: UIGestureRecognizer){
//Coordinate
var touchPoint = gesture.locationInView(self.UImap)
var coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)
}
我试过这个,但它不起作用:
func annotation(gesture: UIGestureRecognizer) -> CLLocationCoordinate2D{
//Coordinate
var touchPoint = gesture.locationInView(self.UImap)
var coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)
return coordinate
}
有办法做到这一点吗?提前谢谢。
答案 0 :(得分:2)
手势识别器调用之类的东西无法返回任何内容,因为您不是那个正在调用它们的人。它们被系统调用,因此任何返回值都将通过您无法访问的代码传播回来。您应该为坐标创建一个类级变量并设置它。
所以不要说 var coordinate = UImap.convertPoint(touchPoint,toCoordinateFromView:self.UImap)
你宣布
var coordinate:CLLocationCoordinate2D
在类范围内,然后在你的函数中
coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)
然后坐标将始终是最近设置的坐标。如果需要跟踪多个数组,可以将它们添加到数组中。