45 lines
1.1 KiB
Swift
45 lines
1.1 KiB
Swift
import MapKit
|
|
import SwiftUI
|
|
import UIKit
|
|
|
|
struct AttachmentLocationPickerView: View {
|
|
@State private var region = MKCoordinateRegion(
|
|
center: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868),
|
|
span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)
|
|
)
|
|
|
|
var body: some View {
|
|
MapView(coordinateRegion: $region)
|
|
}
|
|
}
|
|
|
|
struct MapView: UIViewRepresentable {
|
|
@Binding var coordinateRegion: MKCoordinateRegion
|
|
|
|
func makeUIView(context: Context) -> MKMapView {
|
|
let mapView = MKMapView()
|
|
mapView.delegate = context.coordinator
|
|
return mapView
|
|
}
|
|
|
|
func updateUIView(_ uiView: MKMapView, context _: Context) {
|
|
uiView.setRegion(coordinateRegion, animated: true)
|
|
}
|
|
|
|
func makeCoordinator() -> Coordinator {
|
|
Coordinator(self)
|
|
}
|
|
|
|
class Coordinator: NSObject, MKMapViewDelegate {
|
|
var parent: MapView
|
|
|
|
init(_ parent: MapView) {
|
|
self.parent = parent
|
|
}
|
|
|
|
func mapView(_ mapView: MKMapView, regionDidChangeAnimated _: Bool) {
|
|
parent.coordinateRegion = mapView.region
|
|
}
|
|
}
|
|
}
|