Ios Xcode 4.5中的当前位置错误

Ios Xcode 4.5中的当前位置错误,ios,xcode,ipad,map,Ios,Xcode,Ipad,Map,在Xcode 4.5中,苹果推出了苹果新地图。我的应用程序非常需要地图服务。我注意到,在我的应用程序中,它显示了错误的当前位置,直到你删除应用程序并重新打开它时,它才会显示正确的当前位置,有时它不会。我刚刚连接到4G时,它显示了错误的当前位置。有没有办法修复这个错误,因为我的应用程序非常需要正确的位置。提前谢谢。若你们能提供代码,它将帮助很多…编辑:苹果地图应用程序中的相同问题 我的代码: 你应该检查一下时间戳。。如果我正确理解你的应用程序逻辑,你可以这样做- - (void)locationM

在Xcode 4.5中,苹果推出了苹果新地图。我的应用程序非常需要地图服务。我注意到,在我的应用程序中,它显示了错误的当前位置,直到你删除应用程序并重新打开它时,它才会显示正确的当前位置,有时它不会。我刚刚连接到4G时,它显示了错误的当前位置。有没有办法修复这个错误,因为我的应用程序非常需要正确的位置。提前谢谢。若你们能提供代码,它将帮助很多…编辑:苹果地图应用程序中的相同问题

我的代码:


你应该检查一下时间戳。。如果我正确理解你的应用程序逻辑,你可以这样做-

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {

NSDate* time = newLocation.timestamp;
    NSTimeInterval timePeriod = [time timeIntervalSinceNow];
    if(timePeriod < SOME_MINIMUM_TIME_PERIOD ) { //for eg: timePeriod < 1.0
               totalDistance += [newLocation distanceFromLocation:oldLocation];
    } else {
        // skip.. or do what you do on a 'location-not-updated' event
    }
}

你应该检查一下时间戳。。如果我正确理解你的应用程序逻辑,你可以这样做-

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {

NSDate* time = newLocation.timestamp;
    NSTimeInterval timePeriod = [time timeIntervalSinceNow];
    if(timePeriod < SOME_MINIMUM_TIME_PERIOD ) { //for eg: timePeriod < 1.0
               totalDistance += [newLocation distanceFromLocation:oldLocation];
    } else {
        // skip.. or do what you do on a 'location-not-updated' event
    }
}

苹果文档中的旧方法似乎仍在iOS6中运行,但在我的活动应用程序中没有注意到这一点,它通过gps跟踪用户的路线

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
    if (locationAge > 5.0) return;
    if (newLocation.horizontalAccuracy < 0) return; 

    // proceed with coords here
}

苹果文档中的旧方法似乎仍在iOS6中运行,但在我的活动应用程序中没有注意到这一点,它通过gps跟踪用户的路线

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
    if (locationAge > 5.0) return;
    if (newLocation.horizontalAccuracy < 0) return; 

    // proceed with coords here
}


我注意到Xcode 4.4+也存在同样的问题。这个问题只是随机出现的,或者在Xcode中似乎是这样:如果你将应用上传到应用商店,这就不再是问题了。同时,请提交一个bug。

我注意到Xcode 4.4+也存在同样的问题。这个问题只是随机出现的,或者在Xcode中似乎是这样:如果你将应用上传到应用商店,这就不再是问题了。同时,请提交一个bug。

我在我正在开发的一个需要地理围栏的应用程序中注意到了这个问题。它显示它以前锁定的位置,即使我在应用程序处于后台时移动了几英里。你是如何获得位置的?CoreLocation实际上缓存最后一个已知的位置,并在您再次启动应用程序时将该缓存位置提供给您。如果您使用的是委托方法,那么您应该检查时间戳,如果时间戳太旧,则应将其丢弃。我使用的是corelocation,我们如何删除缓存位置:我想提及的是,如果应用程序位于后台,然后打开它,显示一些我们没有去的疯狂位置,5秒后,它会显示正确的位置,我们如何解决这个问题…您不删除缓存位置,只需忽略它,直到找到一个有效的位置。你就像我说的那样-检查时间戳。如果它是一个旧的时间戳,那么忽略它直到最近的时间戳出现。我在我正在开发的一个需要地理围栏的应用程序中注意到了这个问题。它显示它以前锁定的位置,即使我在应用程序处于后台时移动了几英里。你是如何获得位置的?CoreLocation实际上缓存最后一个已知的位置,并在您再次启动应用程序时将该缓存位置提供给您。如果您使用的是委托方法,那么您应该检查时间戳,如果时间戳太旧,则应将其丢弃。我使用的是corelocation,我们如何删除缓存位置:我想提及的是,如果应用程序位于后台,然后打开它,显示一些我们没有去的疯狂位置,5秒后,它会显示正确的位置,我们如何解决这个问题…您不删除缓存位置,只需忽略它,直到找到一个有效的位置。你就像我说的那样-检查时间戳。如果是旧的时间戳,则忽略它,直到出现最近的时间戳。但你没有从应用商店下载此应用,是吗?没错。如果你从应用商店下载,它会很好用。是的,你可以。但是,如果您需要测试需要应用程序显示正确位置的功能,您可能会遇到问题。您的应用程序商店中是否有没有此错误的应用程序我只想确保代码中没有错误……但是您没有从应用程序商店下载此应用程序,是吗?没错。如果你从应用商店下载,它会很好用。是的,你可以。但是,如果您需要测试需要应用程序显示正确位置的功能,你可能有问题。你在应用商店中有没有没有没有此错误的应用程序我只是想确保代码中没有错误……而且你在应用商店中的活动应用程序也是如此,因为@Scott告诉我应用商店中的应用程序没有此错误……这取决于目前的环境条件,但是这个小过滤器做得很好。我的应用程序仍在开发中,我每天都在使用Xcode 4.5进行开发。您的代码很棒:但我注意到,当应用程序进入后台时,当您再次打开它时,它会显示错误的当前位置……我的应用程序支持后台位置,即它甚至在后台进行跟踪。这一个过滤缓存帧位置的东西和无效帧水平误差,其他的一个进一步使用。我没有添加其他琐碎的过滤器,因为它取决于很多,一些用户甚至可能得不到任何数据。除了我跳过前3帧到smo

轨道开始时的oth精度提升阶段。如果我的客户需要,我将在以后添加一些高级过滤。但是,如果GPS覆盖良好,即帧具有良好的恒定精度,则这种方法效果良好。很好的复杂性/优势。您只需在项目的“信息”选项卡中添加应用程序注册,以便将位置更新添加到所需的后台模式。这些位置更新例程即使在后台也会被调用。请注意,您必须在应用程序描述中添加一条注释,说明类似应用程序由于背景位置而消耗了您的电池,否则将无法通过审查。为了省电和避免出现这种情况,您可以使用重要的位置更新,但它不适合准确的位置跟踪。而且,您在应用商店中的活动应用程序也是如此,因为@Scott告诉我应用商店中的应用程序不存在此错误……这取决于当前的环境条件,但这个小过滤器很有用。我的应用程序仍在开发中,我每天都在使用Xcode 4.5进行开发。您的代码很棒:但我注意到,当应用程序进入后台时,当您再次打开它时,它会显示错误的当前位置……我的应用程序支持后台位置,即它甚至在后台进行跟踪。这一个过滤缓存帧位置的东西和无效帧水平误差,其他的一个进一步使用。我没有添加其他琐碎的过滤器,因为它取决于很多,一些用户甚至可能得不到任何数据。除了我跳过前3帧以平滑轨道开始处的精度增强阶段。如果我的客户需要,我将在以后添加一些高级过滤。但是,如果GPS覆盖良好,即帧具有良好的恒定精度,则这种方法效果良好。很好的复杂性/优势。您只需在项目的“信息”选项卡中添加应用程序注册,以便将位置更新添加到所需的后台模式。这些位置更新例程即使在后台也会被调用。请注意,您必须在应用程序描述中添加一条注释,说明类似应用程序由于背景位置而消耗了您的电池,否则将无法通过审查。为了节省电源并避免这种情况,您可以使用重要的位置更新,但它不适用于准确的位置跟踪。只需回答//跳过中的一个问题。。或者在“位置未更新”事件中执行操作我应该在其中放置什么…我有一个快速问题,当没有当前位置时我可以显示警报…当由于gps关闭或其他原因无法确定位置时,将返回位置0.0,0.0。。您可以将其作为支票输入并显示警报..iftimePeriod- (void)applicationDidEnterBackground:(UIApplication *)application { if(backgroundLocationDisabled) { [locationManager stopUpdatingLocation]; // additional stuff } }