Vorrei caricare le immagini in sincronia per il mio MKAnnotationView personalizzato; Sto già usando il framework EGOImageView (va molto bene con UITableViews), ma non riesco a farlo funzionare su MKMapView. Le immagini sembrano essere caricate, ma non posso aggiornarle sulla mappa - [myMap setNeedsDisplay]
non fa nulla.Aggiorna MKAnnotationView su un MKMapView
risposta
Non ho provato io stesso, ma potrebbe funzionare:
avere una visione per l'annotazione utilizzando MKMapView - (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation
metodo e impostare nuova immagine ad esso.
Edit: provato a fare che io e questo approccio ha funzionato bene per me:
// 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"];
}
Dopo aver chiamato questo metodo tutte le immagini annotazioni sono stati aggiornati.
Questo è l'unico modo che ho trovato per imporre ridisegno di MKAnnotationViews: aggiornamento
// vigore della guarda la mappa (altrimenti viste di annotazione non ridisegnare)
centro CLLocationCoordinate2D = mapView.centerCoordinate;
mapView.centerCoordinate = center;
Sembra inutile, ma funziona.
ho trovato solo un modo affidabile per aggiornare l'annotazione, altri metodi non ha funzionato per me: solo la rimozione e l'aggiunta di annotazioni di nuovo:
id <MKAnnotation> annotation;
// ...
[mapView removeAnnotation:annotation];
[mapView addAnnotation:annotation];
Questo codice renderà - [MapView: viewForAnnotation:] essere chiamato di nuovo e così la tua vista di annotazione verrà nuovamente creata (o forse riutilizzata se si utilizza dequeueReusableAnnotationViewWithIdentifier) con dati corretti.
ho finito per usare questa tecnica per il rinfresco di annotazioni singole – nurxyz
I Sto provando a usare questo metodo e SO voglio che funzioni, ma non sembra comportarsi in modo affidabile a seconda del livello di zoom. A volte il pin appare troppo spostato a sinistra/destra, e il callout non è più allineati.(Questo è con immagini pin che hanno cambiamenti sottili ma sono comunque identiche nella composizione, con il pin "centro" al centro dell'immagine.) Hmm ... –
Sì, ho dovuto aggiungere noiosamente annnotazioni di nuovo per aggiornarle. – coolcool1994
Questo ha funzionato per me
#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];
}
(non vedo come per indicare che questo post si riferisce la risposta di al zerodiv.) Sono stato in grado di ottenere di zerodiv metodo per lavorare con l'aggiunta di un kickstart di sorta, costringendo una coordinata insignificante ma diversa, quindi ripristina quella precedente, corretta. Lo schermo non lampeggia affatto a causa della prima posizione.
CLLocationCoordinate2D center = mapView.centerCoordinate;
CLLocationCoordinate2D forceChg;
forceChg.latitude = 0;
forceChg.longitude = curLongNum;
mapView.centerCoordinate = forceChg;
mapView.centerCoordinate = center;
- 1. Utilizzo di MKAnnotationView senza MKMapView?
- 2. Posizionamento un MKAnnotationView
- 3. come gestire il drag and drop per MKAnnotationView su IOS?
- 4. Rileva Toccare CalloutBubble in MKAnnotationView
- 5. Sottoclasse MKAnnotationView
- 6. Gestione sovrapposizione MKAnnotationView (s)
- 7. UIPanGestureRecognizer su MKMapView?
- 8. Come ottengo le coordinate di MKAnnotationView?
- 9. non MKAnnotationView presentandosi sulla mappa
- 10. MKAnnotationView drawRect: non viene chiamato
- 11. Consolidare le annotazioni su un MKMapView ingrandito
- 12. Cambia immagine pin su MKMapView in Swift
- 13. MKMapView: Ottieni evento su clic sul pin di annotazione
- 14. MKMapView - setRegion: animato rende MKMapView non risponde su iOS7
- 15. MKMapView, animateDrop?
- 16. MKMapView MKPointAnnotazione evento tap
- 17. didAddAnnotationViews non funziona su MKMapView
- 18. Procedura: visualizzare MKOverlay su MKMapView
- 19. Come impostare il centro di rotazione di un MKAnnotationView
- 20. Personalizza il callout MKAnnotationView
- 21. Come creare un MKMapView?
- 22. MKMapView -> visualizzare un pulsante per la mia posizione
- 23. MKMapView aggiornamento dopo spostamenti pin
- 24. MKMapView posizione corrente che mostra come pin personalizzati
- 25. Mostra immagini pin diverse in MKMapview
- 26. spostamento/aggiornamento di MKOverlay su MKMapView
- 27. Visualizzazione di MKRoute su MKMapView in iOS7
- 28. Come disabilitare l'interazione dell'utente su MKMapView?
- 29. Pulsante posizione corrente su ios MKMapView
- 30. Come nascondere il callout MKAnnotationView?
ecco come è fatto ora. Ma in questo modo l'immagine viene caricata in modo sincrono. – cocoapriest
E se lo chiami dopo che l'immagine è stata caricata e imposta questa immagine sulla vista - non funziona? – Vladimir
questa è la domanda: come impostare questa immagine in seguito. In questo modo, l'immagine non viene aggiornata su MKAnnotationView – cocoapriest