如何在SwiftUI中设置Map视图的样式?

7gyucuyw  于 2023-02-28  发布在  Swift
关注(0)|答案(1)|浏览(226)

如何在SwiftUI中设置Map视图的样式?
以下是SwiftUI中默认Map视图的示例屏幕截图。

我想这样的风格,只有黑色和白色,然后街道之间的建筑物的细节将只是平面和所有的街道颜色将是白色的。(这只是一个快速的Photoshop编辑)

这在MapKit中可以实现吗?我看到过一些关于使用MKTileOverlay来使用自己的图像平铺来设置Map样式的参考,但这些帖子都是几年前的事了。这是当前设置Map样式的方法,还是iOS 16中有更现代的方法?

c6ubokkw

c6ubokkw1#

使用.overlay并改变.blendMode,可以得到与此接近的结果。

struct ContentView: View {
    
    @State private var rect = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.5, longitude: 0), latitudinalMeters: 5000, longitudinalMeters: 5000)
    
    var body: some View {
        VStack {
            Map(coordinateRegion: $rect)
                .overlay {
                    Rectangle()
                        .fill(.gray)
                        .blendMode(.color)
                }
            Map(coordinateRegion: $rect)
                .overlay {
                    Rectangle()
                        .fill(.black)
                        .blendMode(.hue)
                }
            Map(coordinateRegion: $rect)
                .overlay {
                    Rectangle()
                        .fill(.black)
                        .blendMode(.saturation)
                }
        }
    }
}

如果这不是很正确,您可以尝试将多个叠加与不同的.blendMode组合以达到所需的效果。

Map(coordinateRegion: $rect)
    .overlay {
        ZStack {
            Rectangle()
                .fill(.gray)
                .blendMode(.colorBurn)
            
            Rectangle()
                .fill(.black)
                .blendMode(.hue)
        }
    }

对比度更强

相关问题