- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个应用程序,我想在其中显示往返机场的虚构飞机。这可能不是我想在 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/
我一直在查看 Apple 的 iOS Class Reference 文档,但不幸的是,我并不了解。我已经下载了他们的示例代码 KMLViewer,但他们把它弄得太复杂了……我真正想知道的是如何生成路
我在修改 Breadcrumb 示例时遇到了一些不一致之处,以使 CrumbPathView 从 MKOverlayPathView 子类化(就像它应该的那样),而不是从 MKOverlayView
我正在开发一个应用程序,我想在其中显示往返机场的虚构飞机。这可能不是我想在 map 上飞翔的唯一东西。 为此,我使用了来自 LocationReminders 的示例代码(他们拥有的 MKOverla
是否有人尝试子类化 MKOverlayPathView,以便从本质上重新创建对路径绘制有更多控制的 MKPolylineView?如果是这样,您愿意分享一些示例代码吗? 我想在 map View 上绘
任何人都可以回答以下两个问题中的任何一个 1) 如果我根据 MKOverlayPathView 中的 ZoomScale 动态调整覆盖对象的大小,当不知道 ZoomScale 是什么时,如何确保 MK
我是一名优秀的程序员,十分优秀!