Я работаю над простым GPS-приложением. Я создал пользовательский объект, который расширяет MKAnnotation, который также отлично работает. Я могу поместить его и т. Д., Но если я добавлю этот фрагмент кода [mpm setCoordinate:loc];
в мой код, приложение откроется и зависнет, показывая основную серую сетку (не будет отображаться ни загруженная карта, ни мои кнопки)
Вот мой заголовок:
@interface FirstViewController : UIViewController <MKMapViewDelegate>
{
IBOutlet MKMapView *mapView;
MyPlaceMark *mpm;
}
-(void)locationUpdate:(CLLocation *)location;
-(void)locationError:(NSError *)error;
@end
А вот фрагмент кода, где я пытаюсь обновить вещи:
-(void)locationUpdate:(CLLocation *)location
{
CLLocationCoordinate2D loc = [location coordinate];
[mpm setCoordinate:loc]; // This line messes it up.
[mapView setCenterCoordinate:loc];
if([mapView showsUserLocation] == NO)
[mapView setShowsUserLocation:YES]; // This does not show my position either?
}
Если я прокомментирую эту строку, приложение работает нормально. Мне нужно обновить аннотацию, так как она будет моим маркером для отображения текущего местоположения пользователей. PS: без этой строки он действительно центрирует мое представление - поэтому location
является допустимой / установленной переменной.
Мой viewDidLoad
выглядит так:
- (void)viewDidLoad {
mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
//mapView.showsUserLocation = YES;
[mapView setShowsUserLocation:YES];
mapView.mapType = MKMapTypeStandard;
mapView.delegate = self;
CLLocationCoordinate2D location;
MKCoordinateRegion region;
location.latitude = -33.8;
location.longitude = 18.6;
MKCoordinateSpan span;
span.latitudeDelta = 0.01;
span.longitudeDelta = 0.01;
region.span = span;
region.center = location;
[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
mpm = [[MyPlaceMark alloc] initWithCoordinate:location]; // Creating mpm
[mapView addAnnotation:mpm]; // Adding mpm
[self.view addSubview:mapView];
[super viewDidLoad];
}
Должен ли я повторно добавить mpm
после того, как изменил его местоположение? Или он просто перескочит на новое место на карте?
Итак, напомним вопрос: как я могу обновить пользовательское местоположение MKAnnotation в моем просмотре карты?
Спасибо за ваше время!
РЕДАКТИРОВАТЬ: Я думаю, что основной причиной сбоя является тот факт, что я не создаю метод / функцию setCoordinate
в моем пользовательском MKAnnotation. Как бы я переопределил это, но сохранить его таким же, как оригинал?
Ошибка в лог-консоли:
2011-06-09 14:42:40.377 AeroNav[3706:707] -[MyPlaceMark setCoordinate:]: unrecognized selector sent to instance 0x19e0e0
2011-06-09 14:42:40.493 AeroNav[3706:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyPlaceMark setCoordinate:]: unrecognized selector sent to instance 0x19e0e0'
...
terminate called after throwing an instance of 'NSException'