Набор пользовательского интерфейса Places Details (экспериментальный)

Детали места в компактном виде

Набор пользовательского интерфейса Place Details для Place Details позволяет добавить отдельный компонент пользовательского интерфейса, который отображает сведения о месте в вашем приложении. Набор пользовательского интерфейса можно использовать независимо или в сочетании с другими API и сервисами платформы Google Maps. Комплект пользовательского интерфейса принимает либо идентификатор места, либо координаты широты и долготы и возвращает визуализированную информацию о месте .

Комплект пользовательского интерфейса предлагает компактное представление, которое можно отображать горизонтально или вертикально. Вы можете настроить внешний вид сведений о месте, переопределив любой атрибут темы по умолчанию. Вы также можете настроить, какие поля сведений о месте будут включены, указав список записей Content , каждая из которых соответствует фрагменту информации, отображаемой о месте.

Биллинг

При использовании набора пользовательского интерфейса Place Details для Place Details вам выставляется счет за каждое место, загружаемое с помощью виджета. Если вы загружаете одно и то же место несколько раз, вам будет выставлен счет за каждый запрос.

Включите набор пользовательского интерфейса Places

Прежде чем использовать Places UI Kit, вам необходимо:

Примеры набора пользовательского интерфейса Place Details

Вы можете добавить информацию о месте в свое приложение, добавив фрагмент в макет. Создавая экземпляр фрагмента, вы можете настроить внешний вид информации о месте в соответствии с вашими потребностями и внешним видом вашего приложения.

Вы можете указать ориентацию (горизонтальную или вертикальную), переопределения темы и содержимое. Варианты контента: медиа, адрес, рейтинг, цена, тип, доступный вход, ссылка на карты и ссылка на маршруты. [См. пример настройки]().

val fragment = PlaceDetailsCompactFragment.newInstance(
  orientation,
  listOf(Content.ADDRESS, Content.TYPE, Content.RATING, Content.ACCESSIBLE_ENTRANCE),
  R.style.CustomizedPlaceDetailsTheme,
)
      
fragment.setPlaceLoadListener(object : PlaceLoadListener {
    override fun onSuccess() { ... }
      
      override fun onFailure(e: Exception) { ... }
})
      
supportFragmentManager
  .beginTransaction()
  .add(R.id.fragment_container, fragment)
  .commitNow()
      
fragment.loadPlaceDetails(placeId)
      
PlaceDetailsCompactFragment fragment =
  PlaceDetailsCompactFragment.newInstance(
        Orientation.HORIZONTAL,
        Arrays.asList(Content.ADDRESS, Content.TYPE, Content.RATING, Content.ACCESSIBLE_ENTRANCE),
        R.style.CustomizedPlaceDetailsTheme);
    
fragment.setPlaceLoadListener(
  new PlaceLoadListener() {
        @Override
        public void onSuccess() { ... }
    
        @Override
        public void onFailure(Exception e) { ... }
});
    
getSupportFragmentManager()
      .beginTransaction()
      .add(R.id.fragment_container, fragment)
      .commitNow();
    
fragment.loadPlaceDetails(placeId);

Пример настройки

При создании экземпляра фрагмента вы можете указать тему, которая переопределяет любые атрибуты стиля по умолчанию. Любые атрибуты темы, которые не переопределены, используют стили по умолчанию. Если вы хотите поддерживать темную тему, вы можете добавить запись о цвете в values-night/colors.xml .

  <style name="CustomizedPlaceDetailsTheme" parent="PlacesTheme">
    <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>

Вы можете настроить следующие стили:

  • placesColorSurfaceContainerLowest
  • placesColorOutlineDecorative
  • placesColorPrimary
  • placesColorOnSurface
  • placesColorOnSurfaceVariant
  • placesColorSecondaryContainer
  • placesColorOnSecondaryContainer
  • placesCornerRadius
  • placesTextAppearanceBodySmall
  • placesTextAppearanceBodyMedium
  • placesTextAppearanceBodyLarge
  • placesTextAppearanceLabelLarge
  • placesTextAppearanceHeadlineMedium
  • placesColorAttributionLight (перечисления для белого, серого и черного)
  • placesColorAttributionDark (перечисления для белого, серого и черного)

В этом примере настраивается стандартное содержимое.

  val fragmentStandardContent = PlaceDetailsCompactFragment.newInstance(
  orientation,
  PlaceDetailsCompactFragment.STANDARD_CONTENT,
  R.style.BrandedPlaceDetailsTheme,
)

В этом примере настраивается все содержимое.

  val fragmentAllContent = PlaceDetailsCompactFragment.newInstance(
  orientation,
  PlaceDetailsCompactFragment.ALL_CONTENT,
  R.style.BrandedPlaceDetailsTheme,
)