Yer Arama bileşeni
Places UI Kit'in Yer Arama bileşeni, yer arama sonuçlarını bir listede oluşturur.

Yer Arama listesini özelleştirebilirsiniz. Şunları belirtebilirsiniz:
- Gösterilecek içerik
- Dikey yönde medya boyutu
- Metin kesme
- Yön
- Markanızın ve uygulamanızın tasarım diline uygun tema geçersiz kılma işlemleri
- İlişkilendirmenin konumu
- Bir yerin seçilebilir olup olmadığı
İsteği Search by text request
veya Search Nearby request
işlemi yapacak şekilde de özelleştirebilirsiniz.
Faturalandırma
SearchByTextRequest()
veya PlaceSearchViewRequest()
bağlama değeri her değiştirildiğinde faturalandırılırsınız.
Uygulamanıza Yer Arama ekleme
PlaceSearchView class
simgesini kullanarak Yer Arama widget'ını ekleyin.
Swift
PlaceSearchView( orientation: .horizontal, // default is vertical request: $placeSearchViewRequest, configuration: configuration )
Uygulamanızın bir metin arama veya yakındaki arama sonucu yüklemesini istediğinizde PlaceSearchViewRequest
değerinizi güncelleyin.
Swift
// use placeSearchViewRequest = .searchNearby(...) to configure a searchNearby request @State private var let placeSearchViewRequest = .searchByText( SearchByTextRequest( textQuery: "Googleplex", placeProperties: [.all], locationBias: CircularCoordinateRegion( center: CLLocationCoordinate2D(latitude: 0, longitude: 0), radius: 0 ) ) )
Bileşen yüklendiğinde, bir yer seçildiğinde veya bileşeni yüklerken bir hata oluştuğunda geri arama da alabilirsiniz.
Swift
.onLoad { places in print("places: \(places)") } .onRequestError { error in print("error: \(error)") } .onPlaceSelected { place in print("place: \(place)") }
Yer Arama bileşenini özelleştirme
İçeriği özelleştirme
Bileşeninizin hangi içeriği göstereceğini belirtmeniz gerekir.Bu örnekte, bileşen, yerin adresini ve puanını gösterecek şekilde yapılandırılır.
Swift
private let configuration = PlaceSearchConfiguration( content: [.address(), .rating()] )
Ayrıca, yer arama bileşeninizde görünen içeriğin aşağıdaki yönlerini isteğe bağlı olarak özelleştirebilirsiniz:
content
: Bileşende gösterilen içerik.mediaSize
: Parçanın dikey yönündeki fotoğraf boyutu. Varsayılan değer küçüktür. İçerikte belirtilir.preferTruncation
: Her bir yer ayrıntıları görünümünün metninin kesilip kesilmeyeceği. Varsayılan değer false'tur.theme
: PlacesMaterialTheme'den devralınan özel temanız. Temalar hakkında daha fazla bilgi edinin.attributionPosition
: Google Haritalar ilişkilendirmesinin bileşenin üstünde mi yoksa altında mı gösterileceği. Varsayılan değer .top'tur.selectable
: Listedeki her yerin seçilebilir olup olmadığı. Seçilebiliyorsa bir yer seçildikten sonraonPlaceSelected
kapatma işlemi çağrılır. Varsayılan değer false'tur.
Özelleştirme yapılandırmanızı PlaceSearchConfiguration
'ye ekleyin.
Swift
private let configuration = PlaceSearchConfiguration( content: [.address, .rating, .media(size: .large)], preferTruncation: true, // default is false theme: PlacesMaterialTheme(), attributionPosition: .bottom, // default is top selectable: true // default is false )
Yönü özelleştirme
Varsayılan yön dikeydir. PlaceSearchView
içinde yatay yön belirtebilirsiniz.
Swift
PlaceSearchView( orientation: .horizontal, // default is vertical request: $placeSearchViewRequest, configuration: configuration )
Temayı özelleştirme
Varsayılan stil özelliklerinden herhangi birini geçersiz kılan bir tema belirtebilirsiniz. Varsayılan değer PlacesMaterialTheme
'dir. Tema oluşturma hakkında daha fazla bilgi için Yer Ayrıntıları bileşeni belgelerini inceleyin.
Swift
@Environment(\.colorScheme) var colorScheme var theme: PlacesMaterialTheme { if customTheme { var theme = PlacesMaterialTheme() var color = PlacesMaterialColor() color.surface = (colorScheme == .dark ? .blue : .gray) color.outlineDecorative = (colorScheme == .dark ? .white : .black) color.onSurface = (colorScheme == .dark ? .yellow : .red) color.onSurfaceVariant = (colorScheme == .dark ? .white : .blue) color.onSecondaryContainer = (colorScheme == .dark ? .white : .red) color.secondaryContainer = (colorScheme == .dark ? .green : .purple) color.positive = (colorScheme == .dark ? .yellow : .red) color.primary = (colorScheme == .dark ? .yellow : .purple) color.info = (colorScheme == .dark ? .yellow : .purple) var shape = PlacesMaterialShape() shape.cornerRadius = 10 var font = PlacesMaterialFont() font.labelLarge = .system(size: UIFontMetrics.default.scaledValue(for: 18)) font.headlineMedium = .system(size: UIFontMetrics.default.scaledValue(for: 15)) font.bodyLarge = .system(size: UIFontMetrics.default.scaledValue(for: 15)) font.bodyMedium = .system(size: UIFontMetrics.default.scaledValue(for: 12)) font.bodySmall = .system(size: UIFontMetrics.default.scaledValue(for: 11)) var attribution = PlacesMaterialAttribution() attribution.lightModeColor = .black attribution.darkModeColor = .white theme.color = color theme.shape = shape theme.font = font theme.attribution = attribution } else { return PlacesMaterialTheme() } }
Örnek
Swift
struct PlaceSearchDemoView: View { private let configuration = PlaceSearchConfiguration( content: [.address(), .rating(), .type(), .media(size: .large)], preferTruncation: true, // default is false theme: PlacesMaterialTheme(), attributionPosition: .bottom, // default is top selectable: true // default is false ) // can also do let placeSearchViewRequest = .searchNearby(...) to configure a searchNearby request @State private var placeSearchViewRequest: PlaceSearchViewRequest = .searchByText( SearchByTextRequest( textQuery: "Googleplex", placeProperties: [.all], locationBias: CircularCoordinateRegion( center: CLLocationCoordinate2D(latitude: 0, longitude: 0), radius: 0 ) ) ) var body: some View { PlaceSearchView( orientation: .horizontal, // default is vertical request: $placeSearchViewRequest, configuration: configuration ) .onLoad { places in print("places: \(places)") } .onRequestError { error in print("error: \(error)") } .onPlaceSelected { place in print("place: \(place)") } } }