Actualización #5 supongo que la generosidad de tiempo. 100+ puntos de vista y nadie se ha tomado una puñalada, incluso con el código de ejemplo que he publicado. Cómo sobre algunos puntos de reputación!

Actualización #4Este es un poco más complicado, así que he creado una nueva pestaña proyecto basado en que sólo incluye las partes de mi app estoy teniendo problemas con la de aquí. Usted puede descargar de: http://www.servinitup.net/CustomCalloutAnnotation.zip
Siéntase libre de abrirlo (añada su propio identificador del paquete para ejecutar en su teléfono) y jugar con ella, y ver si usted puede conseguir que la maldita llamada de anotación para moverse con el pin!

Actualización #3 Trató de hacer setAnnotation un método público de los del tutorial CalloutMapAnnotationView y llamando directamente. No tenía ninguna suerte. A pesar de la poca rarezas que ocurrió, lo único que se movía era el pequeño triángulo de la parte de la llamada. Yo no podía obtener toda la llamada a mover.

Actualización #2 Aún no mucha suerte, pero ahora han estado buscando formas para crear mediante programación un «pinch to zoom» y, a continuación, deshacer inmediatamente, por lo que el usuario nunca ve un cambio. Con la esperanza de que hacerlo mediante programación tendrá el mismo efecto que hacerlo manualmente, y la llamada de la anotación pop de regreso a su padre. Alguna idea?

Actualización #1 Después de jugar aquí es donde me he metido:
– sustituye self.calloutAnnotation.coordinate = coords; con self.calloutAnnotation.latitude = coords.latitude;self.calloutAnnotation.longitude = coords.longitude;
– Con que ha cambiado, si yo un poco pellizcar el mapa para acercar o alejar el zoom después de que el pin se ha actualizado, la llamada anotación anima a la posición correcta, a la derecha sobre el pin.

Así que ahora tengo que averiguar cómo conseguir que esto suceda sin que el usuario tener que pellizcar para hacer zoom.


Post Original

Yo, junto con otros de MODO que los usuarios están utilizando este impresionante solución para crear una costumbre de la llamada de la anotación:
http://blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/

Cuando se utiliza un estándar de llamada (annotationview.canShowCallout = true) y el pasador se mueve alrededor de la pantalla, la ubicación es actualizado, el estándar de la llamada de pistas a la derecha junto con el pin, como si estuvieran encerrados juntos.

Cuando el uso de la costumbre de la llamada de la solución anterior, cuando mi pin mueve alrededor de después de las actualizaciones de ubicación, la llamada anotación permanece en su ubicación original. Por supuesto, me gustaría imitar el iOS estándar y tienen la costumbre de llamada de la anotación de la pista junto con el pin.

Este es el código que tengo hasta ahora, que es mover correctamente la anotación de vista, pero no la costumbre de la llamada de la anotación de vista:

/* núcleo de la ubicación de las emisiones de una notificación, y mi punto de vista controlador escucha para que las notificaciones y las llamadas locationManagerDidFindLocation */
- (void)locationManagerDidFindLocation:(NSNotification *)notif { 
CLLocation *ubicación = [notif.userInfo objectForKey:@"ubicación"]; 
CLLocationCoordinate2D coords = [ubicación coordenada]; 
MKCoordinateSpan span = MKCoordinateSpanMake((5/69), (5/69)); 
MKCoordinateRegion región = {coords, span}; 

//si no tenemos una ubicación actual sin embargo, crear un lugar en el mapa, y ajustar el mapa de la región 
//de lo contrario, la actualización de la anotación de la colocación y posición en el mapa en una animación suave 
si (auto.currentLocationAnnotation == nil) { 
auto.currentLocationAnnotation = [[CurrentLocationAnnotation alloc] initWithCoordinate:coords andTitle:@"Mi Título" andSubtitle:@"Mi subtítulo"]; 

[auto.mapView addAnnotation:auto.currentLocationAnnotation]; 
[auto.mapView setRegion:región de animación:true]; 
[auto.mapView regionThatFits:región]; 
} else { 
[UIView beginAnimations:nil contexto:NULL]; 
[UIView setAnimationDuration:0.45]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

//esto mueve mi anotación ver perfectamente 
auto.currentLocationAnnotation.coordinar = coords; 

//******* aquí es donde mi problema es 
//******* esta costumbre de la llamada de la anotación de vista permanece 
//******* en su lugar original, a pesar de que es 
//******* los padres de anotación de vista se mueve alrededor de la pantalla 
auto.calloutAnnotation.coordinar = coords; 

[auto.mapView setRegion:región de animación:true]; 
[auto.mapView regionThatFits:región]; 
[UIView commitAnimations]; 
} 
} 
  • Creo que eres el experto residente, desde que usted escribió en el blog que estoy siguiendo. ¿Tienes alguna idea?
  • El proyecto de vincular a falta de un par de archivos Png, map_marker y [email protected] Se puede incluir y reemplazar el zip? También, el nombre de su setAnnotation… método me hizo sentir mejor acerca de mi método de nomenclatura cuando me siento frustrado.
  • Ja! Supongo que se olvidó de limpiar. Sí, definitivamente la convención de nomenclatura voy con cinco días después de tirarme de los pelos. Acabo de añadir el .png y re-subido. Echa un vistazo, y gracias por dar esta un vistazo!
  • El enlace para el código de ejemplo no funciona para mí. Hay algún espejo?
  • Viendo el código, creo que el problema podría estar en la forma de tratar con la ubicación. Ejecutar el código al principio da la misma ubicación 19 veces, después de eso nunca más. Por qué no utilizar CoreLocation en lugar de NSNotificationCenter?
InformationsquelleAutor djibouti33 | 2011-06-17

3 Comentarios

  1. 32

    MKAnnotationView de Bloqueo personalizada anotación ver a pin en las actualizaciones de ubicación

    He creado un proyecto basado en su CalloutMapAnnotationView demostrando un IB basado en la solución. Teclas de flecha animación del movimiento de la ubicación de anotación y es la llamada de la anotación. La llamada ahora también cambia automáticamente el tamaño basado en la suministra contentView, y a la vista está cargado de un independiente de punta. Buena suerte!

    https://github.com/jacobjennings/JJMapCallout

    • Gracias Jacob, su código es el primer ejemplo que se me vea de una costumbre llamada cargado de una .xib. Gran respuesta.
    • este enlace no se abre
    • Oh wow, el megaupload takedown me afectó personalmente. Voy a limpiar y poner en github o algo esta noche.
    • ¿pusiste alguna parte?
    • Cualquier palabra, Jacob?
    • Subido a github, enlace actualizado.
    • señor yo añadir algún detalle para pin clic en agregar
    • yo no soy capaz de implementar este código en mi proyecto ¿alguien puede ayudarme

  2. 1

    Sé que no va a gustar esta respuesta, pero funciona. La muestra se ha vinculado a sólo dibuja una imagen personalizada en la superposición a través de la forma más difícil posible (drawRect:). Han considerado que la representación de su superposición de una vez en un UIImage, y sólo la creación de la image propiedad en una muy simple MKAnnotationView? Incluso si usted necesita para cambiar el contenido periódicamente, como actualizar el número de amigos en un bar, puede volver a dibujar la imagen cuando se produce el cambio y actualización de la correspondiente MKAnnotationView.

    • Sin duda una manera de ir sobre esto. Creo que la razón por la que @JARinteractive realiza todo en drawRect: en lugar de sólo la creación de una imagen es porque la flecha que apunta hacia abajo a la clavija debe ser dinámico. Si el pin es hacia la izquierda de la pantalla, la llamada de la anotación de la flecha será dibujado por allí. Lo mismo si el pin de anotación en el lado derecho de la pantalla. También, una cosa que es agradable sobre el estándar de llamada, es que se anima con el pin de un punto a otro. Haciendo su camino significa que tendría que borrar la imagen antes de la mudanza, a continuación, hacer que aparezca de nuevo después de la.
    • Yo creo el uso de la base de MKAnnotationView con una imagen, en el marco del sorteo de la llamada de flecha.

Dejar respuesta

Please enter your comment!
Please enter your name here