MKCoordinateRegionMakeWithDistance отображает неправильные координаты

Я пытаюсь установить примерно 10-мильный диапазон вокруг текущего местоположения пользователя, когда загружается мой mapView. Вот мой код цели C в viewDidLoad:

self.mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate = self;
self.mapView.showsUserLocation = YES;
[self.view addSubview:self.mapView];


//Set initial scope of map
CLLocationDistance mapWidith = 16000;
CLLocationDistance mapHeight = 16000;
CLLocationCoordinate2D userLocation = self.mapView.userLocation.coordinate;

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation, mapHeight , mapWidith);
[self.mapView setRegion: region
               animated:false];

Когда я запускаю, он начинается с правильного масштабирования (я думаю), но случайным образом центрируется где-то в Атлантическом океане. Не уверен, правильно ли я обращаюсь к координате userLocation, но это кажется правильным. Я довольно новичок в MKMapView, поэтому немного борюсь.


person ja.    schedule 21.08.2014    source источник


Ответы (1)


Свойство userLocation в mapView еще не заполнено. Вы должны реализовать метод mapView:didUpdateUserLocation:, и после этого вы сможете надежно использовать это свойство (или использовать отправленное вам местоположение).

person Acey    schedule 21.08.2014
comment
+1 Согласен, хотя я мог бы предложить сделать это только один раз (есть какое-то логическое значение, которое отслеживает это). Если вы хотите, чтобы он следовал за пользователем, не полагайтесь на его повторный вызов в будущем, а вместо этого установите userTrackingMode из MKMapView на MKUserTrackingModeFollow или MKUserTrackingModeFollowWithDirection. Повторное ручное обновление region вручную может привести к раздражающему UX. - person Rob; 22.08.2014