2011-06-12 19 views
7

Tengo una aplicación que usa el kit de mapas de iphone. Muestra un conjunto de pines estándar. Ahora cambio a imágenes personalizadas para alfileres (usando MKMapViewDelegate)Problema con la posición del pin personalizado del iPhone

El problema es que los pines personalizados no están centrados a la derecha, el pin personalizado apunta a una ubicación cercana al original.

La pregunta es cómo funciona el iPhone con un pin personalizado. Por ejemplo: tengamos una imagen para pin 50x50 píxeles. Y tenemos coordenada global (largo, lat): XY

¿Cómo será la imagen del centro de iphone?

gracias

Respuesta

9

Si asigna su imagen personalizada a la propiedad de la imagen. Cuando se muestra la anotación, la imagen se muestra centrada sobre la coordenada del mapa de destino. Si no desea que la imagen se centre en la coordenada del mapa, puede usar la propiedad centerOffset para mover el punto central horizontal y verticalmente en cualquier dirección.

Por lo tanto, la imagen personalizada solo se muestra en el centro de las coordenadas seleccionadas.

MKAnnotationView* aView = [[[MKAnnotationView alloc] initWithAnnotation:annotation 

            reuseIdentifier:@"MyCustomAnnotation"] autorelease]; 

aView.image = [UIImage imageNamed:@"myimage.png"]; 

aView.centerOffset = CGPointMake(10, -20);  

Source: apple class reference for MKMapView

6

La solución es la creación de desplazamiento en el delegado de la MAPview centro, y no en la anotación visualizarla auto:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    static NSString* const kPinIdentifier = @"pinidentifier"; 

    PinAnnotationView* customPinView = [[[PinAnnotationView alloc] 
              initWithAnnotation:annotation reuseIdentifier:kPinIdentifier] autorelease]; 
    customPinView.canShowCallout = NO; 

    // Here !! 
    customPinView.centerOffset = CGPointMake(0, -21.5f); 

    return customPinView; 
} 
Cuestiones relacionadas