【发布时间】:2012-12-08 12:49:31
【问题描述】:
我正在开发一个基于地图和位置跟踪的 iOS 应用。当用户第一次启动应用程序时,它会要求允许跟踪位置等。唯一的问题是,当它这样做时,我有代码设置初始地图视图和其他基于位置的变量之前用户点击确定。
我发现我可以将这些启动步骤放在等待用户更改位置管理器权限的 while 循环之后,如下所示,但这可能不是最佳实践,更不用说它会导致一些奇怪的行为启动画面和地图之间的过渡:
BOOL firstrun = TRUE;
while ([[locationManager class] authorizationStatus] == kCLAuthorizationStatusDenied || [[locationManager class] authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
NSLog(@"Waiting for location permission");
}
...initiation code...
我不知道的位置管理器委托中是否有警报框的“位置访问权限”侦听器或类似功能?我在文档中看不到这种方法。有人知道这里的最佳做法是什么吗?非常感谢。
编辑 我按如下方式开始我的位置跟踪:
if (nil == locationManager)
locationManager = [[CLLocationManager alloc] init];
[locationManager startMonitoringSignificantLocationChanges];
self.musicmap.delegate = self;
[self.mymap setShowsUserLocation:true];
谢谢
【问题讨论】:
-
请显示您的位置管理器初始化代码。你是怎么开始的?
-
我已更新以显示我的初始状态。它基于 Apple 文档中的“重大位置更改”教程。
标签: ios map location cllocationmanager