2015-03-12 1 views
4

Я стараюсь получить координаты своего местоположения.Как получить отладку координат GPS с помощью симулятора в iOS?

Я stackoverflowed так, что я закодирован ниже:

locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate=self; 
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 
[locationManager startUpdatingLocation]; 

CLLocation *location = [locationManager location]; 
CLLocationCoordinate2D coordinate = [location coordinate]; 

self.longitude=coordinate.longitude; 
self.latitude=coordinate.latitude; 

NSLog(@"dLongitude : %f",self.longitude); 
NSLog(@"dLatitude : %f", self.latitude); 

Но я всегда получаю 0 все время. Неверный код? или Я не установил свой симулятор для определения местоположения GPS?

Я не понимаю, почему у меня возникают проблемы с получением координат.

ответ

6

Во-первых, вот несколько вопросов, в вашем коде:

  1. Вы должны сохранить locationManager где-то, чтобы держать это работает
  2. Реализовать -locationManager:didUpdateLocations: и -locationManager:didFailWithError: методы делегата
  3. Кроме того, если вы находитесь в прошивкой 8, вы должны добавить [locationMamager requestWhenInUseAuthorization]; или [locationMamager requestAlwaysAuthorization];
  4. Укажите NSLocationWhenInUseUsageDescription или NSLocationAlwaysUsageDescription соответственно в вашем Info.plist

Вы можете моделировать местоположение с помощью Xcode, обратите внимание на информации от компании Apple: https://developer.apple.com/library/ios/recipes/xcode_help-debugger/articles/simulating_locations.html

+0

После того, как вы сделали то, что сказал вам Азат, вы можете имитировать свое текущее местоположение, выбрав «Отладка-> Местоположение-> Пользовательская локация ... когда приложение работает. – LoVo

+1

LoVo, вы имеете в виду, отлаживать -> имитировать местоположение -> выбрать достопримечательности? – LKM

+1

Азат, что значит «Номер 1»? Я объявлял 'CLLocationManager * locationManager' и в файле интерфейса controller.h. Это то, что вы имеете в виду? – LKM

1

[CLLocationManager location] возвратит вас совсем недавно найденное местоположение пользователя, но в документации сказано:

Значение это свойство равно нулю, если данные местоположения не были получены.

В начале вашего местоположения до сих пор неизвестно. Вы должны использовать методы делегатов для реагирования, когда CLLocationManager узнает ваше местоположение. Внесите этот метод:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    CLLocation *location = [locations lastObject]; 
    //User your location... 
} 

Взгляните на documentation.

+0

Благодарим вас за искренность. Raspu, однако, метод didUpdateLocations не вызывается. Я добавляю ключ NSLocationWhenInUseUsage в info.plist – LKM

0
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{ 
    BOOL shouldIAllow = FALSE; 
    NSString* locationStatus = @""; 

    switch (status) { 
     case kCLAuthorizationStatusRestricted: 
      locationStatus = @"Restricted Access to location"; 
      break; 
     case kCLAuthorizationStatusDenied: 
      locationStatus = @"User denied access to location"; 
      break; 
     case kCLAuthorizationStatusNotDetermined: 
      locationStatus = @"Status not determined"; 
     default: 
      locationStatus = @"Allowed to location Access"; 
      shouldIAllow = TRUE; 
      break; 
    } 

    if (shouldIAllow) { 
     NSLog(@"Location to Allowed"); 
     // Start location services 
     [_locationManager startUpdatingLocation]; 
    } else { 
     NSLog(@"Denied access: \(locationStatus)"); 
    } 
} 
Смежные вопросы