Dobry dzień wszystkim!Jak renderować MKMapView poza głównym wątkiem?
Zajmuję się tworzeniem aplikacji na iPhone'a. Mam widok tabeli i listę lokalizacji, które muszę wyświetlić użytkownikowi. W tym celu użyłem MKMapView w każdej komórce widoku tabeli. Ale gdy jest wiele lokalizacji, to rozwiązanie staje się bardzo powolne. Chcę poprawić wydajność interfejsu użytkownika i zamienić MKMapView na UIImageView. Więc muszę renderować mapę z MKMapView do UIImage w jakimś wątku NON-MAIN. Próbowałem zrobić to tak:
UIGraphicsBeginImageContext(CGSizeMake(64, 64));
CGContextRef context = UIGraphicsGetCurrentContext();
[[mapView layer] renderInContext:context];
thumbnail_image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Ale ten kod renderuje tylko żółte tło mapy i pin powyżej określonej lokalizacji. Nie ma danych map takich jak ulice, domy itp. Co zrobiłem źle? Dziękuję za radę.
Problem polega na tym, że ta metoda delegatów nigdy nie została wywołana. Nie wiem, jak wymusić mapę obciążenia. Prawdę mówiąc, używam Monotoucha i być może jest to błąd tej platformy. –
Przeprowadziłem eksperyment. Opisana metoda delegata jest wywoływana poprawnie tylko wtedy, gdy dodany jest MKMapView do przeglądania za pomocą funkcji AddSubview(). –
Prawidłowo. Widok mapy nie będzie próbował załadować kafelków obrazu/mapy, dopóki nie stanie się częścią hierarchii widoku. –