J'ai une superposition de route à placer sur une carte. Je dois ajuster sa rotation afin qu'elle chevauche exactement avec la vue de la carte sous-jacente. Comment puis-je atteindre cet objectif? J'ai trouvé l'angle de rotation. Comment puis-je faire pivoter ma vue de superposition? Jusqu'à présent, j'ai ajouté la superposition, mais je ne peux pas faire de rotation en utilisant des transformations. Ce que j'ai remarqué, c'est que lorsque je change l'angle, l'image ne tourne pas, mais glisse le long de l'axe x (côtés).MKOverlayView à faire pivoter
Voici le code que j'ai essayé
- (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);
}
Voici ce que je reçois
J'ai une solution dans laquelle je tourne manuellement l'image avec GIMP et placer. Mais j'ai besoin d'être personnalisé.
C'est le image transformé avec GIMP et lorsqu'il est placé sur la carte comme superposition
et c'est quand je tourne contexte à l'aide de transformer [note: tout en faisant tourner le contexte de l'image est mise en rotation mais pas à l'endroit exact Voir image. Aussi les pauses d'image sur le zoom]
Ce que j'ai fait
//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);
Comment est votre code d'initialisation ou quel est le point de vue "auto" auquel vous appliquez la transformation? Avez-vous essayé de faire tourner le contexte? – Lukas
@Lukas: C'est la vue de superposition qui est référencée comme self. J'ai même essayé de faire tourner le contexte. Qu'est-ce qui s'est passé était que pendant le zoom dans l'image se brise. Y a-t-il un autre moyen d'y parvenir? J'ai l'impression qu'il y a un moyen de le faire, mais toutes les façons que j'ai essayées, je pouvais soit faire une rotation avec une image cassée sur le zoom ou l'emplacement exact. Pas les deux ensemble. – Meera
@MeeraJPai pourriez-vous présenter une version dont l'image a été tournée de la façon dont vous voulez la faire pivoter? Je comprends que vous devrez peut-être utiliser votre solution de contournement pour obtenir ce que vous voulez dans ce cas-ci. –