すみません。初心者です。どなたか、わかる方がいらっしゃいましたらご回答宜しくお願い致します。
###前提・実現したいこと
位置情報をviewControllerで使いたいので、位置情報関係のメゾットなどをまとめたLocationManager.Swiftファイルを作りました。getNowLocation() でnowgpsを取得したいのですが、
nowgps=nilになってしまいます。しかし、その後の緯度経度は出力されてます。nowgpsにデータがほしいです。環境はsimulatorで違うコードの時は動いていたので、デバイスの問題ではないと思います。
###発生している問題・エラーメッセージ
consoleに
nowgps=nil
緯度=35.6585 経度=139.7013
と出力されます。
###ソースコード
swift
1import CoreLocation 2 3final class LocationManager: NSObject, CLLocationManagerDelegate { 4 5 private var locationManager_: CLLocationManager 6 7 private var currentLocation: CLLocation! 8 9 struct Singleton { 10 static let sharedInstance = LocationManager() 11 } 12 13 class var sharedInstance: LocationManager { 14 return Singleton.sharedInstance 15 } 16 17 override init() { 18 // locationManageの設定 19 locationManager_=CLLocationManager() 20 locationManager_.desiredAccuracy = kCLLocationAccuracyBest 21 locationManager_.distanceFilter = 10 22 super.init() 23 locationManager_.delegate = self 24 // 位置情報のアクセス許可の状況に応じて、アクセス許可の取得、位置情報取得の開始を行う 25 let status = CLLocationManager.authorizationStatus() 26 switch status{ 27 case .Restricted, .Denied: 28 break 29 case .NotDetermined: 30 // iOS8ではアクセス許可のリクエストをする。iOS7では位置情報取得処理を開始することでアクセス許可のリクエストをする 31 if locationManager_.respondsToSelector("requestWhenInUseAuthorization"){ 32 locationManager_.requestWhenInUseAuthorization() 33 }else{ 34 locationManager_.startUpdatingLocation() 35 } 36 case .AuthorizedWhenInUse, .AuthorizedAlways: 37 locationManager_.startUpdatingLocation() 38 default: 39 break 40 } 41 42 } 43 44 45 // 位置情報取得開始 46 func startUpdatingLocation() { 47 self.locationManager_.startUpdatingLocation() 48 } 49 50 51 // 現在地取得 52 func getNowLocation() -> CLLocation? { 53 54 var nowgps:CLLocation? 55 if self.currentLocation == nil { 56 nowgps = nil 57 println("nowgps=nil") 58 }else{ 59 nowgps = self.currentLocation! 60 } 61 return nowgps 62 } 63 64 65 // 位置情報のアクセス許可の状況が変わったときの処理 66 func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { 67 68 switch status{ 69 case .Restricted, .Denied: 70 manager.stopUpdatingLocation() 71 case .AuthorizedWhenInUse, .AuthorizedAlways: 72 locationManager_.startUpdatingLocation() 73 default: 74 break 75 } 76 } 77 78 // 位置情報が取得できたときの処理 79 func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 80 81 if locations.count > 0{ 82 var location = locations.last as! CLLocation 83 84 self.currentLocation = location 85 86 println("緯度:\(currentLocation.coordinate.latitude) 経度:\(currentLocation.coordinate.longitude)") 87 88 89 } 90 91 } 92 93 94} 95 96
###補足情報(言語/FW/ツール等のバージョンなど)
swiftでxcode6.3.1です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/08 08:34