MKAnnotationView 하위 클래스 내부에서 이미지보기를 변경하는 데 문제가 있습니다. 사용자가 특정 지점에 있었던 위치에 대한 데이터를 기반으로 주석 위치를 업데이트하는 타이머가 있습니다. 이것은 잘 작동하고 주석 위치가 올바르게 업데이트됩니다. 나는 다음과 같은 코드를 사용하여이 작업을 수행 : 사용자가 서쪽으로가는되었는지 여부를이 아래MKMapKit의 이미지 변경 MKAnnotation 서브 클래스
[_myAnnotation setCoordinate:point.position];
는 또한 계산한다. 사용자가 동쪽으로 향하고 있다면 MyAnnotation
클래스에서 setIsMovingRight:YES
메서드를 호출하고 사용자가 west로 향하고있는 경우와 반대의 작업을 수행합니다.
값이 변경 될 때마다 메서드 내에서 NSLog를 사용하여 올바른 값으로 올바른 값으로 메서드를 호출하고 있음을 확인했습니다. 그러나 setIsMovingRight
메서드가 주석의 시각적 모양에 영향을 미치지 않는 것처럼 보입니다. 메서드가 호출 될 때마다 imageview의 배경색을 빨간색으로 설정하려고했지만이 경우에도 아무 효과가 없습니다. 난 성공하지 않고 여러 곳에서 setNeedsDisplay를 호출 해 보았습니다.
주석보기를 추가하고 다시 만들 수 있지만 위치가 변경 될 때마다 주석이 깜박입니다. 실제로보기에는 좋지 않습니다.
다음은 내 맞춤 주석보기 "MyAnnotation"코드입니다.
@interface MyAnnotation : MKAnnotationView <MKAnnotation>
{
UIImageView *_imageView;
BOOL _currentlyMovingRight;
}
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic,retain) UIImage *image;
-(void)setIsMovingRight:(BOOL)movingRight;
@end
@implementation MyAnnotation
@synthesize coordinate, title, subtitle, image;
-(id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if(self)
{
_currentlyMovingRight = NO;
_imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
[self addSubview:_imageView];
}
return self;
}
-(void)setIsMovingRight:(BOOL)movingRight
{
_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[_imageView setBackgroundColor:[UIColor redColor]]; // THIS LINE NEVER DOES ANYTHING.
if(movingRight && !_currentlyMovingRight)
{
NSLog(@"right now.");
[_imageView setImage:[UIImage imageNamed:@"right.png"]];
}
else if (!movingRight && _currentlyMovingRight)
{
NSLog(@"left now.");
[_imageView setImage:[UIImage imageNamed:@"left.png"]];
}
_currentlyMovingRight = movingRight;
[self addSubview:_imageView];
[self setNeedsDisplay];
}
누구나 제공 할 수있는 도움이나 조언을 보내 주시면 감사하겠습니다. 감사!