Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 创建基于位置的提醒:如何处理水平精度?_Iphone_Ios_Ios6_Core Location_Cllocation - Fatal编程技术网

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
    reporting
    horizontalcreacility=100

每次测试时,提醒都会在完全相同的位置触发<代码>水平精度
仅用于提供信息。

水平精度是对位置值不确定性的估计。