Ich entwickle eine App, in der ich fiktive Flugzeuge zeigen möchte, die von und zu Flughäfen fliegen. Das sind vielleicht nicht die einzigen Dinge, die ich durch die Karte fliegen möchte.Moving MKOverlayPathView verschwindet hinter Kacheln
Dazu habe ich den Beispielcode von LocationReminders (die MKOverlayPathView-Unterklasse, die sie haben, ReminderCircleView) und verband es mit einem MKOverlay meiner eigenen Darstellung des Flugzeugs. Diese Klasse abonniert KVO-Benachrichtigungen zu den Koordinaten- und Radiuseigenschaften der Überlagerungsklasse und macht ihren Pfad bei jeder Aktualisierung ungültig.
Das Overlay aktualisiert seine Position bei mehreren Frames pro Sekunde und ich aktualisiere auch seinen Radius, so dass ich Perspektive simulieren kann (nicht sehr schlau, da es ein Modellobjekt ist, aber immer noch die beste Lösung, die ich gefunden habe).
Ich verwende einen einfachen Kreis Pfad zum Testen.
Diese Einrichtung funktioniert einwandfrei. Die Überlagerungsansicht wird aktualisiert, und sie verhält sich korrekt und skaliert mit der Karte und allen.
Das Problem ist, dass in einem simulierten Flug die Überlagerung nicht über einige der Kacheln gezogen wird, normalerweise in der Nähe des Ziels. Der Kreis sieht aus wie hinter diesen Kacheln.
konnte ich eine Sache in diesem Problem verstehen: wenn ich der Kreis nicht über einige Ziegel beobachten gezogen zu werden, wenn ich der Kreis richtig gezeichnet verkleinern wird. Zoomen oder Panning löst jedoch nichts.
Meine Theorie ist, dass einige der Fliesen (oder ihre Karte Rects) nicht für die Wiederherstellung und so markiert wird, nur durch ich, dass zwingen Auszoomen kann. Aber ich denke, das stimmt nicht mit der Tatsache überein, dass das Zoomen nicht hilft.
Ich weiß nicht, ob ich etwas falsch mache oder ob ich auf einen Fehler oder etwas stoße. Ich habe stattdessen Annotationen verwendet und es funktionierte, aber damit verliere ich die Fähigkeit, ein Flugzeug darzustellen, das kleiner wird, wenn Sie auszoomen, ohne die Zoomskala selbst zu beobachten.
Ich habe in den Versionen 5.1, 6.0 und 6.1 getestet und das Verhalten ist das gleiche.