1

位置情報に基づくリマインダーを作成していますEKReminder

CLGeocoderアドレスを に変換するために使用している座標については、 CLLocation.

リマインダー自体に関して言えば、リマインダーが発射される「領域」(半径/円) を決定する 2 つの要因が関係していると思います。

1) の水平精度CLLocation。ドキュメントでは、horizontalAccuracyプロパティを「メートル単位で測定された、場所の不確実性の半径 (読み取り専用)」と説明しています。

前の質問には、これに関するより良い情報があります: CLLocation の horizo​​ntalAccuracy と verticalAccuracy は何を参照していますか?

その答えで示唆されているように、horizontalAccuracyは 100m です。

2) のradiusプロパティEKStructuredLocation。このプロパティのディスカッション ノートには、「デフォルトの半径を使用するには、このプロパティを 0 に設定してください」と書かれています。

Apple のリマインダー アプリで位置情報に基づくリマインダーを作成すると、 と が表示されradius = 0ますhorizontalAccuracy = 0。したがって、デフォルトの「リマインダー半径」(それが何であるかはわかりません)を0、水平位置の不確実性の値で使用しています...

リマインダーに 2 つの余白を設けることは避けたいと考えています。これを実現するには、次の 2 つのオプションがあると思います。

a)に設定してのデフォルトradiusを使用し、から返される結果が 0mになるように変更します。EKStructuredLocation0CLGeocoderhorizontalAccuracy

b) をhorizontalAccuracy(状況に応じて 100m、または状況に応じて異なる) のままにしますがCLGeocoder、 のデフォルトradiusを使用せずEKStructuredLocation、1m などの小さな値に設定します。

考え?これらの API を正しく理解していますか?

  • horizontalAccuracyに返された値とデフォルト値を使用すると、「マージンが 2 倍」になりますradiusか?
  • horizontalAccuracyオブジェクトの は座標からの半径を導入しますかCLLocation、それとも単に位置の不確実性に関する情報を提供するだけですか?

乾杯

4

1 に答える 1

2

progmrで指摘されているように、horizontalAccuracy純粋に場所の不確実性の推定値です。

これを裏付けるために、次のような実際のテストをいくつか行いました。

  • リマインダー アプリで場所ベースのリマインダーを作成しました。これにはradius = 0、レポートも含まれていますhorizontalAccuracy = 0
  • 私は自分のコードで同じ場所を使用してリマインダーを作成しましたが、レポートradius = 0からの戻りCLGeocoderhorizontalAccuracy = 100

各テストで、リマインダーはまったく同じ位置で発射されました。horizontalAccuracy情報提供のみを目的としています。

于 2013-02-21T08:53:21.877 に答える