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