Это мой первый вопрос на этом сайте.
У меня серьезная проблема .... Я объясню это с самого начала ...
в моем приложении мне нужно получитьтекущее местоположение пользователя, когда пользователь нажимает на кнопку в приложении ... но проблема заключается в том, что, если нажать на кнопку, она не обновляется до текущего местоположения и не получает предыдущее местоположение.Но когда я сбрасываю предупреждения о местоположении в приложении 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;
}
Затем в моем другом контроллере представления я поместил 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];
}
я поставил метку своему контроллеру представления и отправился в разные места, чтобы взять широты и долготы ... но всегда получалта же широта и долгота ... но когда я сбрасываю предупреждения о местоположении и снова запускаю приложение, оно принимает правильную широту и долготу ... поэтому, если мне нужно всегда брать текущее местоположение, я должен сбросить его.Но мне нужно получать текущее местоположение каждый раз, когда я нажимаю кнопку поиска ...
Может ли кто-нибудь сказать, что не так в этом коде, и любой может мне помочь ....
А также очень, очень сожалею о моем плохом английском ...:)