斯威夫特:地图返回4个值作为2点之间的距离,为什么?
问题描述:
我计算2点之间的距离。对于第一点,我分配了纬度和经度。第二个坐标点在用户点击地图的任何位置进行协调。每件事情都很完美,除了四次打印的答案。斯威夫特:地图返回4个值作为2点之间的距离,为什么?
- 我试着返回第一个索引(原来第一个索引是4 的值)。
- 我试图将这些值添加到一个集以删除重复的(它没有工作)。
- 我试图做一个循环,并在第一次后中断(仍然返回4个值)。 这里我在哪里创建用户点击(内viewdidAppear)注释:
,
let uilpgr = UILongPressGestureRecognizer(target: self, action: #selector(MapViewController.longpress(gestureRecognizer:)))
uilpgr.minimumPressDuration = 2
map.addGestureRecognizer(uilpgr)
这是计算的距离(功能viewdidAppear后)功能:
@objc func longpress(gestureRecognizer: UIGestureRecognizer){
let touchPoint = gestureRecognizer.location(in: self.map)
let coordinates = map.convert(touchPoint, toCoordinateFrom: self.map)
let annotation = MKPointAnnotation()
annotation.coordinate = coordinates
annotation.title = "Destination"
map.addAnnotation(annotation)
let source = CLLocation(latitude: 5, longitude: 5)
let distination = CLLocation(latitude: coordinates.latitude, longitude: coordinates.longitude)
let distanceInMeters = source.distance(from: distination)
let distanceInMiles = String(Int(distanceInMeters/1.6))
myArrayDataStructure.myArray.append(distanceInMiles)
UserDefaults.standard.set(myArrayDataStructure.myArray, forKey: "items")
}
答
你的问题是你如何处理手势。 “长按”手势(与其他人一样)有几种状态。当手势开始时,手势结束时,手势被取消时以及在“长按”情况下手势被更新时,会调用手势动作。
只有当手势状态为“结束”时,才想执行距离计算。
@objc func longpress(gestureRecognizer: UIGestureRecognizer){
if gestureRecognizer.state = .ended {
// your code here
}
}