在地图上重叠两个 CGRect 时如何避免增加 alpha 分量?

how to avoid incrementation of alpha component when overlapping two CGRect over a map?

我正在 objective-c 中为 iOS 开发应用程序。我有一些与从 CoreData 获得的 gps 坐标相关的数据,我想在地图上表示这些数据,绘制一些带有某些颜色的 CGRect,以制作一种热图。我能够做到这一点,但我的问题是,如果有两个以上重叠的 CGRect,CGRect 的 alpha 分量将被求和,所以如果有很多重叠的 CGRect,我会失去透明度。我的问题是是否存在可以避免这种情况并在不失去透明度的情况下绘制重叠的 CGRects 的方法。可能会裁剪之前的 CGRect 并添加新的。

有什么想法吗? 谢谢指教。

您可以将没有透明度的矩形绘制成 CGLayerUIImage,然后在您的地图上绘制 layer/image 并具有所需的透明度。

或者,您可以尝试不同的混合模式,也许 kCGBlendModeSourceAtop