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