0
私は2点間の距離を計算しています。最初の点については、私は緯度とlongtiudeを割り当てています。 2番目のポイントは、ユーザーがマップをクリックするたびに座標を設定します。答えは4回印刷される以外はすべて完璧に動作します。Swift:Mapは2つの点間の距離として4つの値を返します。なぜですか?
- 最初のインデックスを返そうとしました(最初のインデックスは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")
}