Ваше 'местоположение' - это менеджер местоположений, когда он выяснит, где вы находитесь, он отправит своего делегата
locationManager:didUpdateToLocation:fromLocation:
, которого у вас, похоже, нет, поэтому все эти настройки вывыполнение «местоположения» напрасно (поскольку код, который вы нам дали, может быть полезно в другом месте), и указание прекратить отслеживание пользователя бесполезно.
"(void) mapView:(MKMapView *) mapView didUpdateUserLocation: (MKUserLocation *) userLocation {MKCoordinateRegion mapRegion; "это то, что petrolMap отправляет своему делегату.Где-то вы должны установить petrolMap для отслеживания пользователя, это можно сделать в .xib.
В любом случае, чтобы остановить отправку сообщений petrolMap, убедитесь, что вы запустили
[petrolMap setUserTrackingMode:MKUserTrackingModeNone animated:NO];
Некоторые дополнительные примечания:
Внутри didUpdateUserLocationвам не нужно обращаться к petrolMap напрямую, потому что для параметра mapView задано, когда MKMapView отправлял сообщение.
Также в didUpdateUserLocation вы используете userLocation petrolMap вместо параметра userLocation и даже строите свой регион.Весь код этой функции может быть одной строкой
[mapView setRegion:mapRegion animated:NO];
«Анимированные» контролируют, как осуществляется изменение в регионе.Да означает, что он будет скользить между локациями, Нет, значит, он будет мгновенно переходить от одного к другому, в любом случае карта переместится в новый регион.
Ваш метод viewDidLoad может быть сокращен додве строки, подобные следующим:
[super viewDidLoad];
self.petrolMap.delegate = self;
Приложение:
locationManager:didUpdateToLocation:fromLocation
устарело в iOS6.