Ícones de lugares

Selecione a plataforma: Android iOS JavaScript Web Service

Os ícones de lugar indicam os vários tipos de local (por exemplo, cafés, bibliotecas e museus). Você pode solicitar URLs para ícones no formato PNG, além da cor do plano de fundo do ícone correspondente, com solicitações de Local atual e Detalhes do lugar.

Para solicitar uma imagem de ícone e uma cor de plano de fundo para um lugar, inclua os seguintes campos na solicitação:

  • GMSPlaceFieldIconImageURL
  • GMSPlaceFieldIconBackgroundColor

Os exemplos a seguir demonstram o uso da imagem do ícone e da cor de segundo plano de uma solicitação de "Current Place" ou "Place Details":

SDK do Places Swift para 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]];
      });
});

Campos

Cada ícone de lugar contém estes campos:

  • iconImageUrl retorna o URL de base para um ícone PNG sem cor.
  • iconBackgroundColor retorna o código de cor UIExtendedSRGBColorSpace padrão para a categoria do lugar.

Solicitações de ícone de lugar e cor do plano de fundo

As tabelas a seguir mostram todos os ícones de lugar disponíveis por categoria. Por padrão, elas aparecem com um glifo preto. A cor de fundo do ícone é definida pela categoria do lugar.

Categoria do lugar: alimentos e bebidas
(cor #FF9E67 do plano de fundo do ícone)
Bar
Bar,
Clube noturno
Café
Café
Restaurante
Restaurante, padaria
Categoria do lugar: varejo
(cor #4B96F3 do plano de fundo do ícone)
Livraria
Livros, roupas, eletrônicos, joias, sapatos,
Shopping Center
Loja de conveniência
Loja de conveniência
Mercearia
Mercearia, supermercado
Farmácia
Farmácia
Categoria do lugar: serviços
(cor #909CE1 do plano de fundo do ícone)
Caixa eletrônico
Caixa eletrônico
Banco
Banco
Postos de gasolina
Postos de gasolina
Hospedagem
Hospedagem
Correio
Correio
Categoria do lugar: entretenimento
(cor #13B5C7 do plano de fundo do ícone)
Aquário, turista
Aquário, turista
Golfe
Golfe
Histórico
Histórico
Filme
Filme
Museu
Museu
Teatro
Teatro
Categoria do lugar: transporte
(cor #10BDFF do plano de fundo do ícone)
Aeroporto
Aeroporto
Ônibus
Ônibus, serviço de transporte por aplicativo, táxi
Trem/Via férrea
Trem/Via férrea
Categoria do lugar: municipal/genérico/religioso
(cor #7B9EB0 do plano de fundo do ícone)
Cemitério
Cemitério
Construção civil
Construção civil
Biblioteca
Biblioteca
Monumento
Monumento
Estacionamento
Estacionamento
Escola (primária, secundária, universidade)
Escola (primária, secundária, universidade)
Igreja (cristã)
Igreja (cristã)
Templo (hindu)
Templo (hindu)
Mesquita (islâmica)
Mesquita (islâmica)
Templo (jainista)
Templo (jainista)
Templo (judeu)
Templo (judeu)
Templo (siquista)
Templo (siquista)
Empresa genérica
Empresa genérica
Categoria do lugar: ao ar livre
(cor #4DB546 do plano de fundo do ícone)
Barco
Barco
Acampamento
Acampamento
Parque
Parque
Estádio
Estádio
Zoológico
Zoológico
Categoria do lugar: emergência
(cor #F88181 do plano de fundo do ícone)
Hospital
Hospital
Polícia
Polícia