Ios CLLocation-应用程序恢复时用户位置丢失(零lat和long)
当应用程序从长时间暂停模式恢复时,GPS信号丢失。Ios CLLocation-应用程序恢复时用户位置丢失(零lat和long),ios,objective-c,mkmapview,cllocation,showuserlocation,Ios,Objective C,Mkmapview,Cllocation,Showuserlocation,当应用程序从长时间暂停模式恢复时,GPS信号丢失。 和/或用户进入GPS较弱的建筑物后,然后恢复应用程序 蓝点消失,贴图的中心位于lat:0 long:0(位于 尼日利亚附近的海洋(非洲) 如果您在该时间点启动另一个GPS应用程序,如Apple Maps, 你确实看到了蓝点,即使不是那么准确 用户修复它的唯一方法是完全关闭我的应用程序,然后重新启动它 它发生在iOS 5.x和iOS 6.x上 在讨论细节之前,我想问一下: 有人遇到过这个问题吗??? 这很烦人,但我找不到任何人对此抱怨 网络上的任
和/或用户进入GPS较弱的建筑物后,然后恢复应用程序 蓝点消失,贴图的中心位于lat:0 long:0(位于 尼日利亚附近的海洋(非洲) 如果您在该时间点启动另一个GPS应用程序,如Apple Maps, 你确实看到了蓝点,即使不是那么准确 用户修复它的唯一方法是完全关闭我的应用程序,然后重新启动它 它发生在iOS 5.x和iOS 6.x上 在讨论细节之前,我想问一下:
有人遇到过这个问题吗???
这很烦人,但我找不到任何人对此抱怨 网络上的任何地方-非常奇怪 我正在使用showUserLocation=YES的普通CLLocation,
没有什么神奇的,没有特别的精度调整或其他,只是简单的默认值 实施 我已经尝试在应用程序恢复时重新启动所有可能的组件
showUserLocation=NO;
showUserLocation=YES;
或
或
即使释放locationManager并再次初始化它也无济于事(还尝试使用dispatch_after延迟重新启动) 是否有任何编程方式强制重置ios中的GPS信号或CLLocation?
如有任何相关讨论,我们将不胜感激 我认为您的默认位置设置为“无”,因此创建了此类问题
Go to
Edite Scheme..
|
|
"Run YourProjectName" / Left Hand Side
|
|
Select "Option" Tab
|
|
Default Location
|
|
Choose any Location such like , "London England"
当您说您已尝试停止/启动
CLLocationManager
对象时,您是说您在代理中得到的回拨给您一个0,0坐标,还是您正试图使用CLLocationManager
中的location
属性直接访问该位置
我在一个基于位置的应用程序上工作,我可以告诉你的一件事是,你不能指望直接获取CLLocationManager
对象的位置。获取位置信息的唯一可靠方法是通过实现
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
我在我的应用程序中处理CLLocationManager
的方式(现在我并不是说这对您的用例是最佳的或理想的,但它确实允许我们在应用程序启动/恢复时为用户提供可靠的基于位置的体验)
CLLocationManager
包装到位置管理类中(通常使用单例)-我认为这可以是CLLocationManager
的子类,但在我的例子中,它只是NSObject
的子类,带有CLLocationManager
对象作为属性NSUserDefaults
中存储用户位置,但我们已在应用程序中完成此操作,并且似乎不会影响审批流程)CLLocationManager
是否返回0,0,如果是,则返回缓存位置CLLocationManager
的委托,您需要有一种方法将此信息传递给视图控制器)viewdiload
),然后允许通过代理回调对地图进行一次更新。收到回拨后,我将showsUserLocation
设置为YES
(如果未调用回拨,则您还没有有效的位置,因此在该点设置showsUserLocation
没有任何作用)
我希望这有帮助,如果您还有任何问题,请随时告诉我 我偶尔会看到类似的情况,但不是在暂停和恢复期间,通常是在发布之间。是的,它被设置为无,我做了更改并开始测试。将很快报告。在应用程序恢复后,它肯定提高了GPS恢复能力。唯一不好的一面是,在连接到Xcode的设备上进行测试时,它将模拟伦敦或其他地方的真实GPS坐标。感谢分享你的应用程序设计,这听起来确实是一个坚定的解决方案。当我说0,0的时候,我的意思是我从回调中得到的。从这个阶段开始,蓝点就永远消失了。如果你能在第3步中解释一下你创建/伪造用户位置的方法(使用真正的蓝点和默认注释?)。如果你想模拟默认注释,最简单的方法是使用Sam Vermette的-他是一个很棒的程序员,我用过的每一个类都非常容易实现(SVProgressHUD、SVPullToRefresh、SVInfiniteScrolling)。只需将其放在缓存位置(假设您在应用程序进入后台之前将该位置缓存到磁盘)。
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation