플랫폼 선택: Android iOS JavaScript

장소 검색 구성요소

Places UI Kit의 장소 검색 구성요소는 장소 검색 결과를 목록에 렌더링합니다.

장소 UI 키트 장소 검색 구성요소

장소 검색 목록을 맞춤설정할 수 있습니다. 다음 항목을 지정할 수 있습니다.

  • 표시할 콘텐츠
  • 세로 방향의 미디어 크기
  • 텍스트 자르기
  • 방향
  • 브랜드 및 앱의 디자인 언어와 일치하는 테마 재정의
  • 저작자 표시의 위치
  • 장소를 선택할 수 있는지 여부

Search by text request 또는 Search Nearby request을 실행하도록 요청을 맞춤설정할 수도 있습니다.

결제

configureFromSearchByTextRequest() 또는 configureFromSearchNearbyRequest() 바인딩 값이 변경될 때마다 요금이 청구됩니다.

앱에 장소 검색 추가

레이아웃에 PlaceSearchFragment 프래그먼트를 추가하여 장소 검색 위젯을 사용합니다.

앱이 텍스트 검색 또는 주변 검색 결과를 로드하도록 하려면 요청과 함께 configureFromSearchByTextRequest() 또는 configureFromSearchNearbyRequest()를 호출합니다.

Kotlin

fragment.configureFromSearchByTextRequest(searchByTextRequest)

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

자바

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

자바

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

장소 검색 구성요소 맞춤설정

콘텐츠 맞춤설정

구성요소가 표시할 콘텐츠를 지정해야 합니다.

이 예에서는 장소의 주소와 평점을 표시하도록 구성요소를 구성합니다.

Kotlin

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

자바

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

선택적으로 장소 검색 구성요소에 표시되는 콘텐츠의 다음 측면을 맞춤설정할 수도 있습니다.

  • PlaceSearchFragment.Content: 구성요소에 표시되는 콘텐츠입니다.
  • mediaSize: 프래그먼트의 세로 방향에 있는 사진 크기입니다. 기본값은 SMALL입니다.
  • preferTruncation: 각 장소 세부정보 뷰의 텍스트를 자를지 여부입니다.
  • attributionPosition: Google 지도 저작자 표시를 구성요소의 상단에 표시할지 하단에 표시할지 여부입니다.
  • selectable: 목록의 각 장소를 선택할 수 있는지 여부입니다.

PlaceSearchFragment에 맞춤설정 구성을 추가합니다.

Kotlin

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

자바

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
)
    

자바

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

테마 맞춤설정

프래그먼트를 인스턴스화할 때 기본 스타일 속성을 재정의하는 테마를 지정할 수 있습니다. 기본값은 PlacesMaterialTheme입니다. 테마에 관한 자세한 내용은 장소 세부정보 구성요소 문서를 참고하세요.

재정의되지 않은 테마 속성은 기본 스타일을 사용합니다. 어두운 테마를 지원하려면 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)