書いたコード swift
行ったこと ストリーボードに@のところを紐付けた。
行いたいこと 位置情報を取得し、移動したルートを表示し移動距離を表示させたい。
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView! var locationManager: CLLocationManager! fileprivate func initializeLocationManager() { locationManager = CLLocationManager() } fileprivate func requestAuthorization() { locationManager.requestAlwaysAuthorization() } fileprivate func setupLocationManagerIfNeeded() { let status = CLLocationManager.authorizationStatus() if status == .authorizedWhenInUse || status == .authorizedAlways { locationManager.delegate = self locationManager.distanceFilter = 10 locationManager.startUpdatingLocation() } } override func viewDidLoad() { super.viewDidLoad() initializeLocationManager() requestAuthorization() setupLocationManagerIfNeeded() }
}
extension ViewController: CLLocationManagerDelegate {
// 位置情報取得に失敗したときに呼び出される
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error.localizedDescription)
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { // 取得した位置情報の緯度経度 let location = locations.first let latitude = location?.coordinate.latitude ?? 0 let longitude = location?.coordinate.longitude ?? 0 let locationCoordinate = CLLocationCoordinate2DMake(latitude, longitude) // 表示するマップの中心を、取得した位置情報のポイントに指定 mapView.setCenter(locationCoordinate, animated: true) var region = mapView.region region.center = locationCoordinate region.span.latitudeDelta = 0.02 region.span.longitudeDelta = 0.02 mapView.setRegion(region, animated: true) let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2DMake(35.696135, 139.768322) annotation.title = "目的地" self.mapView.addAnnotation(annotation) // 位置情報取得を停止 locationManager.stopUpdatingLocation() }
}
ご教示よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー