【问题标题】:Get User Final Location IOS获取用户最终位置 IOS
【发布时间】:2017-01-26 20:54:32
【问题描述】:

我在里面做一个查询:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    if (!gotLocation){
        gotLocation = true;
        [locationManager stopUpdatingLocation];
        // DO QUERY
    }
}

但我想知道最终位置何时确定,或者何时确定更准确。我试图只查询一次,并且需要一个精确的查询位置。我知道我可以使用[locations lastObject],但我如何确定何时设置最终或更精确的位置。

【问题讨论】:

    标签: ios cllocationmanager cllocation


    【解决方案1】:

    您可以查看该位置的horizontalAccuracy。值越小越准确。您应该保留对您收到的最后一个位置的参考,然后当一个更准确的新位置进入时,horizontalAccuracy 更小,更新您的参考。

    然后,一旦您收到一个与您的用例足够接近的horizontalAccuracy 位置,您就可以调用stopUpdatingLocation,因为您有您的位置,然后进行查询。

    例如:

    CLLocation *location = [locations lastObject];
    if (location.horizontalAccuracy < self.lastLocation.horizontalAccuracy) {
        self.lastLocation = location;
        if (self.lastLocation.horizontalAccuracy <= kDesiredLocationAccuracy) {
            // execute query or additional logic
            [locationManager stopUpdatingLocation];
        }
    }
    

    希望有帮助!

    【讨论】:

    • 您需要添加某种计时器或其他限制,因为可能永远无法达到所需的准确性。如果您很乐意以 iOS9 及更高版本为目标,那么您可以使用requestLocation,所有的辛苦工作都已为您完成。
    • @Paulw11,你的建议很有趣。如果您可以发布该计时器的示例并检查所需的准确性何时没有得到任何改善,是否可以。
    • 就我个人而言,我至少会以 iOS 9 为目标并使用 requestLocation
    猜你喜欢
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2014-09-03
    相关资源
    最近更新 更多