사용자 정의 컬러 서클 주석 안에 숫자를 그릴 수있었습니다 (this 기준). 내 맞춤 주석 클래스에 대한 최적화를 만들고 싶습니다. 재사용에 대해 읽었습니다. 내 문제는 내가 재사용 할 수있는 물건을 만들면 주석보기가지도에 섞여 큰 문제가되는 것입니다. 사용자 정의 된 주석 뷰를 다시 사용할 수 없습니까? 아니면 어떻게 든 뷰의 주석에 관련이 있습니까? 제 말은 주석에 그려지는 숫자를 저장한다는 것입니다. 사실 주석과 주석 사이에는 1to1 관계가 있습니다. 사용자 정의 annotationview의 init :맞춤형 특수 효과 뷰 재사용
-(id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier imageType:(int)imageType {
self = [super initWithAnnotation: annotation reuseIdentifier: reuseIdentifier];
if (self != nil)
{
if ([annotation isKindOfClass:[CircleMarker class]])
{
// custom annotation class with some extra fields
CircleMarker * clm = (CircleMarker *)annotation;
self.locationMarker = clm;
// ... setting frame and other stuff
self.image = [self getImage]; /* this method DRAWS image based on clm */
self.canShowCallout = NO;
}
...
}
그리고 대리인 : 여기
내 관련 코드입니다- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
static NSString *reuseId_small = @"smallcircle";
static NSString *reuseId_big = @"bigcircle";
CircleAnnotationView * nca = nil;
if ((int)[self.mapView getZoomLevel] < ZOOM_LEVEL_FOR_NUMBERS)
{
nca = (CircleAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:reuseId_small];
if (nca == nil)
nca = [[[CircleAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId_small imageType:2] autorelease];
}
else
{
nca = (CircleAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:reuseId_big];
if (nca == nil)
nca = [[[CircleAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId_big imageType:1] autorelease];
}
return nca;
}
내가 정의 drawRect
기능으로 self.image =
부품을 교체하려고했습니다,하지만 결과는 같았다.
감사합니다.
또는 내부에 가서 내가 배경에서 그려진 숫자를 분리해야 볼
https://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKAnnotationView_Class/Reference/Reference.html
? – Templar