didUpdateLocations:
方法中,我针对任意大小的变量测试位置的水平精度(我将其设置为50,因为这似乎是一个很好的起点)。如果水平精度小于50,那么我保存位置并递增计数器以指示该位置已成功收集。如果水平精度未通过测试,则位置成功计数器会递减。我一直试图想出一个可以调整水平精度测试值的方程式。
问题很容易解决,如果你只是使用计数器进行精确度测试,但我希望有一些不那么线性的东西。我希望计数器在某种意义上是加权的,这样精度测试变量一开始会快速接近零,然后随着接近而减慢。
我有一些像这样的东西,但是一旦准确度测试变量变得过于精确而无法匹配,它就会开始振荡。之后,它会在值之间跳转,如1和80左右。这是它的样子:
int previousCounter = successCounter;
if (location.horizontalAccuracy < accuracy)
{
// save location...
successCounter++;
}
else
successCounter--;
int direction = previousCounter - successCounter;
accuracy = 50 - direction * pow(successCounter, 2);
我一直在摆弄这个东西好几个小时,似乎无法得到实际工作的东西,我试着搜索谷歌,但我不确定要找什么。我希望有人可以提供帮助。
答案 0 :(得分:0)
我最终只使用线性方法,没有方程式。我可能最终加权successCounter增量,只是稍微调整一下。最后,线性方法对于我试图实现的目标来说已经足够了,我在使用应用程序进行现场测试后发现了这一点。当我想到它时,这甚至没有达到我想要实现的目标,所以这就是我最终使用线性方法的原因。我原本打算为这个算法提供GPS的自适应精度,但我开始意识到它真的只是提供有关当前读数的精确度的信息。轻微失败:/