Подтвердить что ты не робот

MKMapView userLocation показывает 0,0 в симуляторе?

У меня есть окно mapView на моем представлении (MKMapViewDelegate) с включенным "Показывает местоположение пользователя".

В viewdidload для этого контроллера у меня есть

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;
NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude); 
mapView.delegate=self;

Симулятор показывает правильное местоположение пользователя на карте (я использую Custom location в IOS Simulator)

Но NSLog показывает 0 и 0 для широты и долготы.

Не могу ли я получить пользовательскую долготу и широту в симуляторе?

ОБНОВЛЕНИЕ С ОТВЕТОМ:

Необходимо реализовать

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    self.mapView.centerCoordinate = userLocation.location.coordinate;
} 
4b9b3361

Ответ 1

Службы местоположения не являются мгновенными. Ваш код находится в viewDidLoad, поэтому у него еще не было возможности получить исправление на вашей позиции. Вы должны установить свойство delegate для отображения карты объекту, реализующему протокол MKMapViewDelegate.

Ответ 2

Мне нужно было установить местоположение в симуляторе через Debug > Location. Он был установлен в None, который меня бросил (0 °, 0 °) и никогда не обновлялся; вы можете установить пользовательское местоположение или выбрать из других сценариев симулированного местоположения, которые автоматически меняют местоположение пользователя.

Ответ 3

MKMapView *mapview=[[MKMapView alloc]initWithFrame:CGRectMake(0,0,300, 364)];
mapview.delegate=self;
mapview.showsUserLocation=YES;

который затем назовет делегата mapkit, делегат mak kit попытается распечатать координаты. NSLog (@ "user latitude =% f", userLocation.location.coordinate.latitude); NSLog (@ "useritude =% f", userLocation.location.coordinate.longitude);