在放大和缩小时调整地图上的线条大小

时间:2011-07-12 20:55:54

标签: ios mapkit

我正在使用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); 
    }
}

0 个答案:

没有答案
相关问题