Sélectionnez une plate-forme : Android iOS JavaScript

Composant Place Search

Le composant Place Search du kit d'interface utilisateur Places affiche les résultats d'une recherche de lieu dans une liste.

Composant Place Search du Kit UI pour Places

Vous pouvez personnaliser la liste de recherche de lieux. Vous pouvez spécifier ce qui suit :

  • Le contenu à afficher
  • Taille du support en orientation verticale
  • Troncation du texte
  • Orientation
  • Remplacements de thème correspondant à la langue de conception de votre marque et de votre application
  • Position de l'attribution
  • Indique si un lieu peut être sélectionné.

Vous pouvez également personnaliser la requête pour effectuer une Search by text request ou une Search Nearby request.

Facturation

Vous êtes facturé chaque fois que la valeur de liaison configureFromSearchByTextRequest() ou configureFromSearchNearbyRequest() est modifiée.

Ajouter la recherche de lieux à votre application

Utilisez le widget Place Search en ajoutant le Fragment PlaceSearchFragment à votre mise en page.

Lorsque vous souhaitez que votre application charge un résultat de recherche textuelle ou de recherche à proximité, appelez configureFromSearchByTextRequest() ou configureFromSearchNearbyRequest() avec la requête.

Kotlin

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

Java

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

Vous pouvez également ajouter un PlaceSearchFragmentListener facultatif au composant pour recevoir des rappels lorsque le composant se charge, qu'un lieu est sélectionné (si la sélection est activée) ou qu'une erreur se produit lors du chargement du composant.

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

Personnaliser le composant Place Search

Personnaliser le contenu

Vous devez spécifier le contenu que votre composant affichera.

Cet exemple configure le composant pour afficher l'adresse et la note du lieu.

Kotlin

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

Java

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

Vous pouvez également personnaliser les aspects suivants du contenu qui s'affiche dans votre composant Place Search :

  • PlaceSearchFragment.Content : contenu affiché dans le composant.
  • mediaSize : taille de la photo dans l'orientation verticale du fragment. La valeur par défaut est SMALL.
  • preferTruncation : indique si le texte de chaque vue Détails du lieu doit être tronqué.
  • attributionPosition : indique si l'attribution Google Maps doit s'afficher en haut ou en bas du composant.
  • selectable : indique si chaque lieu de la liste peut être sélectionné.

Ajoutez votre configuration de personnalisation à 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)
    

Personnaliser l'orientation

L'orientation par défaut est verticale. Pour l'orientation horizontale, spécifiez Orientation.HORIZONTAL dans PlaceSearchFragment.newInstance().

Kotlin

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

Java

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

Personnaliser le thème

Lorsque vous instanciez un fragment, vous pouvez spécifier un thème qui remplace l'un des attributs de style par défaut. La valeur par défaut est PlacesMaterialTheme. Pour en savoir plus sur les thèmes, consultez la documentation sur le composant Détails du lieu.

Tous les attributs de thème qui ne sont pas remplacés utilisent les styles par défaut. Si vous souhaitez prendre en charge un thème sombre, vous pouvez ajouter une entrée pour la couleur dans 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>

Exemple

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)