1

多くの注釈が付いたマップビューがあります。ユーザーが注釈をクリックすると、そこにあるアートピースに関する情報と「この場所への道順を取得する」ボタンが表示された詳細ページに移動します。これが私が決めようとしていることです。私が今行っていたマップビューには、現在のユーザーの場所が含まれていました。これは、URLの開始点がマップアプリに送信するために必要なものです。最新のuserLocation座標をマップビューから次のページに渡して、ユーザーが道順を知りたいときにそれを使用できるようにするのが最善でしょうか。それとも、ユーザーの場所を取得するためだけに次のページで新しいCLLocationManagerを開始する必要があります。また、後者を試しましたが、マネージャーからユーザーの場所を取得できませんでした。私がしたのは、インターフェースでマネージャーを宣言することだけでした。

CLLocationManager *manager;

「プロパティ」それ:

@property (nonatomic, retain) CLLocationManager *manager;

それを「合成」する:

@synthesize manager;

viewDidLoadでこれを行います:

 [manager startUpdatingLocation];

次に、「ナビゲート」IBActionメソッドでこれを実行します。

-(IBAction)navigate; {
    CLLocationCoordinate2D start = manager.location.coordinate;
    CLLocationCoordinate2D end = {[selectedArtPiece.latitude doubleValue], [selectedArtPiece.longitude doubleValue]};
    [[UIApplication sharedApplication] openURL:[[NSURL alloc] initWithString: [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f", start.latitude, start.longitude, end.latitude, end.longitude ]]];

}

「end」は最終的に0,0になるので、何かが足りないに違いありません。

だから私の質問は:

1.CLLocationManagerで何が間違っていますか。

2.それが機能すると仮定して、現在の場所を取得するためにそれを行うことをお勧めしますか、それとも以前のマップビューから少し古い(多分)ユーザーロケーションを送信して道順に使用する必要がありますか?道順の座標を取得するためだけにCLLocationManagerを起動するのは、バッテリーと時間の価値がありますか?

フィードバックをありがとう!

4

1 に答える 1

0

を使用するにはCLLocationManager、alloc + initを使用し、デリゲートを設定してからを呼び出しstartUpdatingLocation、デリゲートメソッドで現在の場所(見つかった場合)を読み取る必要がありますlocationManager:didUpdateToLocation:fromLocation:

ただし、あなたの場合、私はわざわざ現在地をリアルタイムで取得しようとはしません。ユーザーが注釈をタップしてから詳細ページが表示されるまでの時間は長くはなく、大きな違いが生まれます。代わりに、startingLocationプロパティを詳細ページに追加し、詳細ページを表示する前にマップビューuserLocationに設定します。

このように、ユーザーは新しい、より正確な現在の場所が見つかるまで(おそらく)待つ必要はなく、注釈をタップする前に、ユーザーが現在の場所として見たものからの方向を実際に表示します。

于 2011-07-07T16:36:41.000 に答える