Seleziona la piattaforma: Android iOS JavaScript

Componente Place Search

Il componente Place Search del Places UI Kit esegue il rendering dei risultati di una ricerca di luoghi in un elenco.

Componente Place Search di Places UI Kit

Puoi personalizzare l'elenco Ricerca luoghi. Puoi specificare:

  • I contenuti da visualizzare
  • Dimensioni dei contenuti multimediali in orientamento verticale
  • Troncamento testo
  • L'orientamento
  • Override del tema che corrispondono al brand e al linguaggio di progettazione dell'app
  • La posizione dell'attribuzione
  • Se un luogo è selezionabile

Puoi anche personalizzare la richiesta per eseguire un'Search by text request o un Search Nearby request.

Fatturazione

L'addebito viene effettuato ogni volta che viene modificato il valore di binding configureFromSearchByTextRequest() o configureFromSearchNearbyRequest().

Aggiungere la ricerca di luoghi all'app

Utilizza il widget Ricerca luoghi aggiungendo il PlaceSearchFragment frammento al tuo layout.

Quando vuoi che la tua app carichi una ricerca di testo o un risultato di ricerca nelle vicinanze, chiama configureFromSearchByTextRequest() o configureFromSearchNearbyRequest() con la richiesta.

Kotlin

fragment.configureFromSearchByTextRequest(searchByTextRequest)

// or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search

Java

fragment.configureFromSearchByTextRequest(searchByTextRequest)

// or fragment.configureFromSearchNearbyRequest(searchNearbyRequest) for nearby search
    

Puoi anche aggiungere un PlaceSearchFragmentListener facoltativo al componente per ricevere callback quando il componente viene caricato, viene selezionato un luogo (se impostato come selezionabile) o quando si verifica un errore durante il caricamento del componente.

Kotlin

fragment.registerListener(
  object : PlaceSearchFragmentListener {
    override fun onLoad(places: List<Place>) {...}
    override fun onRequestError(e: Exception) {...}
    override fun onPlaceSelected(place: Place) {...}
  }
)
  

Java

fragment.registerListener(
  new PlaceSearchFragmentListener() {
    @Override public void onLoad(List<? extends Place> places) {...}
    @Override public void onRequestError(Exception e) {...}
    @Override public void onPlaceSelected(Place place) {...}
  }
)
    

Personalizzare il componente Place Search

Personalizzare i contenuti

Devi specificare i contenuti che verranno visualizzati dal componente.

Questo esempio configura il componente per visualizzare l'indirizzo e la valutazione del luogo.

Kotlin

val fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS, Content.RATING))
    

Java

PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(listOf(Content.ADDRESS,Content.RATING));
    

Puoi anche personalizzare facoltativamente i seguenti aspetti dei contenuti visualizzati nel componente Ricerca luoghi:

  • PlaceSearchFragment.Content: i contenuti mostrati nel componente.
  • mediaSize: le dimensioni della foto nell'orientamento verticale del frammento. Il valore predefinito è SMALL.
  • preferTruncation: indica se troncare il testo di ogni visualizzazione dei dettagli del luogo.
  • attributionPosition: indica se mostrare l'attribuzione di Google Maps nella parte superiore o inferiore del componente.
  • selezionabile: indica se ogni luogo nell'elenco è selezionabile.

Aggiungi la configurazione di personalizzazione a PlaceSearchFragment.

Kotlin

fragment.preferTruncation = false
fragment.attributionPosition = AttributionPosition.BOTTOM
fragment.mediaSize = MediaSize.SMALL
fragment.selectable = true
    

Java

fragment.setPreferTruncation(false)
fragment.setAttributionPosition(AttributionPosition.BOTTOM)
fragment.setMediaSize(MediaSize.SMALL)
fragment.setSelectable(true)
    

Personalizzare l'orientamento

L'orientamento predefinito è verticale. Per l'orientamento orizzontale, specifica Orientation.HORIZONTAL in PlaceSearchFragment.newInstance().

Kotlin

PlaceSearchFragment.newInstance(
    PlaceSearchFragment.ALL_CONTENT,
    Orientation.HORIZONTAL
)
    

Java

PlaceSearchFragment.newInstance(
    PlaceSearchFragment.ALL_CONTENT,
    Orientation.HORIZONTAL
)
      

Personalizzare il tema

Quando istanzi un frammento, puoi specificare un tema che esegue l'override di uno qualsiasi degli attributi di stile predefiniti. Il valore predefinito è PlacesMaterialTheme. Per ulteriori informazioni sui temi, consulta la documentazione del componente Dettagli luogo.

Gli attributi del tema non sostituiti utilizzano gli stili predefiniti. Se vuoi supportare un tema scuro, puoi aggiungere una voce per il colore in values-night/colors.xml.

 <style name="CustomizedTheme" parent="PlacesMaterialTheme">
    <item name="placesColorPrimary">@color/app_primary_color</item>
    <item name="placesColorOnSurface">@color/app_color_on_surface</item>
    <item name="placesColorOnSurfaceVariant">@color/app_color_on_surface</item>
  
    <item name="placesTextAppearanceBodySmall">@style/app_text_appearence_small</item>
  
    <item name="placesCornerRadius">20dp</item>
  </style>

Esempio

Kotlin

val fragment: PlaceSearchFragment =
PlaceSearchFragment.newInstance(PlaceSearchFragment.STANDARD_CONTENT)

fragment.preferTruncation = false
fragment.attributionPosition = AttributionPosition.BOTTOM
fragment.mediaSize = MediaSize.SMALL
fragment.selectable = true

fragment.registerListener(
  object : PlaceSearchFragmentListener {
    override fun onLoad(places: List<Place>) {...}
    override fun onRequestError(e: Exception) {...}
    override fun onPlaceSelected(place: Place) {...}
  }
)

supportFragmentManager
  .beginTransaction()
  .replace(R.id.fragment_container, fragment)
  .commitNow()

fragment.configureFromSearchByTextRequest(searchByTextRequest)
    

Java

PlaceSearchFragment fragment = PlaceSearchFragment.newInstance(PlaceSearchFragment.STANDARD_CONTENT);

fragment.setPreferTruncation(false)
fragment.setAttributionPosition(AttributionPosition.BOTTOM)
fragment.setMediaSize(MediaSize.SMALL)
fragment.setSelectable(true)

fragment.registerListener(
  new PlaceSearchFragmentListener() {
      @Override public void onLoad(List<? extends Place> places) {...}
      @Override public void onRequestError(Exception e) {...}
      @Override public void onPlaceSelected(Place place) {...}
  }
)

getSupportFragmentManager()
  .beginTransaction()
  .replace(R.id.fragment_container, fragment)
  .commitNow();

fragment.configureFromSearchByTextRequest(searchByTextRequest)