iOS: получить координаты текущего местоположения без использования MKMapView

Я хотел бы иметь возможность получить текущее местоположение пользователя, фактически не имея представления карты на моем контроллере представления.

На данный момент у меня есть представление карты и я получаю местоположение пользователя, вызывая один из методов делегата....

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    userlatitude = userLocation.location.coordinate.latitude;
    userlongitude = userLocation.location.coordinate.longitude;
}

person user3626407    schedule 17.07.2014    source источник
comment
CLLocationManager, может быть?   -  person holex    schedule 17.07.2014
comment
tech.pro/tutorial/971/   -  person Sr.Richie    schedule 17.07.2014
comment
Я голосую за этот вопрос, потому что это хороший вопрос новичка.   -  person Mirko Brunner    schedule 17.07.2014
comment
@MirkoBrunner, за исключением того, что поиск в документации (такая вещь есть) или SO или Google предоставили бы ответ за 5 минут, а не снова публиковали вопрос, который задавали и на который отвечали сотни / тысячи раз. Вопрос не показывает никаких исследовательских усилий.   -  person    schedule 17.07.2014
comment
проверить это stackoverflow.com/questions/4152003/   -  person Mohit    schedule 17.07.2014


Ответы (2)


CLLocationManager — это класс, который отвечает за сохранение значений местоположения пользователя. CLLocationManagerDelegate — это еще один класс, который получает данные о местоположении в режиме реального времени от GPS iDevice и уведомляет экземпляр CLLocationManager об изменении местоположения и различных других событиях с помощью методов делегата. Было бы очень полезно, если бы вы прочитали соответствующую документацию.

Вы должны реализовать протокол CLLocationManagerDelegate внутри своего класса. У вас также должен быть экземпляр CLLocationManager в вашем классе, который должен отслеживать местоположение.

В вашем проекте вы также должны добавить структуру Core Location в разделе Link Binaries.

Самый простой способ:

Ваш файл .h:

@interface MyViewController : UIViewController<CLLocationManagerDelegate>
{
    CLLocation * currentLocation;
    CLLocationManager * locationManager;
}
@end

Ваш .m-файл:

- (void) viewDidLoad
{
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    [locationManager startUpdatingLocation];
}

//remember to stop before you are done, either here or in view disappearance.
- (void) dealloc
{        
    [locationManager stopUpdatingLocation];       
}

- (void)locationManager:(CLLocationManager *)manager 
     didUpdateLocations:(NSArray *)locations
{
    currentLocation = (CLLocation *)[locations lastObject];
}
person Nirav Bhatt    schedule 17.07.2014

Просто используйте CCLocationManager вместо метода MKMapKit::userLocaiton. Взгляните на пример проекта «LocateMe» на сайте developer.apple.com.

person Mirko Brunner    schedule 17.07.2014