У меня есть приложение, которое отображает пользовательские карты.Я использую CATiledView для отображения карт.
Я хотел бы иметь возможность рисовать маршрут поверх карт.Для этого я создаю UIView, затем добавляю его в scrollView после того, как добавляю слой листов следующим образом:
- (void)displayTiledImageNamed:(NSString *)imageName size:(CGSize)imageSize
{
// clear the previous imageView
[imageView removeFromSuperview];
[imageView release];
imageView = nil;
[linesView removeFromSuperview];
[linesView release];
linesView = nil;
// reset our zoomScale to 1.0 before doing any further calculations
self.zoomScale = 1.0;
// make a new TilingView for the new image
imageView = [[TilingView alloc] initWithImageName:imageName size:imageSize];
linesView = [[LinesView alloc]initWithImageName:imageName size:imageSize];
linesView.backgroundColor = [UIColor clearColor];
[self addSubview:imageView];
[self addSubview:linesView];
[self configureForImageSize:imageSize];
}
Проблема в том, что линия, которую я создаю в linesView, не масштабируется правильно.
Трудно описать, но создаваемая линия масштабируется так, как если бы она была нарисована на самом устройстве, а не нарисована на карте.См. Следующий код:
#import "LinesView.h"
@implementation LinesView
@synthesize imageName;
- (id)initWithImageName:(NSString *)name size:(CGSize)size
{
if ((self = [super initWithFrame:CGRectMake(0, 0, size.width, size.height)])) {
self.imageName = name;
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1, 0, 0, 1);
CGContextSetLineWidth(context, 20.0);
CGContextMoveToPoint(context, 1.0f, 220.0f);
CGContextAddLineToPoint(context, 340.0f, 80);
CGContextStrokePath(context);
}
@end
Я попытался поместить код для рисования линии в методе drawRect объекта tilingView, и он работает отлично.Ширина линии составляет 20 пикселей относительно карты.В просмотре линий эта строка имеет ширину 20 пикселей относительно устройства и расположена относительно вида прокрутки.
Извините, я изо всех сил пытаюсь описать проблему ...