2010-11-27 2 views
1

Я пытаюсь захватить местоположение текущего местоположения iPhone и я не уверен, что я делаю неправильно, ничего журналы или появляется ....Схватив GPS Location iPhone SDK

код здесь:

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    int degrees = newLocation.coordinate.latitude; 
    double decimal = fabs(newLocation.coordinate.latitude - degrees); 
    int minutes = decimal * 60; 
    double seconds = decimal * 3600 - minutes * 60; 
    NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
      degrees, minutes, seconds]; 
    statusText.text = lat; 
    degrees = newLocation.coordinate.longitude; 
    decimal = fabs(newLocation.coordinate.longitude - degrees); 
    minutes = decimal * 60; 
    seconds = decimal * 3600 - minutes * 60; 
    NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
      degrees, minutes, seconds]; 
    statusText.text = longt; 


} 

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address 
{ 
    double latitude = 0, longitude = 0; 
    NSString *esc_addr = [statusText.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr]; 
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL]; 
    if (result) { 
     NSScanner *scanner = [NSScanner scannerWithString:result]; 
     if ([scanner scanUpToString:@"\"lat\":" intoString:nil] && [scanner scanString:@"\"lat\":" intoString:nil]) { 
      [scanner scanDouble:&latitude]; 
      if ([scanner scanUpToString:@"\"lng\":" intoString:nil] && [scanner scanString:@"\"lng\":" intoString:nil]) { 
       [scanner scanDouble:&longitude]; 
      } 
     } 
    } 
    CLLocationCoordinate2D center; 
    center.latitude = latitude; 
    center.longitude = longitude; 
    return center; 
} 



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m 
    [locationManager startUpdatingLocation]; 

Для того, чтобы захватить длинный и лат, преобразовать его с помощью API карт Google и вызвать диспетчер locationManager в первую очередь при запуске приложения.

координаты появляются просто преобразовать их в фактическое местоположение не бывает

ответ

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

Этот делегат не будет работать на некоторых IOS SDK,. Вы проверили его на устройстве и проверили.

+0

, что делегат прекрасно работает, он захватывает координаты с помощью симулятора, прекрасно работающего, но для того, чтобы скрыть его в адрес, нужно ли тестировать на моем устройстве все еще для того, чтобы другой делегат работал? – Anthony 2010-11-27 16:17:22

0

В MapKit есть класс, называемый MKReverseGeocoder. Вы инициализируете его координатой местоположения, которую вы получили, и запустите его. Он вернет MKPlacemark из своего делегата. Используйте MKPlacemark для доступа к таким вещам, как адрес, город, штат, почтовый индекс, страна и т. Д.

0

Вы также можете получить бесплатную базу данных zipcode для США и некоторых других стран (включая широту/долготу), а затем проверить ближайший. Тогда нет никакой зависимости от API.