J'ai une carte en vue qui est centrée sur Chicago. Je veux que l'utilisateur puisse placer une épingle ou une annotation sur la carte, puis récupérer ces coordonnées. La carte charge bien Chicago mais je n'arrive pas à faire fonctionner le code d'annotation.
Je n'arrive pas à trouver une réponse pour SwiftUI, spécifiquement. Seulement Swift et Storyboards. J'ai l'impression d'avoir 99% du code mais les morceaux ne sont pas au bon endroit. J'ai inclus une capture d'écran de l'endroit où se trouvent les erreurs. Merci pour votre aide.
import SwiftUI
import MapKit
struct EntireMapView: UIViewRepresentable {
func updateUIView(_ mapView: MKMapView, context: Context) {
mapView.delegate = context.coordinator
let longPressGesture = UILongPressGestureRecognizer(target: mapView, action: #selector(EntireMapViewCoordinator.addAnnotation(gesture:)))
mapView.addGestureRecognizer(longPressGesture)
let span = MKCoordinateSpan(latitudeDelta: 0.3, longitudeDelta: 0.3)
var chicagoCoordinate = CLLocationCoordinate2D()
chicagoCoordinate.latitude = 41.878113
chicagoCoordinate.longitude = -87.629799
let region = MKCoordinateRegion(center: chicagoCoordinate, span: span)
mapView.setRegion(region, animated: true)
}
func makeUIView(context: Context) -> MKMapView {
let mapView = MKMapView(frame: .zero)
mapView.delegate = context.coordinator
return mapView
}
func makeCoordinator() -> EntireMapViewCoordinator {
return EntireMapViewCoordinator(self)
}
class EntireMapViewCoordinator: NSObject, MKMapViewDelegate {
var entireMapViewController: EntireMapView
init(_ control: EntireMapView) {
self.entireMapViewController = control
}
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
return (annotation as? MKAnnotationView)!
}
@objc func addAnnotation(gesture: UILongPressGestureRecognizer) {
if gesture.state == .ended {
let point = gesture.location(in: self.mapView) **<--- ERROR HERE**
let coordinate = mapView.convert(point, toCoordinateFrom: mapView)
var annotation = MKPointAnnotation()
annotation.coordinate = coordinate
self.mapView.addAnnotation(annotation) **<--- ERROR HERE**
}
}
}
}
struct EntireMapView_Previews: PreviewProvider {
static var previews: some View {
EntireMapView()
}
}