2016-09-02 7 views
0

핀을 추가하는 MKMapView가 있습니다. 관련 그래픽과 함께 올바르게로드되지만 확대 한 후 축소하면 그래픽이 느슨해지고 표준 빨간색 핀으로 바뀌며 핀 이름 만 커스터마이징됩니다 (심지어 내 공개 표시기도 사라짐).맞춤 핀이있는 MKMapView는 다시로드 할 때 빨간색 표준 핀으로 돌아갑니다.

지금까지 시도하고 내가 해봤 그것을 해결하기 위해 대신 내 사용자 지정 CBAnnotation의 정상적인 MKAnnotation에 반환 MKAnnotation에 MKPinAnnotation에서 모든 변경, 시도 PNG 년대를 빨리 장치에 대한 점검, 로딩 사용자 정의 핀을위한 다양한 샘플 코드 로딩 문제 였지만 여전히 문제가되는 경우지도 오버레이의 품질이 저하되었습니다.

- (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; 
    } 
} 

답변

0

내 문제가 해결되었습니다. MKMapView를 GenericMapView로 하위 클래스 화하여 코드가 더 깨끗해졌습니다 (showsUserLocation, zoom/scroll/rotateEnabled, showsCompass 등을 실제 View Controller에서 제거함). 그러나 이것은 delegate가 올바르게 설정되지 않았고 viewForAnnotation이 핀에 호출되지 않았 음을 의미합니다. 다시로드하십시오.