请选择平台: Android iOS JavaScript

“地点搜索”组件

Places 界面套件的“地点搜索”组件会在列表中呈现地点搜索结果。

Places UI Kit 地点搜索组件

您可以自定义地点搜索列表。您可以指定:

  • 要显示的内容
  • 垂直方向的媒体尺寸
  • 文本截断
  • 方向
  • 与您的品牌和应用的设计语言相匹配的主题替换项
  • 注明内容来源的位置
  • 相应地点是否可供选择

您还可以自定义请求,以执行 Search by text requestSearch Nearby request

结算

每次更改 configureFromSearchByTextRequest()configureFromSearchNearbyRequest() 绑定值时,系统都会向您收取费用。

向您的应用添加地点搜索功能

通过将 PlaceSearchFragment fragment 添加到布局来使用地点搜索 widget。

当您希望应用加载文字搜索或附近搜索结果时,请使用相应请求调用 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 的地址和评分。

Kotlin

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

Java

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

您还可以选择自定义地点搜索组件中显示的内容的以下方面:

将自定义配置添加到 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
)
      

自定义主题

实例化 fragment 时,您可以指定一个主题来替换任何默认样式属性。默认值为 PlacesMaterialTheme。如需详细了解主题设置,请参阅 Place Details Component 文档

未被覆盖的任何主题背景属性都将使用默认样式。如果您想支持深色主题,可以在 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)