2017-06-11 14 views
0

私は現在シミュレータを使用していますが、iOSシミュレータのCoreLocationに問題があります。私は、このコードで位置更新を印刷しますが、決してその見出しにはなりません。私はコースを望んでいない、私はターゲットにベアリングを表示するコンパス型のアプリを作ろうとしている。位置を取得できますが、見出しはありません

class CompassViewController: UIViewController, CLLocationManagerDelegate { 

    var lm:CLLocationManager = CLLocationManager() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     print ("view did load") 

     lm.delegate = self; 
     lm.desiredAccuracy = kCLLocationAccuracyBest 
     lm.requestWhenInUseAuthorization() 
     lm.startUpdatingLocation() 
     lm.startUpdatingHeading() 

    } 

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     var locValue:CLLocationCoordinate2D = manager.location!.coordinate 
     var course = manager.location!.course 
       print("locations = \(locations)") 
    } 

    func headingManger(_ manager: CLLocationManager, didUpdateHeading: [CLHeading]) { 
     var heading = manager.heading?.magneticHeading 
     print("heading = \(heading)") 
    } 

} 

私はこれをいくつか組み合わせて試しました。私は、場所と見出しの両方を扱う1つの機能を実行しようとしましたが、それは全くデータ印刷を取得しませんでした。私もheadingManager機能を持ってみましたが、何も印刷されませんでした。上のようにこの現在のコードは、場所を印刷しますが、見出しは印刷しません。

どのようにすればいいですか?

+1

見出しを取得するには、シミュレータにはないコンパス付きのデバイスが必要です。 –

+0

実際にデバイスにコンパスを搭載したアプリをテストする唯一の方法はありますか? –

+1

はい、コンパスが内蔵されたデバイスが必要です。 –

答えて

2

コンパスは、シミュレータでサポートされているハードウェアインタラクションのリストには含まれていません。また、CLLocationManagerのheadingAvailableレポートには、シミュレータでは使用できません。また

、このdocで:

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

一部の位置情報サービスは、与えられたデバイス上の特定のハードウェアの存在を必要とします。たとえば、見出し情報は、ハードウェアコンパスを含むデバイスでのみ使用できます。このクラスは、現在利用可能なサービスを判断するために使用できるいくつかのメソッドを定義します。 具体的にCLLocationManagerはコンパスが利用可能であるかどうかを確認するために、このクラスのプロパティを持っています

  • (BOOL)headingAvailable 私はシミュレータの下でこれを実行する場合:

プリント(「headingAvailable:(INT(CLLocationManager。 headingAvailable()))」) 出力:

2011-11-08 22:38:26.873 Craplet [39975:B603] headingAvailable:0

+0

いいえ私は今、私の電話でこの同じコードを実行していますが、まだ見出しではない場所を取得します。 –

+0

電話でCompass機能をセットアップしてからこのコードを試してみる必要があります。それは動作します – Optimus

+0

どうやってそれをしますか? –

0

デビッド、

私はあなたの質問に言及しましたが、それは答えではありませんでした。これは

didUpdateHeading heading never called under iOS 11

あなたのiOSの11を実行している、ベータ版は、私が疑う6月に周りにいたかどうか知りませんが、確か2017年9月まで解放しないでください...でしたが、多分これは期待しています。

関連する問題