位置情報に基づくリマインダーを作成していますEKReminder
。
CLGeocoder
アドレスを に変換するために使用している座標については、 CLLocation
.
リマインダー自体に関して言えば、リマインダーが発射される「領域」(半径/円) を決定する 2 つの要因が関係していると思います。
1) の水平精度CLLocation
。ドキュメントでは、horizontalAccuracy
プロパティを「メートル単位で測定された、場所の不確実性の半径 (読み取り専用)」と説明しています。
前の質問には、これに関するより良い情報があります: CLLocation の horizontalAccuracy と verticalAccuracy は何を参照していますか?
その答えで示唆されているように、horizontalAccuracy
は 100m です。
2) のradius
プロパティEKStructuredLocation
。このプロパティのディスカッション ノートには、「デフォルトの半径を使用するには、このプロパティを 0 に設定してください」と書かれています。
Apple のリマインダー アプリで位置情報に基づくリマインダーを作成すると、 と が表示されradius = 0
ますhorizontalAccuracy = 0
。したがって、デフォルトの「リマインダー半径」(それが何であるかはわかりません)を0
、水平位置の不確実性の値で使用しています...
リマインダーに 2 つの余白を設けることは避けたいと考えています。これを実現するには、次の 2 つのオプションがあると思います。
a)に設定してのデフォルトradius
を使用し、から返される結果が 0mになるように変更します。EKStructuredLocation
0
CLGeocoder
horizontalAccuracy
b) をhorizontalAccuracy
(状況に応じて 100m、または状況に応じて異なる) のままにしますがCLGeocoder
、 のデフォルトradius
を使用せずEKStructuredLocation
、1m などの小さな値に設定します。
考え?これらの API を正しく理解していますか?
horizontalAccuracy
に返された値とデフォルト値を使用すると、「マージンが 2 倍」になりますradius
か?horizontalAccuracy
オブジェクトの は座標からの半径を導入しますかCLLocation
、それとも単に位置の不確実性に関する情報を提供するだけですか?
乾杯