Composant Advanced Place List
Le composant "Liste de lieux avancée" vous permet de définir et d'afficher une liste de lieux. Vous pouvez lister jusqu'à 20 lieux à partir du même ensemble d'identités compatibles avec le composant Place Details (ID de lieu, noms de ressources de lieu ou coordonnées de latitude/longitude).
Vous pouvez choisir d'afficher la liste horizontalement ou verticalement. L'orientation par défaut est verticale. Les mêmes informations et options de configuration que celles des fiches compactes et complètes d'informations sur les lieux sont disponibles pour chaque élément de la liste.
Utilisez les paramètresorientation, placeIdentifiers et configuration de AdvancedPlaceListView pour créer une liste. Pour en savoir plus, consultez Exemple.
Facturation
Chaque demande de liste vous est facturée, et toute modification apportée à la liste constitue un nouvel événement facturable.
Exemple
Cet exemple crée une liste basée sur des identifiants de lieux. Le paramètre configuration spécifie que chaque élément de la liste affichera l'adresse, la note et le type, ainsi que d'autres spécifications visuelles. Une action principale est créée pour permettre à un utilisateur d'ajouter ou de supprimer chaque élément de la liste de ses favoris. Les actions d'angle sont désactivées pour chaque élément de la liste.
Swift
struct AdvancedPlaceListDemoView: View { private let configuration = AdvancedPlaceListConfiguration( content: [.address(), .rating(), .type()], preferTruncation: true, theme: PlacesMaterialTheme(), attributionPosition: .bottom, mediaSize = .medium, selectable: true ) @State private var placeIdentifiers = [.placeID("ChIJj61dQgK6j4AR4GeTYWZsKWw")] @State private var favoritePlaces: Set<String> = [] var body: some View { AdvancedPlaceListView( orientation: .horizontal, // default is vertical placeIdentifiers: placeIdentifiers, configuration: configuration ) .onLoad { results in for result in results { switch result { case .success(let place) print("place: \(place)") case .failure(let error) print("error: \(error)") } } } .onPlaceSelected { place, index in print("place: \(place)") print("index: \(index)") } .mainActions { place in var actions: [MainPlaceActionElement] = [] let placeID = place.placeID! if self.favoritePlaces.contains(placeID) { actions.append( .action( MainPlaceAction( image: Image(systemName: "heart.fill"), label: "Unfavorite" ) { _ in self.toggleFavorite(placeID) } ) ) } else { actions.append( .action( MainPlaceAction( image: Image(systemName: "heart"), label: "Favorite" ) { _ in self.toggleFavorite(placeID) } ) ) } actions.append(.actionId(.openMap(style: .primary))) return actions } // Ensures that there are no corner actions. .cornerActions { _ in return [] } } func toggleFavorite(_ placeID: String) { if favoritePlaces.contains(placeID) { favoritePlaces.remove(placeID) } else { favoritePlaces.insert(placeID) } } }