MapKit 3 Display of the current location of the map

Swift3.0 // // ViewController.swift // MapKit003 // // Created by Misato Morino on 2016/08/15. // Copyright © 2016年 Misato Morino. All rights reserved. // import UIKit import MapKit import CoreLocation class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { var myMapView: MKMapView! var myLocationManager: CLLocationManager! override func viewDidLoad() { super.viewDidLoad() // LocationManagerの生成. myLocationManager = CLLocationManager() // Delegateの設定. myLocationManager.delegate = self // 距離のフィルタ. myLocationManager.distanceFilter = 100.0 // 精度. myLocationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters // セキュリティ認証のステータスを取得. let status = CLLocationManager.authorizationStatus() // まだ認証が得られていない場合は、認証ダイアログを表示. if(status != CLAuthorizationStatus.authorizedWhenInUse) { print("not determined") // まだ承認が得られていない場合は、認証ダイアログを表示. myLocationManager.requestWhenInUseAuthorization() } // 位置情報の更新を開始. myLocationManager.startUpdatingLocation() // MapViewの生成. myMapView = MKMapView() // MapViewのサイズを画面全体に. myMapView.frame = self.view.bounds // Delegateを設定. myMapView.delegate = self // MapViewをViewに追加. self.view.addSubview(myMapView) // 中心点の緯度経度. let myLat: CLLocationDegrees = 37.506804 let myLon: CLLocationDegrees = 139.930531 let myCoordinate: CLLocationCoordinate2D = CLLocationCoordinate2DMake(myLat, myLon) as CLLocationCoordinate2D // 縮尺. let myLatDist : CLLocationDistance = 100 let myLonDist : CLLocationDistance = 100 // Regionを作成. let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(myCoordinate, myLatDist, myLonDist); // MapViewに反映. myMapView.setRegion(myRegion, animated: true) } // GPSから値を取得した際に呼び出されるメソッド. func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { print("didUpdateLocations") // 配列から現在座標を取得. let myLocations: NSArray = locations as NSArray let myLastLocation: CLLocation = myLocations.lastObject as! CLLocation let myLocation:CLLocationCoordinate2D = myLastLocation.coordinate print("\(myLocation.latitude), \(myLocation.longitude)") // 縮尺. let myLatDist : CLLocationDistance = 100 let myLonDist : CLLocationDistance = 100 // Regionを作成. let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(myLocation, myLatDist, myLonDist); // MapViewに反映. myMapView.setRegion(myRegion, animated: true) } // Regionが変更した時に呼び出されるメソッド. func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { print("regionDidChangeAnimated") } // 認証が変更された時に呼び出されるメソッド. private func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { switch status{ case .authorizedWhenInUse: print("AuthorizedWhenInUse") case .authorized: print("Authorized") case .denied: print("Denied") case .restricted: print("Restricted") case .notDetermined: print("NotDetermined") } } } Info.plist <key>NSLocationWhenInUseUsageDescription</key> <string>Use Location</string> 上記の内容をinfo.plistに追加 Swift 2.3 // // ViewController.swift // MapKit003 // // Created by Misato Morino on 2016/08/15. // Copyright © 2016年 Misato Morino. All rights reserved. // import UIKit import MapKit import CoreLocation class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { var myMapView: MKMapView! var myLocationManager: CLLocationManager! override func viewDidLoad() { super.viewDidLoad() // LocationManagerの生成. myLocationManager = CLLocationManager() // Delegateの設定. myLocationManager.delegate = self // 距離のフィルタ. myLocationManager.distanceFilter = 100.0 // 精度. myLocationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters // セキュリティ認証のステータスを取得. let status = CLLocationManager.authorizationStatus() // まだ認証が得られていない場合は、認証ダイアログを表示. if(status != CLAuthorizationStatus.AuthorizedWhenInUse) { print("not determined") // まだ承認が得られていない場合は、認証ダイアログを表示. myLocationManager.requestWhenInUseAuthorization() } // 位置情報の更新を開始. myLocationManager.startUpdatingLocation() // MapViewの生成. myMapView = MKMapView() // MapViewのサイズを画面全体に. myMapView.frame = self.view.bounds // Delegateを設定. myMapView.delegate = self // MapViewをViewに追加. self.view.addSubview(myMapView) // 中心点の緯度経度. let myLat: CLLocationDegrees = 37.506804 let myLon: CLLocationDegrees = 139.930531 let myCoordinate: CLLocationCoordinate2D = CLLocationCoordinate2DMake(myLat, myLon) as CLLocationCoordinate2D // 縮尺. let myLatDist : CLLocationDistance = 100 let myLonDist : CLLocationDistance = 100 // Regionを作成. let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(myCoordinate, myLatDist, myLonDist); // MapViewに反映. myMapView.setRegion(myRegion, animated: true) } // GPSから値を取得した際に呼び出されるメソッド. func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { print("didUpdateLocations") // 配列から現在座標を取得. let myLocations: NSArray = locations as NSArray let myLastLocation: CLLocation = myLocations.lastObject as! CLLocation let myLocation:CLLocationCoordinate2D = myLastLocation.coordinate print("\(myLocation.latitude), \(myLocation.longitude)") // 縮尺. let myLatDist : CLLocationDistance = 100 let myLonDist : CLLocationDistance = 100 // Regionを作成. let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(myLocation, myLatDist, myLonDist); // MapViewに反映. myMapView.setRegion(myRegion, animated: true) } // Regionが変更した時に呼び出されるメソッド. func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) { print("regionDidChangeAnimated") } // 認証が変更された時に呼び出されるメソッド. func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { switch status{ case .AuthorizedWhenInUse: print("AuthorizedWhenInUse") case .Authorized: print("Authorized") case .Denied: print("Denied") case .Restricted: print("Restricted") case .NotDetermined: print("NotDetermined") } } } Info.plist <key>NSLocationWhenInUseUsageDescription</key> <string>Use Location</string> 上記の内容をinfo.plistに追加 2.3と3.0の差分 func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) から func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) に変更 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) から func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) に変更

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.