MKOverlayView使用混合模式绘制一些东西

时间:2012-05-28 13:50:07

标签: ios cocoa-touch cgcontext mapkit

我想用混合模式绘制地图叠加层。但是这段代码只是绘制白色叠加而没有任何混合模式。我做错了什么?

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
    UIGraphicsPushContext(context);

    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextSetBlendMode(context, kCGBlendModeSaturation);
    CGContextFillRect(context, [self rectForMapRect:mapRect]);

    UIGraphicsPopContext();
}

这是我想要的结果。我在Photoshop中用三层制作它:

  1. 原始谷歌地图。
  2. 具有饱和度混合模式的黑色图层。
  3. 具有排除混合模式的白色图层。 enter image description here

2 个答案:

答案 0 :(得分:2)

我建议您使用openstreetmap和wms服务器或像mapbox这样的服务设计自己的地图,然后将此自定义地图添加为叠加层。

以下是有关如何将其他地图添加为叠加层的示例:https://github.com/mtigas/iOS-MapLayerDemo

答案 1 :(得分:1)

我猜你无法直接访问真正的mapview上下文。因此,您可能需要拍摄地图的“屏幕截图”并在您的上下文中再次绘制。之后,您可以使用当然的效果。