0

CLLocationManger を使用して現在の場所を更新しています。それは私に場所を与えていますが、私が取得している場所ははるかに古いタイムスタンプです。私は、locationcontroller にキャッシュされた場所ではなく新しい場所を強制的に更新させる方法の問題に直面しています。

現在、私はこのチュートリアルを使用しています......

http://www.mobileorchard.com/hello-there-a-corelocation-tutorial/

キャッシュされたものではなく、現在のタイムスタンプで場所を更新する方法を知っている人はいますか?

4

3 に答える 3

0

あなたができる最善のことは、あなたがあなたのアプリに設定することに決めたどんな基準によっても古すぎる場所を捨てることです。ロケーションマネージャを再起動すると、システムに新しいロケーションが必要であることが通知されますが、通常、最初に返されるロケーションは、最後に取得したロケーションである可能性があります。タイムスタンプを確認するだけで十分かもしれませんが、新しい場所を取得できない可能性に備えてください。私の経験では、デバイスが移動していなくても、現在の場所が十分に適切であることが検出された場合、システムを新しい場所で更新する必要はありません。

于 2011-12-08T20:51:29.320 に答える
0

この方法を使用できます

- (IBAction)update {

    locmanager = [[CLLocationManager alloc] init]; 
    [locmanager setDelegate:self]; 
    [locmanager setDesiredAccuracy:kCLLocationAccuracyBest];
    NSLog(@"*********this is location update method of login view controller");
    [locmanager startUpdatingLocation];
}
-(void)awakeFromNib {
    [self update];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    if (wasFound) return; 
    wasFound = YES;

    CLLocationCoordinate2D loc = [newLocation coordinate];

    lat2 = [[NSString stringWithFormat: @"%f", loc.latitude]retain];
    logg2= [[NSString stringWithFormat: @"%f", loc.longitude]retain];
    NSLog(@"latitude is %@",lat2);
    NSLog(@"longitude is  %@",logg2);
}

viewdidload メソッドで実行セレクターを使用して更新メソッドを呼び出します。ここで、lat2 と logg2 は文字列値です。問題が解決できない場合は、Google で現在地を見つける方法を入力してください。説明付きのソース コードの例が多数表示されます。

于 2011-03-22T12:52:34.730 に答える
0

プロジェクトをシミュレーターまたは iPhone で実行していますか? シミュレーターでプロジェクトを実行している場合

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

一度だけ呼び出されます。

デバイスでテストしている場合は、場所が変更されるたびに呼び出す必要があります。

ロケーションマネージャーのプロパティを設定していることを確認してください。

locationManager.delegate=self;

[locationManager startUpdatingLocation];

それが役立つことを願っています...

于 2009-10-30T08:14:48.703 に答える