Итак, чтобы использовать уникальный CLLocateManager, вы можете создать класс, который будет делегатом для всех ваших карт, поэтому вместо того, чтобы делать:
self.locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
Сделайте что-нибудь вроде:
self.locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = mySharedDelegate;
Где mySharedDelegate - это ваш класс со всеми методами делегата CLLocationManager.
Вы можете получить действительные координаты для userLocation только после первого вызова
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
Когда этот метод вызывается, это происходит потому, что GPS обнаружил новое местоположение, и поэтому синяя точка будет перемещена туда, а userLocation будет иметь новые координаты.
Используйте следующий метод в делегате CLLocationManager для регистрации текущего местоположения при его обнаружении:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"---------- locationManager didUpdateToLocation");
location=newLocation.coordinate;
NSLog(@"Location after calibration, user location (%f, %f)", _mapView.userLocation.coordinate.latitude, _mapView.userLocation.coordinate.longitude);
}
У вас есть идея?
Ура,
VFN
person
vfn
schedule
14.01.2010