Me gustaría cargar imágenes sincrónicamente para mi MKAnnotationView personalizado; Ya estoy usando EGOImageView-framework (va muy bien con UITableViews), pero no puedo hacerlo funcionar en MKMapView. Parece que las imágenes están cargadas, pero no puedo actualizarlas en el mapa: [myMap setNeedsDisplay]
no hace nada.Actualizar MKAnnotationVer en un MKMapView
Respuesta
no he probado a mí mismo, pero podría funcionar:
obtener una vista de anotación utilizando MKMapView - (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation
método y establecer nueva imagen a la misma.
Editar: tratado de hacer que yo y este enfoque funcionó bien para mí:
// Function where you got new image and want to set it to annotation view
for (MyAnnotationType* myAnnot in myAnnotationContainer){
MKAnnotationView* aView = [mapView viewForAnnotation: myAnnot];
aView.image = [UIImage imageNamed:@"myJustDownloadedImage.png"];
}
Después de llamar a este método todas las imágenes anotaciones fueron actualizados.
Ésta es la única manera que he encontrado para forzar redibujado de MKAnnotationViews: actualización
// vigor de la vista de mapa (de lo contrario no serán vistas de anotación redibujar)
centro CLLocationCoordinate2D = mapView.centerCoordinate;
mapView.centerCoordinate = center;
Parece inútil, pero funciona.
que ha encontrado un único método fiable para actualizar anotación, otros métodos no funcionan para mí: acaba de eliminar y añadir anotaciones de nuevo:
id <MKAnnotation> annotation;
// ...
[mapView removeAnnotation:annotation];
[mapView addAnnotation:annotation];
Este código hará - [MAPview: viewForAnnotation:] estar llamado de nuevo y para que su vista de anotación se cree de nuevo (o tal vez reutilizada si usa dequeueReusableAnnotationViewWithIdentifier) con los datos correctos.
terminé usando esta técnica para refrescos de anotaciones simples – nurxyz
I Estoy tratando de usar este método, y SO quiero que funcione, pero no parece comportarse de manera confiable dependiendo del nivel de zoom. A veces, el pin parece estar desplazado a la izquierda/derecha demasiado, y la llamada ya no es alineado.(Esto es con imágenes de pin que tienen cambios sutiles pero son idénticas en composición, con el pin 'centro' en el centro de la imagen.) Hmm ... –
Sí, tuve que volver a agregar tediosamente Anotaciones nuevamente para actualizarlas. – coolcool1994
Esto funcionó para mí
#import "EGOImageView.h"
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
//ENTER_METHOD;
if([annotation isKindOfClass:[MKUserLocation class]]) return nil;
MKPinAnnotationView *annView;
static NSString *reuseIdentifier = @"reusedAnnView";
annView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5.0f, 0.0f);
annView.opaque = NO;
annView.image = [[UIImage imageNamed:@"tempImage.png"] retain];
YourModel *p = annotation; // make this conform to <MKAnnotation>
EGOImageView *egoIV = [[EGOImageView alloc] initWithPlaceholderImage:[UIImage imageNamed:@"tempImage.png"]];
[egoIV setDelegate:self];
egoIV.imageURL = [NSURL URLWithString:p.theUrlToDownloadFrom];
[annView addSubview:egoIV];
[egoIV release];
return [annView autorelease];
}
(no veo cómo indicar que este post se refiere a la zerodiv respuesta.) Yo era capaz de obtener de zerodiv método para trabajar mediante la adición de un arranque rápido de la clase, obligando una coordenada sin sentido pero diferente, luego restaurando la anterior, correcta. La pantalla no parpadea en absoluto debido a la primera ubicación.
CLLocationCoordinate2D center = mapView.centerCoordinate;
CLLocationCoordinate2D forceChg;
forceChg.latitude = 0;
forceChg.longitude = curLongNum;
mapView.centerCoordinate = forceChg;
mapView.centerCoordinate = center;
- 1. mover/actualizar MKOverlay en MKMapView
- 2. Force MKMapView viewForAnnotation para actualizar
- 3. Zoom en un MKMapView programmatically
- 4. ¿Cómo crear un MKMapView?
- 5. MkMapView colocar un pin en contacto
- 6. UIPanGestureRecognizer en MKMapView?
- 7. error posible en MKMapView
- 8. Mover MKCircle en MKMapView
- 9. MKMapView, animateDrop?
- 10. Haz un UIImage desde un MKMapView
- 11. MKMapView refresh after pin moves
- 12. MKMapView mapTypes
- 13. MKMapView ruta/
- 14. iPhone: Detectando Tap en MKMapView
- 15. didAddAnnotationViews no funciona en MKMapView
- 16. Cómo mostrar MKOverlay en MKMapView
- 17. Obtener los límites de un MKMapView
- 18. Necesito ayuda con un bloqueo MKMapView
- 19. ¿Agregar rápidamente un solo pin a MKMapView?
- 20. MKMapView moviendo anotaciones automáticamente: ¿animarlas?
- 21. MKMapView Zoom y región
- 22. Región del conjunto MKMapView
- 23. Esquinas redondeadas de MKMapView
- 24. Experiencia con MKMapView Rotación
- 25. ¿Detecta cuando un usuario desplaza MKMapView una cierta distancia?
- 26. añadir sombras a MKMapView
- 27. MKMapView con la dirección
- 28. MKMapView estrellarse con EXC_BAD_ACCESS
- 29. Impedir el desplazamiento en un MKMapView, también al hacer zoom
- 30. Cómo eliminar todas las anotaciones en un MKMapView
Así es como se hace ahora. Pero de esta manera la imagen se carga sincrónicamente. – cocoapriest
Y si lo llama después de que se cargue la imagen y establece esta imagen en la vista, ¿no funciona? – Vladimir
esa es la pregunta: cómo configurar esta imagen más adelante. Al hacerlo, la imagen no se actualiza en MKAnnotationView – cocoapriest