Изменение размера рисунка линий на карте при увеличении и уменьшении - PullRequest
0 голосов
/ 13 июля 2011

Я рисую несколько пользовательских линий, используя пользовательский элемент управления MKAnnotationView на MapView. Рисунок находится между двумя определенными точками. Проблема, с которой я сталкиваюсь, заключается в том, что когда я увеличиваю или уменьшаю масштаб в iPhone, линии, кажется, тоже увеличивают и уменьшают масштаб. Это создает странный эффект, поскольку линии появляются над разными зданиями и местами, когда пользователь увеличивает или уменьшает масштаб. Как я могу решить эту проблему?

Вот код для настройки AnnotationView:

@implementation JogAnnotationView

@synthesize points; 

- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier pts:(NSMutableArray *)p
{
    self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
    if (self != nil)
    {
        CGRect cgRect =[[UIScreen mainScreen] bounds];
        CGSize cgSize = cgRect.size;

        CGRect frame = self.frame;
        frame.size = CGSizeMake(cgSize.width/2, cgSize.height/2);
        self.frame = frame;
        self.backgroundColor = [UIColor clearColor];
        self.centerOffset = CGPointMake(-5, -5);
        self.points = p;
    }

    return self;
}

- (void)drawRect:(CGRect)rect
{
    NSLog(@"%d",self.points.count);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextBeginPath (context);
    CGContextSetLineWidth(context, 2.0);
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
    CGFloat components[] = {0.0, 0.0, 1.0, 1.0};

    CGColorRef color = CGColorCreate(colorspace, components);

    CGContextSetStrokeColorWithColor(context, color);
    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);

    for (int i = 0; i < ([self.points count] - 1); i++)
    {
        JogPoint *startPoint = (JogPoint *) [self.points objectAtIndex:i];
        JogPoint *endPoint = (JogPoint *) [self.points objectAtIndex:(i+1)];

        CGContextMoveToPoint(context, startPoint.x ,startPoint.y);
        CGContextAddLineToPoint(context,endPoint.x,endPoint.y); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...