現在地の座標とロングタップの座標の距離を計測するコードを作成しました。
動作的には問題ありませんが、現在位置の座標が緯度:0、経度:0になります。
試したこと①
シミュレータ起動後に、Debug > location > Custom Locationより緯度:35、経度:136を設定。
その後確認するも、緯度:0、経度:0のまま。
試したこと②
シミュレータ起動後に、Xcodeのデバックツールバーに表示されるロケーションの場所を「Tokyo, Japan」に変更。
その後確認するも、緯度:0、経度:0のまま。
シミュレータの座標を任意の値に設定したいのですが、どうすれば良いでしょうか?
html
1import UIKit 2import MapKit 3import CoreLocation 4 5class ViewController: UIViewController,CLLocationManagerDelegate,UIGestureRecognizerDelegate { 6 @IBOutlet weak var mapView: MKMapView! 7 @IBOutlet weak var latitude1: UILabel! 8 @IBOutlet weak var longitude1: UILabel! 9 10 @IBOutlet weak var latitude2: UILabel! 11 @IBOutlet weak var longitude2: UILabel! 12 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 // Do any additional setup after loading the view. 17 } 18 19 @IBAction func longTapAction(_ sender: UILongPressGestureRecognizer) { 20 21 if sender.state == .began{ 22 23 } 24 else if sender.state == .ended{ 25 26 let tapPoint = sender.location(in: view) 27 let center = mapView.convert(tapPoint, toCoordinateFrom: mapView) 28 29 let lonStr = center.longitude.description 30 let latStr = center.latitude.description 31 32 let myPoint = mapView.userLocation.coordinate 33 34 35 latitude1.text = String(myPoint.latitude) 36 longitude1.text = String(myPoint.longitude) 37 38 latitude2.text = String(center.latitude) 39 longitude2.text = String(center.longitude) 40 41 let distance = calcDistance(mapView.userLocation.coordinate, center) 42 43 print("distance : " + distance.description) 44 45 46 47 48 49 50 } 51 } 52 53 func calcDistance(_ a: CLLocationCoordinate2D, _ b: CLLocationCoordinate2D) -> CLLocationDistance { 54 let aLoc: CLLocation = CLLocation(latitude: a.latitude, longitude: a.longitude) 55 let bLoc: CLLocation = CLLocation(latitude: b.latitude, longitude: b.longitude) 56 57 let dist = bLoc.distance(from: aLoc) 58 return dist 59 60 61 } 62 63 64} 65 66
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 12:36