gpt4 book ai didi

objective-c - 移动 MKOverlayPathView 消失在瓷砖后面

转载 作者:可可西里 更新时间:2023-11-01 03:33:55 24 4
gpt4 key购买 nike

我正在开发一个应用程序,我想在其中显示往返机场的虚构飞机。这可能不是我想在 map 上飞翔的唯一东西。

为此,我使用了来自 LocationReminders 的示例代码(他们拥有的 MKOverlayPathView 子类,ReminderCircleView)并将其连接到我自己的代表飞机的 MKOverlay。此类订阅覆盖类的坐标和半径属性的 KVO 通知,并在每次更新时使其路径无效。

叠加层以每秒几帧的速度更新其位置,我还更新了它的半径,以便我可以模拟透视(考虑到它是一个模型对象,这不是很聪明,但仍然是我找到的最佳解决方案)。

我正在使用一个简单的圆形路径进行测试。

此设置工作正常。覆盖 View 得到更新并且它的行为正确,与 map 和所有内容一起缩放。

问题在于,在模拟飞行中,不会在通常靠近目的地的某些图 block 上绘制叠加层。圆圈看起来像是在这些瓷砖后面。

我能够理解这个问题中的一件事:每当我观察到圆没有被绘制在某个图 block 上时,如果我缩小圆将被正确绘制。然而,放大或平移并不能解决任何问题。

我的理论是一些图 block (或它们的 map 矩形)没有被标记为重绘,因此,只有通过缩小我才能强制这样做。但我仍然认为这与放大似乎没有帮助的事实不一致。

我不知道我是否做错了什么,或者我是否遇到了错误或其他问题。我改用了注释,它可以正常工作,但如果你在不观察缩放比例的情况下缩小,我就失去了表示一个变小的平面的能力。

我已经在 5.1、6.0 和 6.1 版本中进行了测试,行为是相同的。

最佳答案

我已经明白是什么导致了这种行为。

在我的 MKOverlay 上,我正在更改 boundingMapRect 以在每次位置更新时匹配平面的位置。实际上 MKMapView 一开始只向 MKOverlay 询问(我通过检查对 -(BOOL)intersectsMapRect:(MKMapRect)mapRect 的调用才知道这一点)。

作为测试,我更改了 boundingMapRect 以匹配整个世界 (boundingMapRect = MKMapRectWorld;),它起作用了。然后只需要在我的飞机路径周围创建一个 MKMapRect 就可以了。

那么,Apple 就 boundingMapRect 声明如下:

The projected rectangle that encompasses the overlay. (required) (read-only) This property contains the smallest rectangle that completely encompasses the overlay area. Implementers of this protocol must set this area when implementing their overlay class. The rectangle should be specified using projected coordinates—that is, coordinates obtained by projecting the globe onto a two-dimensional surface.

我会这样说:

The projected rectangle that encompasses the overlay. (required) (read-only) This property contains the smallest rectangle that completely encompasses the area that the overlay can be presented in. Implementers of this protocol must set this area when implementing their overlay class. The rectangle should be specified using projected coordinates—that is, coordinates obtained by projecting the globe onto a two-dimensional surface.

关于objective-c - 移动 MKOverlayPathView 消失在瓷砖后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com