2

ブレンド モードでマップ オーバーレイを描画したい。しかし、このコードはブレンドモードなしで白いオーバーレイを描画するだけです。私が間違っていることは何ですか?

- (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 で 3 つのレイヤーを使用して作成します。

  1. 元のグーグルマップ。
  2. 彩度ブレンドモードの黒レイヤー。
  3. 除外ブレンドモードの白いレイヤー。 ここに画像の説明を入力
4

2 に答える 2

2

openstreetmapとwmsサーバー、またはmapboxなどのサービスを使用して独自のマップを設計し、このカスタムマップをオーバーレイとして追加することをお勧めします。

他のマップをオーバーレイとして追加する方法の例を次に示します:https ://github.com/mtigas/iOS-MapLayerDemo

于 2013-01-06T21:42:18.727 に答える
1

実際のマップビューコンテキストに直接アクセスすることはできないと思います。したがって、おそらくマップの「スクリーンショット」を撮り、コンテキスト内で再度描画する必要があります。その後、もちろん効果を適用することができます。

于 2012-06-05T13:40:52.327 に答える