【发布时间】:2012-11-23 08:16:44
【问题描述】:
我正在开发一个应用程序,我想在其中显示往返机场的虚构飞机。这可能不是我想在地图上展示的唯一事物。
为此,我使用了来自 LocationReminders 的示例代码(他们拥有的 MKOverlayPathView 子类,ReminderCircleView)并将其连接到我自己的代表飞机的 MKOverlay。此类订阅覆盖类的坐标和半径属性的 KVO 通知,并在每次更新时使其路径无效。
叠加层以每秒几帧的速度更新它的位置,我还更新了它的半径,以便我可以模拟透视(考虑到它是一个模型对象,但仍然是我找到的最佳解决方案,这不是很聪明)。
我正在使用简单的圆形路径进行测试。
此设置工作正常。覆盖视图得到更新,它的行为正确,与地图一起缩放。
问题在于,在模拟飞行中,叠加层不会绘制在某些图块上,通常是在目的地附近。圆圈看起来像是在这些瓷砖后面。
我能够理解这个问题中的一件事:每当我观察到圆圈没有被绘制在某个图块上时,如果我缩小,圆圈将被正确绘制。然而,放大或平移并不能解决任何问题。
我的理论是某些图块(或它们的地图矩形)没有被标记为重绘,因此,只有通过缩小我才能强制这样做。但我仍然认为这与放大似乎没有帮助的事实不一致。
我不知道我是否做错了什么,或者我是否遇到了错误或其他什么。我改用了注释,它正在工作,但是如果你在没有自己观察缩放比例的情况下缩小,我将失去表示一个变得更小的平面的能力。
我在 5.1、6.0 和 6.1 版本中进行了测试,并且行为是相同的。
【问题讨论】:
标签: objective-c ios mapkit mkoverlay