MKMapView с пользовательскими выводами возвращает к красным стандартным выводам при перезагрузке
У меня есть MKMapView, к которому я добавляю булавки. Они корректно загружаются с соответствующей графикой, но если я увеличиваю и уменьшаю масштаб, они теряют свою графику и превращаются в стандартный красный вывод, единственной настройкой которого является имя контакта (даже мой индикатор раскрытия исчезает).
До сих пор, чтобы попытаться исправить это, я попробовал: пробовал png, проверил на более быстром устройстве, изменил все с MKPinAnnotation на MKAnnotation, возвращаясь к обычному MKAnnotation вместо моего пользовательского CBAnnotation, Различные примеры кодов для загрузки пользовательских пинов, Пониженное качество карты наложение в случае, если это была проблема с загрузкой, но все еще проблема.
- (void)addPins {
mapPinsArray = [[NSMutableArray alloc] init];
for (MapPoint *mappoint in mapPointsArray) {
CBAnnotation *annotation = [[CBAnnotation alloc] init];
annotation.coordinate = CLLocationCoordinate2DMake(mappoint.loclat, mappoint.loclong);
annotation.title = mappoint.stopAreaName;
annotation.mapPoint = mappoint;
[mapPinsArray addObject:annotation];
[self.myMapView addAnnotation:annotation];
}
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(CBAnnotation *)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]]) {
//do nothing
return nil;
} else {
MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"trailPoint"];
annotationView.canShowCallout = YES;
ButtonWithData *accessoryViewButton = [[ButtonWithData alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[accessoryViewButton setBackgroundImage:[UIImage imageNamed:@"right_arrow"] forState:UIControlStateNormal];
accessoryViewButton.buttonData = annotation.mapPoint;
[accessoryViewButton addTarget:self action:@selector(disclosureButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
annotationView.rightCalloutAccessoryView = accessoryViewButton;
if (![[NSUserDefaults standardUserDefaults] boolForKey:annotation.mapPoint.stopAnimalName]) {
annotationView.image = [annotation.mapPoint lockedPinImage];
} else {
annotationView.image = [annotation.mapPoint unlockedPinImage];
}
return annotationView;
}
}
1 ответ
Исправлена моя собственная проблема. Я вложил MKMapView в GenericMapView так, чтобы мой код был чище (удалял showUserLocation, zoom/scroll/rotateEnabled, showCompass и т. Д. Из фактического контроллера представления), но это означало, что делегат не был настроен правильно, и viewForAnnotation не вызывался на выводах перезагрузить.