iphone objective-c google-maps mkannotationview

iphone - Desplazamiento de imagen MKAnnotation con imagen de pin personalizada



objective-c google-maps (4)

Tengo una MKAnnotation con una imagen de pin personalizada. Sin embargo, el pin (MKAnnotationView) centra la imagen en relación con la coordenada especificada. Quiero establecer el punto de la coordenada en la parte inferior central de la imagen, no en el centro.

Intenté usar annView.centerOffset = CGPointMake(-12, -28); . Pero el problema es que centerOffset no es relevante para el nivel de zoom de los mapas.

Uno puede hacer esto tanto en la API de JS como en Android. ¿Hay alguna posibilidad de hacer esto en Objective-C?

..fredrik


El ajuste de centerOffset a menudo mueve el contorno de la imagen cuando el usuario gira o acerca el mapa, ya que el punto de anclaje todavía está establecido en el centro de la imagen en lugar de en su centro inferior.

Puede establecer el punto de anclaje de la anotación en el centro inferior de su imagen personalizada de la siguiente manera:

yourAnnotation.layer.anchorPoint = CGPointMake(0.5f, 1.0f);

De esta forma, cuando el usuario amplía o gira el mapa, su anotación personalizada nunca se moverá de sus coordenadas en el mapa.


Puede usar esta guía para calcular su desplazamiento central.


Su UIAnnotationView siempre se dibuja en la misma escala, el nivel de zoom del mapa no importa. Es por eso que centerOffset no está vinculado con el nivel de zoom.

annView.centerOffset es lo que necesitas. Si ve que su pin no está en la buena ubicación (por ejemplo, el centro inferior se mueve un poco cuando cambia el nivel de zoom), es porque no configuró el centro correcto.

Por cierto, si desea establecer el punto de la coordenada en la parte inferior central de la imagen, la coordenada x de su centerOffset debe ser 0.0f, como anotación, centre la imagen de forma predeterminada. Así que prueba:

annView.centerOffset = CGPointMake(0, -imageHeight / 2);


Todas las soluciones dadas por ahora podrían estropear el pin si se aleja. La única solución totalmente funcional que encontré hasta ahora es aumentar la altura de la imagen personalizada con su altura. En otras palabras, el doble de la altura. También mueva la imagen del pin a la parte superior y deje el resto transparente. De esta manera, el centro de la imagen será el punto inferior de su alfiler.

Ahora, no importa cuánto enfoque o si gira el mapa, el pin permanecerá centrado en la ubicación que desee.

El único problema que puedo pensar es que también se aumentará el área que se puede tocar en este pin.

¡Espero que esto ayude!