iphone - 使用 CLLocationManager 获取准确位置

标签 iphone ios cllocationmanager

我开始摆弄 CLLocationManager 并且尝试使用下面的回调方法。我到外面在我的 iPhone 上测试它,在最初的几次更新中,我似乎得到了乱码值,就像突然间我的距离变成了 39 米,即使我没有移动任何地方。或者有时它会从 5 米开始,然后跳到 20 米,同样我也没有移动任何地方。我出去走走,从最初的起点开始的更新似乎“还可以”,然后当我往回走时,我又回到了原来的 39 米起点。我想知道我在下面做的是否正确。我还包含了我的 viewDidLoad 方法,我在其中初始化了 CLLocationManager 对象。

有没有办法确保我的第一个值是准确的?提前致谢。

- (void)viewDidLoad
{
    [super viewDidLoad];
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    if (startingPoint == nil) {
        NSLog(@"NIL starting point");
        self.startingPoint = newLocation;
    }

    CLLocationDistance distance = [newLocation distanceFromLocation:startingPoint];
    NSString *distanceString = [[NSString alloc] initWithFormat:@"%g m", distance];
    distanceLabel.text = distanceString;
    [distanceString release];

    numberOfUpdates++;
    NSString *countString = [[NSString alloc] initWithFormat:@"%d", numberOfUpdates];
    countLabel.text = countString;
    [countString release];
}

最佳答案

GPS 是一项不完美的技术。大气条件、卫星可用性(和位置)、天空能见度、附近物体(建筑物)反射的信号都会导致其固有的不准确性。尽管甚至有一个“准确度”值(通常 相当不错)- 即使这样也不是完全可靠的。

飞机不允许使用 GPS 进行精确进近 - 甚至它们的接收器也不够准确,并且它们需要其他技术(这些技术有其自身的问题)。

尝试运行标准的“ map ”应用程序并将其用作比较。我认为您的代码很好 - 它只是 GPS。

当然我这么说是因为我正在开发我自己的海上导航应用程序,我自己遇到了所有这些问题。

关于iphone - 使用 CLLocationManager 获取准确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115642/

相关文章:

iphone - 在 iPhone 的 Facebook 上发布到 friend 墙?

ios - HTML 字符串中无法识别项目符号点

iphone - iPhone 推送通知是通过 HTTP 还是 HTTPS 发送的?

ios - 查看AVAudioSession记录权限状态

ios - 平衡ios电池生命周期和定位精度

iphone - 有什么技巧可以绘制动画路径吗?

ios - 使用 Swift 3,如何解析 JSON 文件以便可以全局访问数据?

ios - 为什么自动布局约束不起作用?

应用程序关闭时 iOS 位置服务启用/禁用事件

swift - 如何在mapbox-gl中显示用户位置标记?