Componente Advanced Place List
El componente Advanced Place List te permite definir y mostrar una lista de lugares. Puedes enumerar hasta 20 lugares del mismo conjunto de identidades que admite el componente Place Details (IDs de lugar, nombres de recursos de lugar o coordenadas de latitud y longitud).
Puedes elegir entre una visualización de lista horizontal o vertical. La orientación predeterminada es vertical. Para cada elemento de la lista, se encuentran disponibles la misma información y las mismas opciones de configuración que en las tarjetas de detalles del lugar compactas y completas.
Usa los parámetrosorientation, placeIdentifiers y configuration de AdvancedPlaceListView para crear una lista. Consulta Ejemplo para obtener más detalles.
Facturación
Se te factura por cada solicitud de lista, y cualquier cambio en la lista es un evento facturable nuevo.
Ejemplo
En este ejemplo, se crea una lista basada en identificadores de lugar. El parámetro configuration especifica que cada elemento de la lista mostrará la dirección, la calificación y el tipo, junto con otras especificaciones visuales. Se crea una acción principal para permitir que el usuario agregue o quite de favoritos cada elemento de la lista. Las acciones de esquina están inhabilitadas para cada elemento de la lista.
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) } } }