Icone di luoghi

Seleziona la piattaforma: Android iOS JavaScript Web Service

Le icone dei luoghi indicano i vari tipi di luoghi (ad esempio caffetterie, biblioteche e musei). Puoi richiedere gli URL delle icone in formato PNG, nonché il colore di sfondo corrispondente, con le richieste Posizione attuale e Dettagli dei luoghi.

Per richiedere un'immagine dell'icona e il colore di sfondo per un luogo, includi i seguenti campi nella richiesta:

  • GMSPlaceFieldIconImageURL
  • GMSPlaceFieldIconBackgroundColor

Gli esempi riportati di seguito mostrano l'utilizzo dell'immagine dell'icona e del colore di sfondo da una richiesta di luogo corrente o di dettagli del luogo:

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

Campi

Ogni icona di luogo contiene i seguenti campi:

  • iconImageUrl restituisce l'URL di base per un'icona PNG non colorata.
  • iconBackgroundColor restituisce il codice colore UIExtendedSRGBColorSpace predefinito per la categoria del luogo.

Inviare richieste di icone e colori di sfondo

Le tabelle seguenti mostrano tutte le icone dei luoghi disponibili per categoria. Per impostazione predefinita, vengono visualizzati con un glifo nero. Il colore di sfondo dell'icona è determinato dalla categoria del luogo.

Categoria di luogo: Cibo e bevande
(colore dello sfondo dell'icona #FF9E67)
A barre
Bar,
Night club
Caffè
Bar
Ristorante
Ristorante, panificio
Categoria di luogo: vendita al dettaglio
(colore di sfondo dell'icona #4B96F3)
Libreria
Libri, abbigliamento, elettronica, gioielli, scarpe,
centro commerciale/galleria commerciale
Minimarket
Minimarket
Alimentari
Negozio di alimentari, supermercato
Farmacia
Farmacia
Categoria di luogo: Servizi
(colore sfondo icona #909CE1)
Bancomat
Bancomat
Banca
Banca
Gas
Gas
Alloggi
Alloggio
Ufficio postale
Ufficio postale
Categoria di luogo: Spettacoli
(colore di sfondo dell'icona #13B5C7)
Acquario, Turista
Acquario, Turistico
Golf
Golf
Storico
Storico
Film
Film
Museo
Museo
Teatro
Cinema
Categoria di luogo: Trasporti
(colore di sfondo dell'icona #10BDFF)
Aeroporto
Aeroporto
Bus
Autobus, ridesharing, taxi
Treno/ferrovia
Treno/mezzo su rotaie
Categoria di luogo: comunale/generico/religioso
(colore dello sfondo dell'icona #7B9EB0)
Cimitero
Cimitero
Edificio pubblico
Edificio pubblico
Raccolta
Raccolta
Monumento
Monumento
Parcheggio
Parcheggio
Scuola (elementare, secondaria, universitaria)
Scuola (elementare, media, universitaria)
Culto (cristiano)
Culto (cristiano)
Culto (indù)
Adorazione (indù)
Adorazione (Islam)
Culto (Islam)
Culto (giainista)
Culto (giainista)
Culto (ebraico)
Culto (ebraico)
Adorazione (sikh)
Culto (sikh)
Attività generica
Attività generica
Categoria di luogo: all'aperto
(colore di sfondo dell'icona #4DB546)
Nautica
Nautica
Campeggio
Campeggio
Parco
Parcheggia
Stadio
Stadio
Zoo
Zoo
Categoria di luogo: Emergenza
(colore di sfondo dell'icona #F88181)
Ospedale
Ospedali
Polizia
Polizia