Используя код из следующего урока, http://www.zenbrains.com/blog/en/2010/05/detectar-cuando-se-selecciona-una-anotacion-mkannotation-en-mapa-mkmapview/, Я смог добавить наблюдателя в каждую MKAnnotation и получить уведомление о выбранных / отмененных состояниях.
Я пытаюсь добавить UIView поверх аннотации выбора для отображения соответствующей информации о местоположении.Эта информация не может быть передана в двух разрешенных строках (заголовок / подзаголовок) для выноски.
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
Annotation *a = (Annotation *)object;
// Alternatively attempted using:
//Annotation *a = (Annotation *)[mapView.selectedAnnotations objectAtIndex:0];
NSString *action = (NSString *)context;
if ([action isEqualToString:ANNOTATION_SELECTED_DESELECTED]) {
BOOL annotationSelected = [[change valueForKey:@"new"] boolValue];
if (annotationSelected) {
// Actions when annotation selected
CGPoint origin = a.frame.origin;
NSLog(@"origin (%f, %f) ", origin.x, origin.y);
// Test
UIView *v = [[UIView alloc] init];
[v setBackgroundColor:[UIColor orangeColor]];
[v setFrame:CGRectMake(origin.x, origin.y , 300, 300)];
[self.view addSubview:v];
[v release];
}else {
// Accions when annotation deselected
}
}
}
Результаты с использованием Annotation *a = (Annotation *)object
origin (154373.000000, 197135.000000)
origin (154394.000000, 197152.000000)
origin (154445.000000, 197011.000000)
Результаты с использованием Annotation *a = (Annotation *)[mapView.selectedAnnotations objectAtIndex:0];
origin (0.000000, 0.000000)
origin (0.000000, 0.000000)
origin (0.000000, 0.000000)
Числа большие.Они не относятся к виду (1024 x 768).Я считаю, что они относятся ко всей карте.Как я смогу определить точные координаты относительно всего вида, чтобы правильно расположить мой вид?
Примечание:
Только что обнаружил эти два метода, которыеможет выполнить то же самое, что и код выше, в гораздо более простой реализации.
Выбор видов аннотаций
– mapView:didSelectAnnotationView:
– mapView:didDeselectAnnotationView:
http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html