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