2011-01-20 41 views
5

¿Alguien tiene alguna idea de por qué las imágenes utilizadas para una MKPinAnnotationView deben ser compensados ​​ligeramente (arriba a la derecha) el código que estoy utilizando es:MKPinAnnotationView offset de imagen?

pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pinView_ID]; 
pinView.image = [UIImage imageNamed: @"TEST_Small.png"]; 
// RedCircleImage = 40px x 40px 72dpi PNG 
// GreenDotImage = 2px x 2px 72dpi PNG 

alt text

No hay cambios en el código solo un cambio en el nombre de archivo de la imagen utilizada, una imagen es "los dos anillos rojos con un punto negro en el centro" y el otro es el "pequeño punto verde". He añadido las finas líneas azules en Photoshop para ayudar a mostrar dónde el punto verde es

He comprobado la propiedad centerOffset y su ajustado correctamente a 0,0

Cualquier idea sería bienvenido.

+2

No estoy seguro de que esto esté causando el problema que está viendo, pero es probable que no deba intentar personalizar MKPinAnnotationView. Deberías usar MKAnnotationView. MKPinAnnotationView es una clase de implementación concreta y, por lo tanto, puede tener su propia lógica relacionada con la animación de pin que puede estar dando como resultado la compensación que está viendo – Dolbz

+0

Hola, ese es un buen punto, voy a echar un vistazo. – fuzzygoat

+0

Esa fue de hecho la solución, muy apreciado Dolbz, si quieres el representante puedes publicar tu comentario como respuesta, de lo contrario marcaré la respuesta por omz. – fuzzygoat

Respuesta

14

Como Dolbz ha señalado, debe usar MKAnnotationView en lugar de MKPinAnnotationView. Cuando configura la imagen, también puede establecer un centerOffset que sea apropiado para su imagen. El valor predeterminado centerOffset debería funcionar para sus imágenes, pero si visualizara un pin, un indicador, etc., lo configuraría de manera diferente.

+0

Muy apreciado. – fuzzygoat

+1

Pasé varias horas hasta que leí tu publicación y me di cuenta de que estaba usando MKPinAnnotationView en lugar de MKAnnotationView. Evidentemente, centerOffset no funciona en MKPinAnnotationView. Muchas gracias por la ayuda. – Ricardo