想通过 swiftUI 中的按钮在地图上显示放大缩小

Want to show zoom in zoom out on map through buttons in swiftUI

我想在 swiftUI Map 中的地图上添加 2 个按钮来放大和缩小它。我已将两个按钮放置在屏幕底部的 VStack 中的 Stack 中。我需要代码让它们工作。

这是我的:

import Foundation
import SwiftUI
import MapKit

struct QuakeDetail: View {
    var quake: Quake
    
    @State private var region : MKCoordinateRegion
    init(quake : Quake) {
        self.quake = quake
        _region = State(wrappedValue: MKCoordinateRegion(center: quake.coordinate,
                                                         span: MKCoordinateSpan(latitudeDelta: 3, longitudeDelta: 3)))
    }
    var body: some View {
        ZStack {
            
            VStack {
                Map(coordinateRegion: $region, annotationItems: [quake]) { item in
                    MapMarker(coordinate: item.coordinate, tint: .red)
                } .ignoresSafeArea()
                HStack {
                    Button {
                        print ("pressed +")
                    } label: {
                        HStack {
                            Text("map")
                            Image(systemName: "plus")
                        }
                    }.padding(5).border(Color.blue, width: 1)
                    Spacer()
                    QuakeMagnitude(quake: quake)
                    Spacer()
                    Button {
                        print ("pressed -")
                    } label: {
                        HStack {
                            Text("map")
                            Image(systemName: "minus")
                        }
                    }.padding(5).border(Color.blue, width: 1)
                    
                }.padding()
                Text(quake.place)
                    .font(.headline)
                    .bold()
                Text("\(quake.time.formatted())")
                    .foregroundStyle(Color.secondary)
                Text("\(quake.latitude)   \(quake.longitude)")
                
                
            }
        }
    }    
}

为此,您必须使用 MKCoordinateRegionspan 参数进行操作(值越小,缩放区域越大),例如(演示缩放 10%):

Button("Zoom In") {
    region.span.latitudeDelta *= 0.9
    region.span.longitudeDelta *= 0.9
}

测试 Xcode 13.2 / iOS 15.2