Zajmuję się tworzeniem aplikacji, w której chcę pokazywać fikcyjne samoloty latające zi na lotniska. To nie może być jedyne rzeczy, które chcę reprezentować, podróżując po mapie.Przenoszenie MKOverlayPathView znika za płytkami
Do tego użyłem przykładowego kodu z LocationReminders (posiadanej podklasy MKOverlayPathView, ReminderCircleView) i połączono go z MKOverlayem mojego własnego reprezentującego samolot. Ta klasa subskrybuje powiadomienia KVO o współrzędnych i właściwościach promienia klasy nakładki i unieważnia ścieżkę za każdym razem, gdy jest aktualizacja.
Nakładka aktualizuje swoją pozycję z częstotliwością kilku klatek na sekundę, a także aktualizuję jej promień, dzięki czemu mogę symulować perspektywę (niezbyt inteligentną, biorąc pod uwagę, że jest to obiekt modelu, ale nadal jest najlepszym rozwiązaniem, jakie znalazłem).
Używam prostej ścieżki do testowania.
Ta konfiguracja działa dobrze. Widok nakładki zostaje zaktualizowany i zachowuje się poprawnie, skalując wraz z mapą i wszystkimi.
Problem polega na tym, że w symulowanym locie nakładka nie zostanie narysowana na niektórych płytkach, zwykle w pobliżu miejsca docelowego. Koło wygląda tak, jakby było za tymi kaflami.
Byłem w stanie zrozumieć jedną rzecz w tym problemie: za każdym razem, gdy obserwuję, że koło nie jest rysowane przez jakiś kafelek, jeśli pomniejszysz, koło zostanie narysowane poprawnie. Powiększanie lub przesuwanie nie rozwiązuje jednak niczego.
Moja teoria mówi, że niektóre kafelki (lub ich odwzorowania map) nie są oznaczane do przerysowywania, a więc tylko przez oddalenie mogę je wymusić. Ale nadal uważam, że nie jest to zgodne z tym, że powiększanie nie wydaje się pomagać.
Nie wiem, czy robię coś złego, czy też wpadam na jakiś błąd. Używałem adnotacji i działało, ale tracę zdolność do reprezentowania płaszczyzny, która zmniejsza się, jeśli pomniejszysz bez obserwowania skali powiększenia.
Testowałem w wersjach 5.1, 6.0 i 6.1 i zachowanie jest takie samo.