これは、このサイトでの最初の質問です。
私はこの深刻な問題を抱えています....これを最初から説明します...
私のアプリでは、ユーザーがアプリケーションのボタンをクリックしたときにユーザーの現在の場所を取得する必要があります..しかし問題は、ボタンをクリックすると現在の場所に更新されず、以前の場所を取得することです。しかし、iPhoneアプリで場所の警告をリセットすると、正しい場所が取得されます。
このアプリケーションがユーザーの現在の場所を取得するために行ったコード手順は次のとおりです...
まずはアプリにインポートして……
次に、アプリケーションを介してアクセスする必要があるため、グローバルファイルを使用してアプリケーションのデータを保持しています。
だから私がgloble.mと.hファイルでやったことは...
CLLocationManager* locationManager;
@synthesize locationManager
+ (Globals*)sharedGlobals {
@synchronized(self) {
if(_sharedGlobals == nil) {
_sharedGlobals = [[super allocWithZone:NULL] init];
_sharedGlobals.locationManager = [[CLLocationManager alloc]init];
[_sharedGlobals.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
}
}
return _sharedGlobals;
}
次に、他のView ControllerでCLLocationManagerDelegateを.mファイルに入れました
-(IBAction) didTapSearchbtn{
if (![CLLocationManager locationServicesEnabled]) {
}else {
[[Globals sharedGlobals].geoLocations removeAllObjects];
search.text = nil;
[Globals sharedGlobals].fromTextField = NO;
[[Globals sharedGlobals].locationManager setDelegate:self];
[[Globals sharedGlobals].locationManager startUpdatingLocation];
}
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if (newLocation.horizontalAccuracy < 0) return;
[[Globals sharedGlobals].locationManager setDelegate:nil];
[[Globals sharedGlobals].locationManager stopUpdatingLocation];
[[Globals sharedGlobals].geoLocations setObject:[[NSString alloc] initWithFormat:@"%f", newLocation.coordinate.latitude] forKey:@"geolat"];
[[Globals sharedGlobals].geoLocations setObject:[[NSString alloc] initWithFormat:@"%f", newLocation.coordinate.longitude] forKey:@"geolong"];
[self retriveDataFromInternet];
[[Globals sharedGlobals].locationManager release];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
//GPS error
[[Globals sharedGlobals].locationManager setDelegate:nil];
[[Globals sharedGlobals].locationManager stopUpdatingLocation];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"YumTable!", nil) message:NSLocalizedString(@"Enable Your GPS settings to get your current location", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Ok", nil) otherButtonTitles:nil];
[alert show];
[alert release];
[[Globals sharedGlobals].locationManager release];
}
ビューコントローラーにラベルを付けて、緯度と経度を取得するために別の場所に移動しました..しかし、常に同じ緯度と経度を取得しています...しかし、場所の警告をリセットしてアプリを再度実行すると、正しい緯度と経度が取得されました。 ..そのため、常に現在の場所を取得する必要がある場合は、リセットする必要があります。しかし、検索ボタンをクリックするたびに現在地を取得する必要があります...
誰かがこのコードで何が間違っているかを言うことができますか、そして誰かが私を助けることができます....
また、私の下手な英語については非常に申し訳ありません... :)