Wybierz platformę: Android iOS JavaScript

Komponent Wyszukiwanie miejsc

Komponent Wyszukiwanie miejsc w ramach interfejsu Places UI Kit renderuje wyniki wyszukiwania miejsca w postaci listy.

Komponent Wyszukiwanie miejsc w interfejsie Places UI Kit

Możesz dostosować listę wyszukiwania miejsc. Możesz określić:

  • treści do wyświetlenia,
  • Rozmiar multimediów w orientacji pionowej
  • Obcinanie tekstu
  • Orientacja
  • Zastąpienia motywu, które pasują do Twojej marki i języka projektowania aplikacji.
  • Pozycja atrybucji
  • Czy miejsce można wybrać

Możesz też dostosować żądanie, aby wykonać Search by text request lub Search Nearby request.

Płatności

Opłata jest naliczana za każdym razem, gdy zmieni się wartość powiązania configureFromSearchByTextRequest() lub configureFromSearchNearbyRequest().

Dodawanie wyszukiwania miejsc do aplikacji

Użyj widżetu wyszukiwania miejsc, dodając do układu PlaceSearchFragment fragment.

Jeśli chcesz, aby aplikacja wczytała wyniki wyszukiwania tekstowego lub wyszukiwania w pobliżu, wywołaj funkcję configureFromSearchByTextRequest() lub configureFromSearchNearbyRequest() z odpowiednim żądaniem.

Kotlin

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

Java

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

Możesz też dodać do komponentu opcjonalny element PlaceSearchFragmentListener, aby otrzymywać wywołania zwrotne, gdy komponent się wczyta, gdy zostanie wybrane miejsce (jeśli komponent ma być wybieralny) lub gdy wystąpi błąd wczytywania komponentu.

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

Dostosowywanie komponentu Wyszukiwanie miejsc

Dostosowywanie treści

Musisz określić, jakie treści będzie wyświetlać komponent.

W tym przykładzie komponent jest skonfigurowany tak, aby wyświetlać adres i ocenę miejsca.

Kotlin

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

Java

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

Możesz też opcjonalnie dostosować te aspekty treści wyświetlanych w komponencie wyszukiwania miejsca:

  • PlaceSearchFragment.Content: treść wyświetlana w komponencie.
  • mediaSize: rozmiar zdjęcia w orientacji pionowej fragmentu. Wartość domyślna to SMALL.
  • preferTruncation: czy tekst w każdym widoku szczegółów miejsca ma być obcięty.
  • attributionPosition: czy atrybucja Map Google ma się wyświetlać u góry czy u dołu komponentu.
  • selectable: czy każde miejsce na liście można wybrać.

Dodaj konfigurację dostosowywania do pliku 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)
    

Dostosowywanie orientacji

Domyślna orientacja to pionowa. W przypadku orientacji poziomej w polu PlaceSearchFragment.newInstance() wpisz Orientation.HORIZONTAL.

Kotlin

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

Java

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

Dostosowywanie motywu

Podczas tworzenia instancji fragmentu możesz określić motyw, który zastąpi dowolne domyślne atrybuty stylu. Wartość domyślna to PlacesMaterialTheme. Więcej informacji o motywach znajdziesz w dokumentacji komponentu szczegółów miejsca.

Wszystkie atrybuty motywu, które nie zostały zastąpione, używają stylów domyślnych. Jeśli chcesz obsługiwać ciemny motyw, możesz dodać wpis dla koloru w pliku 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>

Przykład

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)