Iphone 创建基于位置的提醒:如何处理水平精度?
我正在创建一个基于位置的提醒,Iphone 创建基于位置的提醒:如何处理水平精度?,iphone,ios,ios6,core-location,cllocation,Iphone,Ios,Ios6,Core Location,Cllocation,我正在创建一个基于位置的提醒,ekrementer 对于坐标,我使用CLGeocoder将地址转换为CLLocation 说到提醒本身,我认为有两个因素决定了提醒触发的“区域”(半径/圆) 1) CLLocation的水平精度。 文档将水平精度属性描述为“位置的不确定半径,以米为单位测量。(只读)” 在前面的问题中有更多关于这方面的好信息: 如该答案所示,水平精度为100m 2) EKStructuredLocation上的radius属性。此属性的讨论说明为“若要使用默认半径,请将此属性设置
ekrementer
对于坐标,我使用CLGeocoder
将地址转换为CLLocation
说到提醒本身,我认为有两个因素决定了提醒触发的“区域”(半径/圆)
1) CLLocation
的水平精度。
文档将水平精度属性描述为“位置的不确定半径,以米为单位测量。(只读)”
在前面的问题中有更多关于这方面的好信息:
如该答案所示,水平精度为100m
2) EKStructuredLocation
上的radius
属性。此属性的讨论说明为“若要使用默认半径,请将此属性设置为0。”
如果我在苹果的库存提醒应用程序中创建一个基于位置的提醒,它会显示radius=0
和horizontalcreacility=0
。因此,它使用默认的“提醒半径”(不知道是什么),值为0
,用于水平位置的不确定性
我想避免在我的提醒中有两个空白。我认为实现这一目标有两种选择:
a) 通过将EKStructuredLocation
设置为0
使用默认的radius
,并将从CLGeocoder
返回的结果更改为水平精度
b) 保持CLGeocoder
的水平精度(100m,或不同,取决于环境)-但不要对EKStructuredLocation
使用默认的半径,并将其设置为较小的值,如1m
想法?我是否正确理解这些API
- 如果使用返回的
水平精度
和半径
的默认值,是否会获得“双边距”
CLLocation
对象的水平精度
是否从坐标引入了半径,还是纯粹提供了有关位置不确定性的信息
欢呼正如progmr指出的那样,水平精度
纯粹是对位置不确定性的估计
为了支持这一点,我做了两个真实世界的测试,其中:
- 我在提醒应用程序中创建了一个基于位置的提醒,它具有
radius=0
,但也报告horizontalcreacility=0
- 我在自己的代码中使用相同的位置创建了一个提醒,设置为
radius=0
,但从CLGeocoder
reportinghorizontalcreacility=100
每次测试时,提醒都会在完全相同的位置触发<代码>水平精度
仅用于提供信息。水平精度是对位置值不确定性的估计。