Fáb*_*ira 7 objective-c mapkit ios mkoverlay
我正在开发一个应用程序,我想展示飞往机场的虚构飞机.这可能不是我想要代表飞过地图的唯一事情.
为此,我使用了LocationReminders(他们拥有的MKOverlayPathView子类,ReminderCircleView)中的示例代码,并将其连接到我自己的代表该平面的MKOverlay.此类在overlay类的坐标和radius属性上订阅KVO通知,并在每次更新时使其路径无效.
叠加层以每秒几帧的速度更新它的位置,我也会更新它的半径,这样我就可以模拟透视图(考虑到它是一个模型对象但不是很聪明,但仍然是我找到的最佳解决方案).
我正在使用一个简单的圆形路径进行测试.
此设置工作正常.叠加视图会更新并且行为正确,可以与地图一起缩放.
问题在于,在模拟飞行中,不会在通常靠近目的地的一些区块上绘制覆盖图.圆圈看起来像是在这些瓷砖后面.
我能够理解这个问题中的一件事:每当我观察到圆圈没有被绘制在一些瓷砖上时,如果我缩小,圆圈将被正确绘制.放大或平移并不能解决任何问题.
我的理论是,一些瓷砖(或它们的地图部分)没有被标记为重绘,所以,只有通过缩小我才能强制它.但我认为这与放大似乎没有帮助的事实并不一致.
我不知道我做错了什么,或者我是否碰到了一个小虫或什么东西.我已经使用了注释而且它正在工作但是我失去了表示如果你缩小而不自己观察缩放比例而变小的平面的能力.
我已经在版本5.1,6.0和6.1中进行了测试,行为是一样的.
我已经明白是什么导致了这种行为。
\n\n在我的上,MKOverlay我正在更改 ,boundingMapRect以匹配每次位置更新时飞机的位置。\n实际上 MKMapView 仅MKOverlay在开始时询问 (我通过检查对 的调用来了解这一点-(BOOL)intersectsMapRect:(MKMapRect)mapRect)。
作为测试,我更改了boundingMapRect来匹配整个世界 ( boundingMapRect = MKMapRectWorld;) 并且它起作用了。然后只需在MKMapRect我的飞机路径周围创建一个即可,仅此而已。
好吧,苹果公司声明如下boundingMapRect:
\n\n\n包含覆盖层的投影矩形。(必需)(只读)\n 此属性包含完全包围覆盖区域的最小矩形。该协议的实现者在实现其覆盖类时必须设置该区域。矩形应使用投影坐标\xe2\x80\x94 指定,即通过将地球仪投影到二维表面上获得的坐标。
\n
我想说的是:
\n\n\n\n包含覆盖层的投影矩形。(必需)(只读)\n 此属性包含完全包围可在 中呈现叠加层的区域的最小矩形。该协议的实现者在实现其覆盖类时必须设置该区域。矩形应使用投影坐标\xe2\x80\x94 指定,即通过将地球仪投影到二维表面上获得的坐标。
\n