如果标题含糊不清,我深表歉意,但我并不确切地说明我的情况。我正在为使用 GPS 的 iPhone 编写应用程序。在该didUpdateLocations:
方法中,我针对任意大小的变量测试位置的水平精度(我将其设置为 50,因为这似乎是一个很好的起点)。如果水平精度小于 50,则保存该位置并增加一个计数器以指示该位置已成功收集。如果水平精度没有通过测试,定位成功计数器会递减。我一直在尝试提出一个可以调整水平精度测试值的方程式。
这个问题很容易解决,如果你只是使用计数器进行准确性测试,但我希望有一些线性度较低的东西。我希望计数器在某种意义上被加权,以便准确度测试变量首先快速接近零,然后随着接近而减慢。
我有一些类似这样的东西,但是一旦精度测试变量变得太精确以至于 GPS 无法匹配,它就会开始振荡。之后,它只会在值之间跳转,比如 1 和 80 左右。这是它的样子:
int previousCounter = successCounter;
if (location.horizontalAccuracy < accuracy)
{
// save location...
successCounter++;
}
else
successCounter--;
int direction = previousCounter - successCounter;
accuracy = 50 - direction * pow(successCounter, 2);
我一直在摆弄这个东西几个小时,似乎无法得到一些实际的工作,我尝试搜索谷歌,但我不确定要寻找什么。我希望这里有人可以提供帮助。