Пара широта / долгота 0/0 находится на экваторе к югу от Гринвича, Англия.Это место находится в Гвинейском заливе у западного побережья Африки.Если именно там находится ваш пин-код, значит, ваш mapView.userLocation не устанавливается.
Возможно, ваш код выполняется до того, как MKMapKit сможет найти его местоположение.Что вы действительно хотите сделать, так это чтобы ваш viewController принял протокол MKMapKitDelegate
, установите для свойства .delegate
представления карты значение self
, а затем реализуйте метод:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
Этот метод будетвызывается, когда набор карт находит пользователя, и вы можете использовать значение userLocation, которое вы передали ему, чтобы установить регион на карте.До тех пор, пока это не будет вызвано в первый раз, MapView все еще работает над определением местоположения, и ваш запрос о его местонахождении является преждевременным.
Кроме того, ваш regionThatFits там в конце не используется.Этот метод не изменяет размер области на месте, он на самом деле возвращает измененную область, которую вы можете использовать, как вам угодно.Таким образом, вы хотите установить область отображения карты на то, что возвращает этот метод.Как это:
[mapView setRegion:[mapView regionThatFits:region] animated:TRUE];