【问题标题】:Xcode GPS location manager access messageXcode GPS 位置管理器访问消息
【发布时间】:2013-10-20 15:44:44
【问题描述】:

请问我该怎么做? 我的 iPhone 应用程序中有一个按钮,用户单击该按钮即可开始 GPS 导航。当按钮被点击时,我所做的就是获取他们的位置,然后将其传递给谷歌地图以完成剩下的工作。

但是,一旦我进入按钮所在的屏幕,应用程序就会询问我标准的“此应用程序想使用您当前的位置”。但我不希望我一登陆屏幕就被问到这个问题。相反,应该在单击按钮时询问它。

这是我在视图 .m 文件中处理场景的方式:

- (void)viewDidLoad
{
self.locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

然后当按钮被点击时。还尝试将 viewDidLoad 中的代码放在这里,从注释掉的部分可以看出。这是因为当视图加载时我不会被问到这个问题,但是一旦单击按钮,GPS 就无法工作。我在应用程序屏幕上收到一条错误消息,提示“该应用程序无法建立到最近道路的路线”。而“此应用程序想访问您当前的位置”仅在屏幕上短暂闪烁。

- (IBAction)gpsNavigation:(id)sender
{
/*
self.locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];
*/

NSString *destAddress = @"52.269444, -9.708674";
NSString *url = [NSString stringWithFormat: @"http://maps.apple.com/maps?saddr=%f%f&daddr=%@",
                 locationManager.location.coordinate.latitude,
                 locationManager.location.coordinate.longitude,
                 [destAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}

【问题讨论】:

    标签: iphone gps cllocationmanager xcode5


    【解决方案1】:

    请在 gpsNavigation: 方法中使用注释代码。 您的问题是,只要您调用 [locationManager startUpdatingLocation],就会得到 locationManager.location。 所以你的代码可以如下。

    - (IBAction)gpsNavigation:(id)sender
    {
         self.locationManager = [[CLLocationManager alloc] init];
         locationManager.desiredAccuracy = kCLLocationAccuracyBest;
         locationManager.delegate = self;
         [locationManager startUpdatingLocation];
    }
    
    - (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {
        NSString *destAddress = @"52.269444, -9.708674";
        NSString *url = [NSString stringWithFormat: @"http://maps.apple.com/maps?saddr=%f%f&daddr=%@",
                         locationManager.location.coordinate.latitude,
                         locationManager.location.coordinate.longitude,
                         [destAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
        [locationManager stopUpdatingLocation];
    }
    

    【讨论】:

      【解决方案2】:

      一旦您致电[locationManager startUpdatingLocation],您的应用请求位置并将请求用户许可。所以延迟这个电话,直到你需要它(按下按钮)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-08
        • 2013-12-11
        • 2012-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多