Я обновил отлично работающее приложение 6.1 к Xcode 5/ios 7 , которое использует MKMapKit для отображения некоторых контактов на карте.ios 7 pin viewforannotation не отображается
Теперь аннотации не отображаются. Ive убедился, что мой делегат mapview является правильным и viewForAnnotation вызывается. Im также уверен, что его название и субтитры установлены, но теперь штырь просто не показывает дисплей. У кого-нибудь есть идеи, что искать дальше?
Когда он работает, я вижу мой широта/долгота, контактный заголовок и подзаголовок заполнены
Heres мой код:.
- (MKAnnotationView *) mapView:(MKMapView *) theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
return nil;
}
[self.mapView removeAnnotations:self.mapView.annotations];
MKPointAnnotation *pt = (MKPointAnnotation *)annotation;
NSString *PINNAME = pt.title;
CLLocationDegrees lat = pt.coordinate.latitude;
CLLocationDegrees lon = pt.coordinate.longitude;
[Log log:TINFO :@"lat/lon %f - %f", lat, lon];
[Log log:TINFO :@"pin title userid = %@", pt.title];
[Log log:TINFO :@"subtitle: %@", pt.subtitle];
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier: PINNAME];
if(pinView == nil)
{
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:PINNAME];
pinView.pinColor = MKPinAnnotationColorGreen;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
Спасибо за указатели Роба. Хорошая вещь. Я думаю, что Im неправильно понимает уникальные идентификаторы в этом случае. Если вы используете, давайте скажем «thePin» в качестве идентификатора, и вы ставите многие из них, как «viewForAnnotation» знает, какой вывод для удаления? Я тоже так хорошо знаком с настольной работой, так что теперь мне любопытно. – Tim
@Tim Это отличает любые булавки, которые прокручиваются вне поля зрения. Это аналогично идентификатору ячейки для 'UITableViewCell'. Один идентификатор для всех похожих похожих аннотаций. – Rob
Кажется, у меня были removeAnnotations в плохом месте, которое не кусало меня до сих пор. Я также обнаружил, что когда я вызываю [self.mapView removeAnnotations: self.mapView.annotations]; а затем добавить новые аннотации, оба набора аннотаций все еще находятся на карте. Очень странно. – Tim