Получить текущее местоположение пользователя на MKMapView

Я пытаюсь получить последнее текущее местоположение пользователя на didUpdateToLocation:newLocation:fromLocation:oldLocation: и сохранить его в моем ivar CLLocation *userCurrentLocation

Я получаю эту ошибку, когда пытаюсь прочитать userCurrentLocation

 -[NSCFNumber coordinate]: unrecognized selector sent to instance 0x586b220 - (void) locationManager:(CLLocationManager *) manager didUpdateToLocation:(CLLocation *) newLocation fromLocation:(CLLocation *) oldLocation { fromLocation:(CLLocation *) oldLocation { if (oldLocation == nil) { // first time loading? SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithCoordinate:CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude)]; [geocodeRequest setDelegate:self]; [geocodeRequest startAsynchronous]; // reverse geocoding to get annotation coordinates to be placed. [geocodeRequest release]; isCurrentLocation = YES; //flag that next annotation placed is current location } userCurrentLocation = newLocation; NSLog(@"didUpdateToLocation - Lat:%f Long:%f", userCurrentLocation.coordinate.latitude, userCurrentLocation.coordinate.longitude); // verified that userCurrentLocation latitude is correct at this point. } 

Кнопка панели инструментов для отображения текущего местоположения пользователя

 -(IBAction) showLocation:(id) sender { NSLog(@"Lat:%f Long:%f", userCurrentLocation.coordinate.latitude, userCurrentLocation.coordinate.longitude); // crashes upon calling this statement. Why? NSLog(@"Show Location Called"); SVGeocoder *geocodeRequest = [[SVGeocoder alloc] initWithCoordinate:CLLocationCoordinate2DMake(userCurrentLocation.coordinate.latitude, userCurrentLocation.coordinate.longitude)]; [geocodeRequest setDelegate:self]; [geocodeRequest startAsynchronous]; [geocodeRequest release]; } 

Я установил свойство и синтезировал userCurrentLocation как таковой:

MapViewController.h

 @interface MapViewController : UIViewController <CLLocationManagerDelegate, MKMapViewDelegate> { CLLocation *userCurrentLocation; } @property (nonatomic, retain) CLLocation *userCurrentLocation; @end 

MapViewController.m

 @synthesize userCurrentLocation; /* EDITED */ - (void)viewDidLoad { locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.distanceFilter = kCLDistanceFilterNone; locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; [locationManager startUpdatingLocation]; userCurrentLocation = [[CLLocation alloc] init]; } 

Ваш userCurrentLocation автореализован после того, как - (void) locationManager:(CLLocationManager *) manager didUpdateToLocation:(CLLocation *) newLocation fromLocation:(CLLocation *) oldLocation метод - (void) locationManager:(CLLocationManager *) manager didUpdateToLocation:(CLLocation *) newLocation fromLocation:(CLLocation *) oldLocation завершен.

Попробуйте использовать self.userCurrentLocation = newLocation; вместо.

 - (void)viewDidLoad { mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,46,320,370)]; [mapView setDelegate:self]; [mapView setShowsUserLocation:TRUE]; [self.view addSubview:mapView]; [mapView setMapType:MKMapTypeStandard]; locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; if(locationManager.locationServicesEnabled) { [locationManager startUpdatingLocation]; } } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { LatNLon = newLocation.coordinate; NSLog(@"%f %f",LatNLon.latitude,LatNLon.longitude); MKReverseGeocoder *geocoder = [[MKReverseGeocoder alloc] initWithCoordinate:LatNLon]; [geocoder setDelegate:self]; [geocoder start]; isVisit=0; [locationManager stopUpdatingLocation]; } 

Это код для UIPageControl в UIScrollView, здесь мы используем делегат UIScrollView

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { int pageIndex=scrollView.contentOffset.x / scrollView.frame.size.width; self.pageCntrl.currentPage=pageIndex; } 
  - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *currentUserLocation = [locations lastObject]; NSLog(@"lat%f - lon%f", currentUserLocation.coordinate.latitude, currentUserLocation.coordinate.longitude); CLLocationCoordinate2D zoomLocation; zoomLocation.latitude = currentUserLocation.coordinate.latitude; zoomLocation.longitude= currentUserLocation.coordinate.longitude; MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.2*METERS_PER_MILE, 0.2*METERS_PER_MILE); [mapView setRegion:viewRegion animated:YES]; [locationManager stopUpdatingLocation]; 

}

  • Установка уровня масштабирования MKMapView в локальность
  • Пропустить пользовательское свойство через MKAnnotation CalloutAccessoryControlTapped
  • Карта Аннотации Поиск
  • Отображение информации о контакте по умолчанию
  • Узнайте, какой тип области вы находитесь в MKMapView
  • UIMapView: аннотация местоположения пользователя белого цвета не пульсирует синим цветом только в iPad
  • Как настроить регион, чтобы он соответствовал выноску пользовательской аннотации, который только что появился?
  • Как подсчитать количество и какие аннотации, отображаемые в MapView, при масштабировании?
  • MapView: используйте MKUserTrackingBarButtonItem для переключения состояния отслеживания карт
  • Какой dataType вернет значение (37.961498), как есть? Двойной не работал
  • iOS MapKit не загружает плитки с максимальным увеличением на MKMapTypeHybrid
  • Interesting Posts

    Сохранять / извлекать значения из Objective-C ++ в Objective-C

    Изменить шрифт заголовка TabBarItem для жирного шрифта в Swift для iOS

    Firebase store: попытка сохранить локальный файл дает ошибку

    Objective-C HealthKit определяет, есть ли источник от Apple iPhone или Apple Watch

    Только для iPhone, iOS 7+, мы можем включить только изображения с разрешением 3x?

    Поддержание сеанса после закрытия UIWebView

    Обнаружение касания внутри UITableViewCell subview

    Масштабирование фонового изображения без масштабирования оверлея

    Объединение обработчиков завершения сборки вместе с тем, что метод завершается после выполнения нескольких закрытий

    Как создать округленный UIButton с радиусом только левого и нижнего левого угла

    Ошибка очереди периферийной передачи

    Подтверждение покупки при покупке приложения

    Брелок не сохраняет данные после того, как приложение получает обновление от iTunes

    Почему в браузерах веб-браузера iOS не используются поля datetime со значениями ISO 8601?

    Что случилось с областью ударов / перехвата касания UIButton?

    Давайте будем гением компьютера.