Bonjour,
Avec IOS 17 et les changement dans SwiftUI, je ne maitrise plus bien l’affichage de points sur une carte.
Dans l’exemple ci-après seul le premier point du tableau s’affiche, je suppose que j’ai une erreur dans la boucle.
import SwiftUI
import MapKit
struct PointsModel:Identifiable {
var id:UUID = UUID()
var nom:String
var coordonnee:CLLocationCoordinate2D
var logo:String
}
struct ContentView: View {
@State private var positionCamera:MapCameraPosition = .region(.userRegion)
private var listePoints:[PointsModel] = [PointsModel(
nom: "chateau",
coordonnee: CLLocationCoordinate2D(
latitude: 47.4698,
longitude: 0.5593),
logo: "house"),
PointsModel(nom: "Cathédrale",
coordonnee: CLLocationCoordinate2D(
latitude: 47.4705766813,
longitude: -0.554865612818),
logo: "house.circle.fill"),
PointsModel(nom: "aeroport",
coordonnee: CLLocationCoordinate2D(
latitude: 47.5635,
longitude: -0.3157),
logo: "airplane")]
var body: some View {
Map(initialPosition: positionCamera) {
ForEach(listePoints) { point in
Annotation(point.nom, coordinate: point.coordonnee) {
Image(systemName: point.logo)
.cornerRadius(3.0)
.padding(2)
.background(.red)
}
}
}
.mapControls {
MapCompass()
MapPitchToggle()
MapUserLocationButton()
}
}
}
// //Retourne l'emplacement de la carte à afficher
extension CLLocationCoordinate2D {
static var userLocation:CLLocationCoordinate2D {
return .init(latitude: 47.478419, longitude: -0.563166)
}
}
//definition de detail de la carte
extension MKCoordinateRegion {
static var userRegion:MKCoordinateRegion {
return .init(center: .userLocation,
latitudinalMeters: 500,
longitudinalMeters: 10000)
}
}
#Preview {
ContentView()
}