CLLocationManagerと精度の問題-何か経験はありますか?

ランマッド

だから私はiPhoneGPSのいくつかの精度の問題に取り組んでいます。ロケーションを利用したアプリがあります。

デリゲートメソッドでlocationManager: didUpdateToLocation: fromLocation:、場所が返されます。少し調べてみると、desiredAccuracyプロパティをに設定した場合でも、GPSが最初に返す結果が常に正確であるとは限らないようkCLLocationAccuracyBestです。

これを回避するために、少なくとも3回stopUpdatingLocation返される前に電話をかけませんnewLocation:(これは非常に高速です)。またstopUpdatingLocation、を返すかどうかについて、他の2つの「要件」を試してみましnewLocation私が試した1つの方法は、緯度と経度を確認してnewLocation比較しoldLocation、これらが同一でない場合は、場所の更新を実行し続けることでした。また、oldLocationとの間の距離を確認してみましたがnewLocation、20メートル未満であれば問題ありません。これらは両方とも、少なくとも3回の実行を返すことでテストされます。後者の方法は、ユーザーが移動中の車両に乗っている場合に100%同一であると逃げるのが非常に難しいため、それほど「厳密」ではnewLocationありoldLocationません。

さて、私の問題は、上記を行った場合でも(基本的に場所を受け入れず、いくつかの更新がCLLocationManager行われ、CLLocations(またはそれらが同一であるかどうか)間の距離をチェックするまで、場所について多少奇妙な結果が表示されることがありますが、テストするとき。

アプリを終了し、Maps.appにアクセスし、GPSを使用してマルチタスクを開き、アプリを強制終了してから再度開いてクリーンな起動を行うと、修正されることがあります。

同じ種類の問題を回避するために人々が使用した経験と可能な解決策はありますか?コメントと解決策を高く評価します:)

ドンキム

次のコードを取得したのがどのプロジェクトであったかは正確には覚えていませんが、これは非常にうまく機能しました(WWDC 2010ビデオからのものだったことを覚えています)。私のコードでは、元のプロジェクトからのコメントをそのまま残したので、これが役立つことを願っています。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    // test the age of the location measurement to determine if the measurement is cached
    // in most cases you will not want to rely on cached measurements
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];

    if (locationAge > 5.0) return;

    // test that the horizontal accuracy does not indicate an invalid measurement
    if (newLocation.horizontalAccuracy < 0) return;

    // test the measurement to see if it is more accurate than the previous measurement
    if (bestEffortAtLocation == nil || bestEffortAtLocation.horizontalAccuracy > newLocation.horizontalAccuracy) {
        // store the location as the "best effort"
        self.bestEffortAtLocation = newLocation;

        // test the measurement to see if it meets the desired accuracy
        //
        // IMPORTANT!!! kCLLocationAccuracyBest should not be used for comparison with location coordinate or altitidue 
        // accuracy because it is a negative value. Instead, compare against some predetermined "real" measure of 
        // acceptable accuracy, or depend on the timeout to stop updating. This sample depends on the timeout.
        //
        if (newLocation.horizontalAccuracy <= locationManager.desiredAccuracy) {
            // we have a measurement that meets our requirements, so we can stop updating the location
            // 
            // IMPORTANT!!! Minimize power usage by stopping the location manager as soon as possible.
            //
            [self stopUpdatingLocation:NSLocalizedString(@"Acquired Location", @"Acquired Location")];

            // we can also cancel our previous performSelector:withObject:afterDelay: - it's no longer necessary
            [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(stopUpdatingLocation:) object:nil];
        }
    }
}

お役に立てれば!

GetLocationViewController.mAppleの「LocateMe」サンプルプロジェクトのVia

https://developer.apple.com/library/content/samplecode/LocateMe/Introduction/Intro.html

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Raspberry PIでのJavaの経験はありますか?

分類Dev

Drools FlowやOSWorkflowの経験はありますか?

分類Dev

DNS-SD:「mdnsjava」の使用経験はありますか?

分類Dev

TaskJugglerの経験は何ですか?

分類Dev

バックミンスターの実世界経験はありますか?

分類Dev

Androidでのインスタンス化に経験則はありますか?

分類Dev

誰でもAppScaleの経験がありますか?

分類Dev

誰もがEclipse GMFの経験がありますか?

分類Dev

GetAppContainerNamedObjectPathの使用経験がある人はいますか?

分類Dev

Rational PurifyPlus:どこで購入しますか?代替案の経験はありますか?

分類Dev

JDK 1.4以降の経験はありません。私はまだ市場で実行可能ですか?

分類Dev

RAMのアップグレードに関する経験則はありますか?

分類Dev

nginxとmemcachedを使用してWebサイトを最適化した経験はありますか?

分類Dev

H2データベースの実際の経験はありますか?

分類Dev

JUnitテストケースの工数を見積もるための経験則はありますか?

分類Dev

「Play」Java Web開発フレームワークの経験はありますか?

分類Dev

iPhoneXRシミュレーターの横向きでSwifUINavigationViewを使用した経験はありますか?

分類Dev

iPhoneXRシミュレーターの横向きでSwifUINavigationViewを使用した経験はありますか?

分類Dev

Python。このプログラミングの問題を解決するための私の解決策が奇妙であるかどうか知りたいですか?また、より多くの経験を持っている人からの適切な解決策は何でしょうか

分類Dev

C ++の関数の戻り値の型としてポインターまたは参照を使用する際の経験則はありますか?

分類Dev

私の式に何か問題はありますか?

分類Dev

Matlabで行列乗算、sum()、またはforループをいつ使用するかについての経験則はありますか?

分類Dev

CLIを設計するとき、オプションまたはサブコマンドを使用するための好み/経験則はありますか?

分類Dev

'name'キーを持つ配列の代わりにJSONオブジェクトを使用する場合の経験則はありますか?

分類Dev

Spark RDDの最適なパーティション数とその要素数に関する経験則はありますか?

分類Dev

静的メソッドとインスタンスメソッドをコーディングする場合の経験則はありますか?

分類Dev

アプリケーションのインストールとアップグレードに関する経験則はありますか?

分類Dev

これは、Jackson JsonParserのバグですか、それとも何か問題がありますか?

分類Dev

それはMSVC2010のバグですか、それとも何か問題がありますか?

Related 関連記事

  1. 1

    Raspberry PIでのJavaの経験はありますか?

  2. 2

    Drools FlowやOSWorkflowの経験はありますか?

  3. 3

    DNS-SD:「mdnsjava」の使用経験はありますか?

  4. 4

    TaskJugglerの経験は何ですか?

  5. 5

    バックミンスターの実世界経験はありますか?

  6. 6

    Androidでのインスタンス化に経験則はありますか?

  7. 7

    誰でもAppScaleの経験がありますか?

  8. 8

    誰もがEclipse GMFの経験がありますか?

  9. 9

    GetAppContainerNamedObjectPathの使用経験がある人はいますか?

  10. 10

    Rational PurifyPlus:どこで購入しますか?代替案の経験はありますか?

  11. 11

    JDK 1.4以降の経験はありません。私はまだ市場で実行可能ですか?

  12. 12

    RAMのアップグレードに関する経験則はありますか?

  13. 13

    nginxとmemcachedを使用してWebサイトを最適化した経験はありますか?

  14. 14

    H2データベースの実際の経験はありますか?

  15. 15

    JUnitテストケースの工数を見積もるための経験則はありますか?

  16. 16

    「Play」Java Web開発フレームワークの経験はありますか?

  17. 17

    iPhoneXRシミュレーターの横向きでSwifUINavigationViewを使用した経験はありますか?

  18. 18

    iPhoneXRシミュレーターの横向きでSwifUINavigationViewを使用した経験はありますか?

  19. 19

    Python。このプログラミングの問題を解決するための私の解決策が奇妙であるかどうか知りたいですか?また、より多くの経験を持っている人からの適切な解決策は何でしょうか

  20. 20

    C ++の関数の戻り値の型としてポインターまたは参照を使用する際の経験則はありますか?

  21. 21

    私の式に何か問題はありますか?

  22. 22

    Matlabで行列乗算、sum()、またはforループをいつ使用するかについての経験則はありますか?

  23. 23

    CLIを設計するとき、オプションまたはサブコマンドを使用するための好み/経験則はありますか?

  24. 24

    'name'キーを持つ配列の代わりにJSONオブジェクトを使用する場合の経験則はありますか?

  25. 25

    Spark RDDの最適なパーティション数とその要素数に関する経験則はありますか?

  26. 26

    静的メソッドとインスタンスメソッドをコーディングする場合の経験則はありますか?

  27. 27

    アプリケーションのインストールとアップグレードに関する経験則はありますか?

  28. 28

    これは、Jackson JsonParserのバグですか、それとも何か問題がありますか?

  29. 29

    それはMSVC2010のバグですか、それとも何か問題がありますか?

ホットタグ

アーカイブ