プラットフォームを選択: Android iOS JavaScript

Place Search コンポーネント

Places UI キットの Place Search コンポーネントは、場所検索の結果をリストにレンダリングします。

Places UI キットの Place Search コンポーネント

場所検索のリストはカスタマイズできます。次の項目を指定できます。

  • 表示するコンテンツ
  • 縦向きのメディア サイズ
  • テキストの切り捨て
  • 向き
  • ブランドとアプリのデザイン言語に合わせたテーマのオーバーライド
  • アトリビューションの位置
  • 場所を選択できるかどうか

リクエストをカスタマイズして、Search by text request または Search Nearby request を実行することもできます。

課金

configureFromSearchByTextRequest() または configureFromSearchNearbyRequest() バインディング値が変更されるたびに、課金されます。

アプリにプレイス検索を追加する

レイアウトに PlaceSearchFragment Fragment を追加して、プレイス検索ウィジェットを使用します。

アプリでテキスト検索または周辺検索の結果を読み込む場合は、リクエストとともに configureFromSearchByTextRequest() または configureFromSearchNearbyRequest() を呼び出します。

Kotlin

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

Java

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

コンポーネントにオプションの PlaceSearchFragmentListener を追加して、コンポーネントの読み込み時、場所の選択時(選択可能に設定されている場合)、コンポーネントの読み込みエラー発生時にコールバックを受け取ることもできます。

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

Place Search コンポーネントをカスタマイズする

コンテンツのカスタマイズ

コンポーネントに表示するコンテンツを指定する必要があります。

この例では、場所の住所と評価を表示するようにコンポーネントを構成します。

Kotlin

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

Java

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

プレイス検索コンポーネントに表示されるコンテンツの次の側面を必要に応じてカスタマイズすることもできます。

  • PlaceSearchFragment.Content: コンポーネントに表示されるコンテンツ。
  • mediaSize: フラグメントの縦向きの写真のサイズ。デフォルトは SMALL です。
  • preferTruncation: 各 Place Details ビューのテキストを切り詰めるかどうか。
  • attributionPosition: Google マップの帰属表示をコンポーネントの上部または下部に表示するかどうか。
  • selectable: リスト内の各場所が選択可能かどうか。

カスタマイズ構成を 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)
    

向きをカスタマイズする

デフォルトの向きは縦向きです。横向きの場合は、PlaceSearchFragment.newInstance()Orientation.HORIZONTAL を指定します。

Kotlin

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

Java

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

テーマをカスタマイズする

フラグメントをインスタンス化するときに、デフォルトのスタイル属性をオーバーライドするテーマを指定できます。デフォルトは PlacesMaterialTheme です。テーマ設定について詳しくは、Place Details コンポーネントのドキュメントをご覧ください。

オーバーライドされていないテーマ属性は、デフォルト スタイルを使用します。ダークモードをサポートする場合は、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>

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)