Ааа, понял! Это работает фантастически, спасибо большое !!
я есть MKMapView с несколькими наложениями. Работает все просто отлично, и невероятно, насколько просто это работает. Однако есть одна вещь, которую я не могу заставить работать. Идея проста: когда пользователь касается области, которая покрыта наложением, должен появиться выноска с некоторой информацией об этом наложении. Оверлеи всеMKPolygon
s, которые следуют протоколу MKOverlay и, следовательно, протоколу MKAnnotation.
Протокол MKOverlay соответствует протоколу MKAnnotation. В результате все оверлейные объекты также являются объектами аннотаций и могут рассматриваться как один или оба в вашем коде. Если вы решите рассматривать объект наложения как оба, вы отвечаете за управление этим объектом в двух местах. Если вы хотите отобразить как представление наложения, так и представление аннотации, вы должны реализовать оба метода mapView: viewForOverlay: и mapView: viewForAnnotation: в вашем делегате приложения. Это также означает, что вы должны добавить и удалить объект как из оверлеев, так и из массивов аннотаций вашей карты.
Это исходит из документов Apple. Я попробовал что-то вроде этого:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
aView.canShowCallout = YES;
}
Но это не похоже на работу. Я пытался использовать распознаватели жестов, но я не знаю, как показать выноску, кроме как с помощьюcanShowCallOut
свойство...