जगहों की सूची दिखाने वाला ऐडवांस कॉम्पोनेंट

जगहों की सूची दिखाने वाले ऐडवांस कॉम्पोनेंट की मदद से, जगहों की सूची तय की जा सकती है और उसे दिखाया जा सकता है. जगह के बारे में ज़्यादा जानकारी देने वाले कॉम्पोनेंट (जगह के आईडी, जगह के संसाधन के नाम या अक्षांश/देशांतर के कोऑर्डिनेट) से जुड़ी एक ही तरह की पहचानों के सेट से, ज़्यादा से ज़्यादा 20 जगहों को सूची में शामिल किया जा सकता है.

सूची को हॉरिज़ॉन्टल या वर्टिकल तरीके से दिखाया जा सकता है. डिफ़ॉल्ट रूप से, सूची वर्टिकल तरीके से दिखती है. सूची में शामिल हर आइटम के लिए, जगह की जानकारी देने वाले कॉम्पैक्ट और फ़ुल कार्ड में दिखने वाली जानकारी और कॉन्फ़िगरेशन के विकल्प उपलब्ध होते हैं.

सूची बनाने के लिए, AdvancedPlaceListView के orientation, placeIdentifiers, और configuration पैरामीटर का इस्तेमाल करें. ज़्यादा जानकारी के लिए, उदाहरण देखें.

बिलिंग

सूची के हर अनुरोध के लिए आपसे शुल्क लिया जाता है. सूची में किया गया कोई भी बदलाव, बिलिंग के लिए नया इवेंट होता है.

उदाहरण

इस सैंपल में, जगह की पहचान के आधार पर सूची बनाई जाती है. configuration पैरामीटर से पता चलता है कि सूची में शामिल हर आइटम में पता, रेटिंग, और टाइप के साथ-साथ अन्य विज़ुअल स्पेसिफ़िकेशन भी दिखेंगे. एक मुख्य ऐक्शन बनाया जाता है, ताकि उपयोगकर्ता सूची में शामिल हर आइटम को पसंदीदा के तौर पर सेव कर सके या उसे पसंदीदा से हटा सके. सूची में शामिल हर आइटम के लिए, कॉर्नर ऐक्शन बंद कर दिए जाते हैं.

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)
    }
  }
}