用户当前位置找不到

时间:2014-01-24 07:01:36

标签: ios iphone mkmapview cllocationmanager cllocation

在我的一个项目中,我必须将用户当前位置发送到Appdelegate中的Web服务器。当用户点击显示的警告的Ok按钮以获得用户的许可时,它工作正常。但是在我第一次运行应用程序时,权限警报显示在转到rootview Controller.Mean而经度和经度之后很晚。得到cllocation是0.00000f。如何在appdelegate强制获得许可或强行获取用户位置。

第二个想法如果用户拒绝轴的位置。警报没有显示其他时间。在这种情况下,获得cllocation的纬度和经度也是0.00000f。如何在同一时间显示权限警报2或两次以上我希望你能理解我的问题。

快乐编码

2 个答案:

答案 0 :(得分:0)

根据您的场景,您必须在设置窗口的CLLocationManager之前设置rootViewController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

对于您的第二件事苹果默认情况下仅在用户提供权限时提出警告,然后致电CLLocationManagerDelegate method

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

并获取当前位置的纬度和长度。用户拒绝了位置服务,然后您必须引用this

答案 1 :(得分:0)

您需要在CLLocationManagerDelegate界面中设置AppDelegate

要启动CLLocationManager以获取位置,必须设置CLLocationManager类的某些属性。对于此实现,请使用以下代码片段:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Location manager settings
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];

   // Your code for rootViewController settings here
}

然后按如下方式实施CLLocationManagerDelegate方法

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations  {
    CLLocation *userLocation = [locations lastObject];
}

userLocation对象将是用户的当前位置。