Thành phần Danh sách địa điểm nâng cao
Thành phần Danh sách địa điểm nâng cao cho phép bạn xác định và hiển thị danh sách địa điểm. Bạn có thể liệt kê tối đa 20 địa điểm từ cùng một tập hợp danh tính mà thành phần Chi tiết địa điểm hỗ trợ (Mã địa điểm, Tên tài nguyên địa điểm hoặc toạ độ vĩ độ/kinh độ).
Bạn có thể chọn hiển thị danh sách theo chiều ngang hoặc chiều dọc. Hướng mặc định là hướng dọc. Bạn có thể sử dụng cùng một thông tin và các lựa chọn cấu hình như thẻ chi tiết địa điểm đầy đủ và thẻ chi tiết địa điểm thu gọn cho từng mục trong danh sách.
Sử dụng các tham sốorientation, placeIdentifiers và configuration của AdvancedPlaceListView để tạo danh sách. Hãy xem Ví dụ để biết thêm thông tin.
Thanh toán
Bạn sẽ bị tính phí cho mỗi yêu cầu về danh sách và mọi thay đổi đối với danh sách đều là một sự kiện mới có tính phí.
Ví dụ
Mẫu này tạo danh sách dựa trên mã nhận dạng địa điểm. Tham số configuration chỉ định rằng mỗi mục trong danh sách sẽ liệt kê địa chỉ, điểm xếp hạng và loại, cùng với các thông số kỹ thuật khác về hình ảnh. Một thao tác chính được tạo để cho phép người dùng thêm hoặc xoá từng mục trong danh sách khỏi danh sách yêu thích. Các thao tác ở góc bị tắt đối với từng mục trong danh sách.
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) } } }