1
를 기다리는 나는 그가에있어 국가에 따라 사용자를 찾은 다음 몇 가지 숫자를 변경이 방법을 가지고 :에서 iOS 5, 위치
방법은 '있는 viewDidLoad'방법하지만 난생 처음으로 전화를받을
- (void) localizing {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
DbOperations *dbOp = [[DbOperations alloc] init];
geoCoder = [[CLGeocoder alloc] init];
[self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler:
^(NSArray *placemarks, NSError *error) {
//Get nearby address
CLPlacemark *placemark = [placemarks objectAtIndex:0];
//String to hold address
countryCode = [placemark.addressDictionary valueForKey:@"CountryCode"];
country = [placemark.addressDictionary valueForKey:@"Country"];
NSString *s2 = NSLocalizedString(@"You're currently in %@", nil);
lblLocation.text = [NSString stringWithFormat:s2, self.country];
[dbOp UsefulNumbers:self.countryCode];
NSUserDefaults *loc = [NSUserDefaults standardUserDefaults];
[loc setObject:country forKey:@"Country"];
[loc setObject:countryCode forKey:@"CountryCode"];
[loc synchronize];
}];
[locationManager stopUpdatingLocation];
NSUserDefaults *loc = [NSUserDefaults standardUserDefaults];
if ([loc objectForKey:@"Country"] == NULL) {
btnUno.enabled = NO;
btnDue.enabled = NO;
btnTre.enabled = NO;
lblLocation.text = NSLocalizedString(@"Unable to locate you", nil);
}
}
내가 찾을 수없는 앱을 실행합니다. 지도를 열면 수정 사항을 얻은 다음 내 앱을 열면 모든 것이 잘됩니다. 어쩌면 내가 GPS 수정 프로그램을 얻기 위해 앱에 충분한 시간을주지 못하거나 어쩌면 그냥 잘못하고 있다고 생각했습니다.
제안 사항?
편집 : 코드가 수정되었지만 아직 작동하지 않습니다.
- (id) init {
self = [super init];
if (self != nil) {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
}
return self;
}
- (void) viewDidLoad {
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
[locationManager startUpdatingLocation];
[super viewDidLoad];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
DbOperations *dbOp = [[DbOperations alloc] init];
geoCoder = [[CLGeocoder alloc] init];
[self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler:
^(NSArray *placemarks, NSError *error) {
//Get nearby address
CLPlacemark *placemark = [placemarks objectAtIndex:0];
//String to hold address
countryCode = [placemark.addressDictionary valueForKey:@"CountryCode"];
country = [placemark.addressDictionary valueForKey:@"Country"];
NSString *s2 = NSLocalizedString(@"You're currently in %@", nil);
lblLocation.text = [NSString stringWithFormat:s2, self.country];
[dbOp UsefulNumbers:self.countryCode];
NSUserDefaults *loc = [NSUserDefaults standardUserDefaults];
[loc setObject:country forKey:@"Country"];
[loc setObject:countryCode forKey:@"CountryCode"];
[loc synchronize];
NSLog(@"Country: %@", country);
}];
NSUserDefaults *loc = [NSUserDefaults standardUserDefaults];
if ([loc objectForKey:@"Country"] == NULL) {
btnUno.enabled = NO;
btnDue.enabled = NO;
btnTre.enabled = NO;
lblLocation.text = NSLocalizedString(@"unable to locate", nil);
}
}
메소드 locationManager : didUpdateToLocation : fromLocation이 호출되지 않습니다.
자, CLLocationManager 인스턴스를 할당하고 대리자를 내 init 메서드에서 self로 설정했습니다. 그런 다음 viewDidLoad에서 위치를 업데이트하고 -locationManager에서 시작합니다. didUpdateToLocation : fromLocation 메서드 모든 역 지오 코딩 코드를 넣었습니다. 시뮬레이터에서 응용 프로그램을 시도하고 didUpdateToLocation ... 메서드가 전혀 호출되지 않습니다. – Aleph72
위치 업데이트를 위해 시뮬레이터를 사용하는지 잘 모르겠습니다. 위치에 대한 GPX 파일을 지정하는 방법이 있지만 장치에서 더 많은 행운을 테스트 할 수 있습니다. 자전거 타기 또는 자동차 여행 시뮬레이션을위한 시뮬레이터 옵션을 살펴보십시오. – CaptainRedmuff
시뮬레이터 GPS를 'Freeway drive'로 설정하려고했지만 여전히 작동하지 않습니다. 어쨌든,이 응용 프로그램을 사용하는 동안 사용자가 이동하지 않습니다. 나는 사용자가 DB (경찰, 구급차, 소방서 등)에서 어떤 번호를 얻는 국가인지 알 필요가 있습니다. – Aleph72