У меня есть наложение маршрута для размещения над картой. Я должен настроить его вращение так, чтобы оно совпадало с основным видом карты. Как я могу это достичь? Я нашел угол поворота. Как я могу повернуть свое оверлейное представление? До сих пор я добавил наложение, но не могу повернуть с помощью преобразований. Я заметил, что когда я меняю угол, изображение не вращается, вместо этого оно скользит вдоль оси х (боковые стороны).MKOverlayView для поворота
Вот код, который я попытался
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"routeImage" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];
MKMapRect theMapRect = self.overlay.boundingMapRect;
CGRect theRect = [self rectForMapRect:theMapRect];
CGAffineTransform transform = CGAffineTransformMakeRotation((-35.88)/180.0 * M_PI);
[self setTransform:transform];
CGContextSaveGState(context);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0.0, -theRect.size.height);
CGContextDrawImage(context, theRect,image.CGImage);
CGContextRestoreGState(context);
}
Это то, что я получаю
У меня есть обходной путь, в котором я вручную повернуть изображение с помощью GIMP и поместить его. Но мне нужно, чтобы это было настроено.
Это image трансформированы с использованием GIMP и при размещении на карте в качестве наложения
и это, когда я поворачиваю контекст, используя преобразование [примечание: в то время как вращающаяся контекст изображение вращается, но не является в точном местоположении см image. Также изображение изломы на масштабирование]
Это то, что я сделал
//Hayl-Road-Final.png is the actual image without transformation using GIMP
UIImage *image = [[UIImage imageNamed:@"Hayl-Road-Final.png"] retain];
CGImageRef imageReference = image.CGImage;
MKMapRect theMapRect = [self.overlay boundingMapRect];
CGRect theRect = [self rectForMapRect:theMapRect];
// We need to flip and reposition the image here
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextTranslateCTM(ctx, 0.0, -theRect.size.height);
CGContextRotateCTM(ctx,-35.88);
//drawing the image to the context
CGContextDrawImage(ctx, theRect, imageReference);
Как это ваш код инициализации или как выглядит «я», к которому вы применяете преобразование? Вы пытались изменить контекст? – Lukas
@Lukas: его вид сверху, на который ссылается как на себя. Я даже попытался вращать контекст. Случилось так, что при масштабировании изображения ломается. Есть ли другой способ достичь этого? Я чувствую, что есть способ сделать, но все способы, которые я пытался, я мог бы либо добиться вращения с изменением изображения при масштабировании или точном местоположении. Не оба вместе. – Meera
@MeeraJPai вы можете представить версию, в которой изображение повернуто так, как вы хотите, чтобы оно повернулось? Я понимаю, что вам, возможно, придется использовать обходной путь, чтобы получить то, что вы хотите в этом одном экземпляре. –