0

どうすれば次のことができますか?iPhone アプリに、ユーザーがクリックして GPS ナビゲーションを開始するボタンがあります。ボタンがクリックされたときに私がすることは、その場所を取得し、それを Google マップに渡して残りの作業を行うことだけです。

ただし、ボタンがある画面に着陸するとすぐに、アプリケーションは「このアプリはあなたの現在の場所を使用したいと考えています」という標準を尋ねてきます。しかし、画面に着地するとすぐにこれを尋ねたくありません。代わりに、ボタンがクリックされたときに尋ねられるべきです。

ビューの .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]];
}
4

2 に答える 2

2

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];
}
于 2013-10-20T17:43:12.487 に答える