Chciałbym synchronicznie ładować obrazy dla mojego niestandardowego MKAnnotationView; Używam już frameworka EGOImageView (działa bardzo dobrze z UITableViews), ale nie uda mi się go uruchomić na MKMapView. Obrazy wydają się być załadowane, ale nie mogę ich odświeżyć na mapie - nie robi nic.Odśwież MKAnnotationView na MKMapView
Odpowiedz
Nie próbowałem go samodzielnie, ale może działać:
Uzyskaj widok na adnotację za pomocą metody MKMapView - (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation
i ustaw dla niej nowy obraz.
Edit: próbował zrobić to sam i to podejście pracował dobrze dla mnie:
// 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"];
}
Po wywołaniu tej metody wszystkie adnotacje obrazy zostały zaktualizowane.
Jest to jedyny sposób znalazłem zmusić odrysowywanie MKAnnotationViews: aktualizacja
// Siła widoku mapy (inaczej widoki adnotacji nie przerysować)
centrum CLLocationCoordinate2D = mapView.centerCoordinate;
mapView.centerCoordinate = center;
Wydaje się bezużyteczne, ale działa.
Znalazłem tylko jeden niezawodny sposób zaktualizować adnotacji, inne metody nie działają na mnie: po prostu usuwanie i dodawanie adnotacji ponownie:
id <MKAnnotation> annotation;
// ...
[mapView removeAnnotation:annotation];
[mapView addAnnotation:annotation];
Ten kod pozwoli - [MapView: viewForAnnotation:] się ponownie wywoływany, więc widok adnotacji zostanie utworzony ponownie (lub może być ponownie użyty, jeśli użyjesz opcji dequeueReusableAnnotationViewWithIdentifier) z poprawnymi danymi.
i skończyło się przy użyciu tej techniki dla pojedynczego adnotacje odświeżenie – nurxyz
I próbuję użyć tej metody, a SO chce, aby działała, ale nie wydaje się, aby zachowywała się niezawodnie w zależności od poziomu powiększenia. Czasami pin wydaje się być przesunięty w lewo/w prawo o zbyt wiele, a objaśnienie nie jest już wyrównane.(To jest z obrazami pinowymi, które mają subtelne zmiany, ale są poza tym identyczne pod względem kompozycji, z "środkiem" w samym środku obrazu.) Hmm ... –
Tak, musiałem nużąco dodawać adnotacje, aby je odświeżyć. – coolcool1994
ten pracował dla mnie
#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];
}
(nie wiem jak się wskazywać, że ten post dotyczy zerodiv na odpowiedź.) Udało mi się dostać zerodiv na metodę pracy dodając kickstart sortuje, zmuszając nie mająca znaczenia, ale inna współrzędna, a następnie przywracająca poprzednią, poprawną. Ekran nie miga wcale z powodu pierwszej lokalizacji.
CLLocationCoordinate2D center = mapView.centerCoordinate;
CLLocationCoordinate2D forceChg;
forceChg.latitude = 0;
forceChg.longitude = curLongNum;
mapView.centerCoordinate = forceChg;
mapView.centerCoordinate = center;
- 1. Korzystanie z MKAnnotationView bez MKMapView?
- 2. nie MKAnnotationView wyświetlane na mapie
- 3. iOS - zestaw Szczegóły Przycisk Ujawnienie na MKAnnotationView
- 4. Pozycjonowanie zwyczaj MKAnnotationView
- 5. jak zarządzać przeciąganiem i upuszczaniem dla MKAnnotationView na IOS?
- 6. Wykryj Stuknij w CalloutBubble w MKAnnotationView
- 7. MKMapView, animateDrop?
- 8. MKMapView MKPointAnnotation stuknij wydarzenie
- 9. Zmiana obrazu szpilki na MKMapView w Swift
- 10. MKAnnotationView viewForAnnotation nigdy nie zadzwonił pod numer
- 11. Jak utworzyć niestandardowy MKAnnotationView i tytuł zwyczaj adnotacji i napisów
- 12. Skonsoliduj adnotacje na powiększonym MKMapView
- 13. Jak wyświetlać MKOverlay na MKMapView
- 14. Pokazuje różne obrazy Pin w MKMapview
- 15. Szybkie dodawanie pojedynczej szpilki do MKMapView?
- 16. Odśwież EHCache
- 17. Nagłówek Odśwież
- 18. Narzędzie MKMapView ignoruje aktualizację pliku centerOffset w systemie iOS 4
- 19. Uzyskaj współrzędne punktu od mkmapview na iphone
- 20. Próbujesz wyśrodkować mapę na sworzniu (MKMapView)
- 21. Get obsługi bieżącej lokalizacji na MKMapView
- 22. Focus MKMapView na NSString Współrzędne z MKCoordinateRegion
- 23. narysować okrąg o promieniu 1000m wokół lokalizacji użytkowników w MKMapView
- 24. Odśwież widok kontenera na przycisku Naciśnij
- 25. Odśwież stronę asp.net na przycisku kliknij
- 26. Odśwież stronę nadrzędną na zamknięciu wyskakującego okna
- 27. Odśwież treść php na <select>
- 28. Jak programowo otworzyć wywołanie MKAnnotationView? (iPhone, MapKit)
- 29. Utworzenie podklasy MKAnnotationView i nadrzędnym setDragState
- 30. Zestaw MKMapView region
tak się teraz robi. Ale w ten sposób obraz jest ładowany synchronicznie. – cocoapriest
A jeśli nazwiesz to po załadowaniu obrazu i ustawisz ten obraz na widok - czy to nie działa? – Vladimir
to jest pytanie - jak ustawić ten obraz później. W ten sposób obraz nie zostanie zaktualizowany na MKAnnotationView – cocoapriest