Gelişmiş Yer Arama bileşeni
Yer Arama bileşeninin Advanced sürümü, Yer Arama Essentials ile aynı özellikleri sunar. Ayrıca, bileşenin işlem düğmelerini yapılandırmanıza ve gösterilen yorumlara ve medyaya arama ve filtreleme seçenekleri uygulamanıza olanak tanır.
Gelişmiş Yer Arama yapılandırması
Gelişmiş özelliklere erişmek içinAdvancedPlaceSearchView'ı kullanın.
İşlem düğmelerini yapılandırma
İşlem düğmelerini kaldırmak veya özelleştirmek için AdvancedPlaceSearchView yönteminin .cornerActions ve .mainActions yöntemlerini kullanın.
Görsel ilişkilendirme koşulları
Önemli: Özel işlem düğmesi, kullanıcı bilgilerini Google dışında bir üçüncü tarafla paylaştığında bunu kullanıcılara açıkça belirtmeniz gerekir. Görsel ilişkilendirme koşullarını inceleyin.
Örnekte, kullanıcı bilgilerinin "Altostrat"a gönderileceğini açıkça belirten özel bir resim gösterilmektedir.
Arama ve filtreleme seçeneklerini uygulama
Medya veya yorumlarda arama ve filtrelemeyi etkinleştirmek için AdvancedPlaceSearchView'nin .searchMediaOptions ve .searchReviewOptions yöntemlerini kullanın.
Gelişmiş Yer Arama örnekleri
Ana işlem düğmesi oluşturma ve köşe işlemlerini kaldırma
Bu kod örneği, bir yeri favorilere eklemek veya favorilerden kaldırmak için ana işlem düğmesi oluşturur. Ayrıca, hiçbir köşe işleminin yapılandırılmadığından da emin olunur.
Swift
struct AdvancedPlaceSearchDemoView: View { private let configuration = AdvancedPlaceSearchConfiguration( content: [.address(), .rating(), .type()], preferTruncation: true, // default is false theme: PlacesMaterialTheme(), attributionPosition: .bottom, // default is top mediaSize = .medium, // default is .small selectable: true // default is false ) // can also do let placeSearchViewRequest = .searchNearby(...) to configure a searchNearby request @State private var placeSearchViewRequest = .searchByText( SearchByTextRequest( textQuery: "Googleplex", placeProperties: [.all], locationBias: CircularCoordinateRegion( center: CLLocationCoordinate2D(latitude: 0, longitude: 0), radius: 0 ) ) ) @State private var favoritePlaces: Set<String> = [] var body: some View { AdvancedPlaceSearchView( orientation: .horizontal, // default is vertical request: placeSearchViewRequest, configuration: configuration ) .onLoad { places in print("places: \(places)") } .onRequestError { error in 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) } } }
Yorumları ve medyayı filtreleme
Bu kod örneği, arama sonuçlarını yalnızca "kahve" kelimesinin geçtiği medya ve yorumları gösterecek şekilde filtreler.
Swift
struct DemoView: View { static let peetsCoffeePlaceID = "ChIJT7FdmYiAhYAROFOvrIxRJDU" // Query for loading the place details component. @State var query: PlaceDetailsQuery = PlaceDetailsQuery( identifier: .placeID(peetsCoffeePlaceID) ) let searchMediaOptions = SearchMediaOptions(query: "coffee", rankPreference: .newest) let searchReviewOptions = SearchReviewsOptions(query: "coffee", rankPreference: .newest) var body: some View { AdvancedPlaceDetailsView( query: $query, configuration: AdvancedPlaceDetailsConfiguration( content: [.media(), .reviews()], theme: PlacesMaterialTheme() ), placeDetailsCallback: { _ in } ) .searchMediaOptions(searchMediaOptions) { results in guard let result = results.first else { return } switch result { case .success(let summary): print("Summary: \(summary)") case .failure(let error): print("Error: \(error)") } } .searchReviewsOptions(searchReviewsOptions) { results in guard let result = results.first else { return } switch result { case .success(let summary): print("Summary: \(summary)") case .failure(let error): print("Error: \(error)") } } }