2012-07-24 10 views
8

Tengo un problema con mi MKAnnotationView s cuando MKUserTrackingModeFollowWithHeading está habilitado en MKMapView.Cómo configurar el centro de rotación de un MKAnnotationView

Posicioné mis imágenes usando la propiedad centerOffset de MKAnnotationView. Especificando las coordenadas de la punta de la espiga con relación al sistema de coordenadas en el centro de la imagen es algo contraproducente intutive, pero se le ocurrió la siguiente fórmula:

annotationView.centerOffset = CGPointMake(imageWidth/2.0 - tipXCoordinate, imageHeight/2.0 - tipYCordinate); 

Esto funciona bien para acercar el mapa dentro y fuera . Las puntas de los pines mantienen su posición relativa en el mapa.

Sin embargo, cuando habilito MKUserTrackingModeFollowWithHeading, ya no funciona. Los pasadores giran alrededor del centro de la imagen, en lugar de la punta. Entonces, cuando el mapa gira, los consejos no apuntan a las ubicaciones que se supone que deben anotar.

He jugado un poco con los frame y center propiedades del MKAnnotationView, pero me siento, que están teniendo ningún efecto sobre la alineación de los pasadores de ningún tipo.

Curiosamente, el MKPinAnnotationView no parece usar centerOffset en absoluto, sino que cambió frame en su lugar. Sin embargo, no pude reproducir esto. Cambiar el frame de mi vista personalizada no lo movió en absoluto.

Gracias por cualquier idea que pueden proporcionar :-)

Solución:

No utilice centerOffset! Use annotationView.layer.anchorPoint en su lugar. El sistema de coordenadas del punto achor es mucho más agradable también. Coordenadas van desde 0.0 (arriba/izquierda) a 1,0 (abajo/derecha) del rectángulo de la imagen:

annotationView.layer.anchorPoint = CGPointMake(tipXCoordinate/imageWidth, tipYCordinate/imageHeight); 

Respuesta

12

Un amigo me pregunta para hacerle saber que usted debe "probar esto, por ejemplo":

self.layer.anchorPoint = CGPointMake (0.5f, 1.0f); 
+1

Dile a tu amigo, (s) que es mi héroe personal de la semana :-) Muchas gracias! – Chris

Cuestiones relacionadas