Значки мест

Выберите платформу: Android iOS JavaScript Веб-сервисы

Значки мест служат для обозначения мест разных типов (например, кофеен, библиотек и музеев). Получать URL-адреса значков в формате PNG, а также цвет их фона можно с помощью запросов Current Place и Place Details.

Чтобы запросить изображение значка и цвет фона для места, добавьте в запрос следующие поля:

  • GMSPlaceFieldIconImageURL
  • GMSPlaceFieldIconBackgroundColor

В примерах ниже показано, как использовать значок и цвет фона из запроса Current Place или Place Details.

Places Swift SDK для iOS

// Initialize Places Swift client
let placesClient = PlacesClient.shared
      
// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.displayName, .iconMaskURL, .iconBackgroundColor]
)
      
Task {
      switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
        case .success(let place):
        // Print displayName using String(describing:)
        print("The selected place is: \(String(describing: place.displayName))")

        // We primarily need the iconMaskURL to proceed with image loading.
        // iconBackgroundColor can be handled even if nil.
        guard let iconMaskURL = place.iconMaskURL else {
            print("Icon mask URL not available for this place. Cannot display icon.")
            return // Exit if iconMaskURL is missing
        }

        print("The icon mask URL is: \(iconMaskURL)")
        // Print iconBackgroundColor using String(describing:)
        print("The icon background color is: \(String(describing: place.iconBackgroundColor))")


        // Asynchronously load the icon image
        DispatchQueue.global().async {
            // The iconMaskURL from the new Places SDK is already a URL
            guard let imageData = try? Data(contentsOf: iconMaskURL) else {
                print("Could not download image data from URL: \(iconMaskURL)")
                return
            }

            DispatchQueue.main.async {
                guard let iconImage = UIImage(data: imageData) else {
                    print("Could not create UIImage from downloaded data.")
                    return
                }

                // --- Example of how you might use the icon and background color ---
                // Ensure you have an imageView outlet connected in your UI
                // For example:
                // @IBOutlet weak var myImageViewContainer: UIView!
                // @IBOutlet weak var myIconImageView: UIImageView!
                // For this example, we'll create them programmatically:

                let iconBackgroundView = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) // Adjust frame as needed
                // Directly assign the optional UIColor. If nil, background will be clear.
                iconBackgroundView.backgroundColor = place.iconBackgroundColor

                let imageView = UIImageView() // Initialize an empty UIImageView
                imageView.frame = iconBackgroundView.bounds // Make icon view same size as background
                imageView.contentMode = .scaleAspectFit // Adjust content mode as needed

                // Tint the icon image (mask) to white
                // The icon from iconMaskURL is intended to be used as a mask.
                let templateImage = iconImage.withRenderingMode(.alwaysTemplate)
                imageView.image = templateImage
                imageView.tintColor = UIColor.white

                // Add the image view on top of the background view
                iconBackgroundView.addSubview(imageView)
        }
      }
  }
}

Swift

// Icon image URL
let url = URL(string: place.iconImageUrl)
DispatchQueue.global().async {
    guard let url = url,
        let imageData = try? Data(contentsOf: url) else {
      print("Could not get image")
      return
    }
    DispatchQueue.main.async {
      let iconImage = UIImage(data: iconImageData)

      // Icon image background color
      let iconBackgroundView = UIView(frame: .zero)
      iconBackgroundView.backgroundColor = place.iconBackgroundColor

      // Change icon image color to white
      let templateImage = iconImage.imageWithRenderingMode(UIImageRenderingModeAlwaysTemplate)
      imageView.image = templateImage
      imageView.tintColor = UIColor.white
    }
}

Objective-C

GMSPlace *place;

dispatch_async(dispatch_get_global_queue(0, 0), ^{
  // Icon image URL
  NSData * iconImageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: place.iconImageUrl]];
      if (!iconImageData)
          return;
      dispatch_async(dispatch_get_main_queue(), ^{
        UIImage *iconImage = [UIImage imageWithData:iconImageData];

        // Icon image background color
        UIView *iconBackgroundView = [[UIView alloc] initWithFrame:CGRectZero];
        [iconBackgroundView setBackgroundColor:place.iconBackgroundColor];

        // Change icon image color to white
        iconImage = [iconImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
        [imageView setTintColor:[UIColor whiteColor]];
      });
});

Поля

Каждый значок места содержит следующие поля:

  • iconImageUrl возвращает базовый URL для значка без цвета в формате PNG.
  • iconBackgroundColor возвращает код цвета UIExtendedSRGBColorSpace по умолчанию для категории места.

Как запросить значки мест и их фоновый цвет

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

Категория места: еда и напитки
(цвет фона #FF9E67)
Бар
Бар,
ночной клуб
Кафе
Кафе
Ресторан
Ресторан, пекарня
Категория места: розничная торговля
(цвет фона #4B96F3)
Книжный магазин
Книги, одежда, электроника, ювелирные изделия, обувь,
торговые центры
Мини-маркет
Универсальный магазин шаговой доступности
Продуктовый магазин
Продуктовый магазин, супермаркет
Аптека
Аптека
Категория места: услуги
(цвет фона #909CE1)
Банкомат
Банкомат
Банк
Банк
АЗС
АЗС
Гостиница
Гостиница
Почтовое отделение
Почтовое отделение
Категория места: развлечения
(цвет фона #13B5C7)
Аквариум, туризм
Аквариум, туризм
Гольф
Гольф
Историческое место
Историческое место
Кинотеатр
Кинотеатр
Музей
Музей
Театр
Театр
Категория места: транспорт
(цвет фона #10BDFF)
Аэропорт
Аэропорт
Автобус
Автобус, такси, совместные поездки
Рельсовый транспорт
Рельсовый транспорт
Категория места: общественные, религиозные и прочие места
(цвет фона #7B9EB0)
Кладбище
Кладбище
Общественное здание
Общественное здание
Библиотека
Библиотека
Памятник
Памятник
Парковка
Парковка
Образовательное учреждение (начальное, среднее, высшее)
Образовательное учреждение (начальное, среднее, высшее)
Место поклонения (христианство)
Место поклонения (христианство)
Место поклонения (индуизм)
Место поклонения (индуизм)
Место поклонения (ислам)
Место поклонения (ислам)
Место поклонения (джайнизм)
Место поклонения (джайнизм)
Место поклонения (иудаизм)
Место поклонения (иудаизм)
Место поклонения (сикхизм)
Место поклонения (сикхизм)
Прочие места
Прочие места
Категория места: активный отдых
(цвет фона #4DB546)
Водные прогулки
Водные прогулки
Кемпинг
Кемпинг
Парк
Парк
Стадион
Стадион
Зоопарк
Зоопарк
Категория места: экстренная помощь
(цвет фона #F88181)
Больница
Больница
Полиция
Полиция