我正在创建基于位置的提醒EKReminder
。
对于我正在使用CLGeocoder
将地址转换为CLLocation
的坐标。
当涉及到提醒本身时,我认为有两个因素决定了提醒将会触发的“区域”(半径/圆圈)。
1)CLLocation
的水平精度。
文档将horizontalAccuracy
属性描述为“位置的不确定半径,以米为单位。(只读)”。
在上一个问题中有关于此的更多信息: What do horizontalAccuracy and verticalAccuracy of a CLLocation refer to?
正如答案中所建议的,horizontalAccuracy
是100米。
2)radius
上的EKStructuredLocation
属性。此属性的讨论说明为“要使用默认半径,请将此属性设置为0。”
如果我在Apple的“提醒应用”库存中创建基于位置的提醒,则会显示radius = 0
和horizontalAccuracy = 0
。因此,对于水平位置的不确定性,它使用默认的“提醒半径”(不知道那是什么),值为0
...
我想避免在提醒中留下两个边距。我认为有两种方法可以做到这一点:
a)使用radius
的默认EKStructuredLocation
将其设置为0
,然后将CLGeocoder
返回的结果更改为horizontalAccuracy
0m。
b)保留horizontalAccuracy
的{{1}}(100米,或不同,取决于具体情况) - 但不要使用CLGeocoder
的默认radius
并设置它到一些小的,比如1m。
思考?我能正确理解这些API吗?
EKStructuredLocation
和horizontalAccuracy
的默认值,我会获得“双倍保证金”吗?radius
对象的horizontalAccuracy
是否从坐标引入半径,还是纯粹提供有关位置不确定性的信息?干杯
答案 0 :(得分:1)
正如 progmr 所指出的,horizontalAccuracy
纯粹是对该位置不确定性的估计。
为了支持这一点,我做了几个真实世界的测试:
radius = 0
,但也报告了horizontalAccuracy = 0
。radius = 0
,但是CLGeocoder
报告horizontalAccuracy = 100
每次测试时,提醒都会在完全相同的位置触发。 horizontalAccuracy
纯粹是为了获取信息。