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 не вызывался на выводах перезагрузить.

Другие вопросы по тегам