2016-07-07 5 views
0

私はユーザーの緯度と経度を取得しようとしています。Swift:座標を取得しようとしましたが、locationManager()関数を呼び出す方法がわかりません

import Foundation 
import CoreLocation 

class locationModule: NSObject, CLLocationManagerDelegate { 
var locationManager = CLLocationManager() 

func getLocation() { 
    locationManager.delegate = self 
    locationManager.requestAlwaysAuthorization() 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.startUpdatingLocation() 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    var location: CLLocationCoordinate2D = (manager.location?.coordinate)! 
    print(location.latitude) 
    print(location.longitude) 
    } 
} 

これは、コードでは、別々のスウィフトのファイルである、だから、私はのgetLocation()関数からlocationManager関数を呼び出す方法、func locationManagerを呼び出すことができるようにgetLocation()を必要としています。

+0

あなたは 'locationManager'を呼び出すしたいと思うのはなぜ? 'CLLocationManager'によって**あなたのため**と呼ばれていることです。 – Alexander

+0

@AMomchilovそれは' CLLocationManager'によって呼び出されたことを意味します –

+0

'CLLocationManager'の全体のポイントはあなたの' locationManager'メソッドを呼び出すためのものです'CLLocationManagerDelegate'を実行して、場所の変更を通知します。その方法を自分で呼び出すことは意味をなさない。 – Alexander

答えて

0

コードは問題ありませんが、Info.plistにキーを追加しなかったために呼び出されていない可能性があります。

コードの場合、をInfo.plistに追加し、文字列値としてAll your base are belong to us, so I use your location whenever I want.などの値を指定します。それからちょうどどこかにこのようなfunc applicationDidBecomeActive(application: UIApplication)ようなあなたのlocationManagerを起動します。

クラスAppDelegate:UIResponder、UIApplicationDelegate {

var window: UIWindow? 
var locMod:locationModule? 

func applicationDidBecomeActive(application: UIApplication) { 
    if (locMod == nil) 
    { 
     locMod = locationModule() 
    } 
    locMod?.getLocation() 
} 

初めて、あなたは、あなたが場所が記録されて表示され、プロンプトが表示されます。

はFYI、ここで私はlocationModuleを整理方法は次のとおりです。

class locationModule: NSObject, CLLocationManagerDelegate { 
    var locationManager = CLLocationManager() 

    internal func getLocation() { 
     locationManager.delegate = self 
     locationManager.requestAlwaysAuthorization() 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.startUpdatingLocation() 
    } 


    // MARK : CLLocationManagerDelegate protocol 
    @objc 
    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     for location in locations { 
      print("\(location.coordinate.latitude), \(location.coordinate.longitude)") 
     } 
    } 
} 
関連する問題