He estado trabajando en un reemplazo de mapas desde hace bastante tiempo. Todo funciona con un UIScrollView
respaldado por un CATiledLayer
.UIScrollView setZoomScale restablece la rotación aplicada a cero
Para rotar mi mapa, giro la capa. (El uso de CATransform3DMakeRotation
) funciona bastante bien hasta ahora =)
Pero si alguna vez llamar setZoomScale
método de la CATransform3D
que va a ser sometido a mi capa es restablecer la rotación a 0.
Mi pregunta es, ¿hay cualquier forma de configurar el zoomscale
de mi scrollView sin perder la rotación aplicada?
El mismo problema existe para los gestos de pellizco.
// Informaciones adicionales
Para girar alrededor de la posición actual, tengo que editar el punto de anclaje. Quizás esto también sea un problema para escalar.
- (void)correctLayerPosition {
CGPoint position = rootView.layer.position;
CGPoint anchorPoint = rootView.layer.anchorPoint;
CGRect bounds = rootView.bounds;
// 0.5, 0.5 is the default anchorPoint; calculate the difference
// and multiply by the bounds of the view
position.x = (0.5 * bounds.size.width) + (anchorPoint.x - 0.5) * bounds.size.width;
position.y = (0.5 * bounds.size.height) + (anchorPoint.y - 0.5) * bounds.size.height;
rootView.layer.position = position;
}
- (void)onFinishedUpdateLocation:(CLLocation *)newLocation {
if (stayOnCurrentLocation) {
[self scrollToCurrentPosition];
}
if (rotationEnabled) {
CGPoint anchorPoint = [currentConfig layerPointForLocation:newLocation];
anchorPoint.x = anchorPoint.x/rootView.bounds.size.width;
anchorPoint.y = anchorPoint.y/rootView.bounds.size.height;
rootView.layer.anchorPoint = anchorPoint;
[self correctLayerPosition];
}
}
Hola Bartosz, antes que nada, ¡gracias por esa publicación! Pero eso no funcionó para mí ... He editado el punto de anclaje para rotar alrededor de la posición actual. Tal vez es ese el problema? Editaré mi publicación y agregaré ese código. –
Entonces conservó la rotación, pero el eje de rotación estaba equivocado, ¿verdad? –
Realmente no puedo decirlo. Solo por lo que veo, gira mucho en torno a un punto extraño. Pero el eje parece estar bien. –