Значки мест

Выберите платформу: Android iOS JavaScript Web Service

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

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

  • GMSPlaceFieldIconImageURL
  • GMSPlaceFieldIconBackgroundColor

В следующих примерах демонстрируется использование изображения значка и цвета фона из запроса «Текущее место» или «Сведения о месте»:

Место 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)
        }
      }
  }
}

Быстрый

// 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)
Больница
Больница
Полиция
Полиция