Yer simgeleri

Platform seçin: Android iOS JavaScript Web Hizmeti

Yer simgeleri, çeşitli yer türlerini (ör. kafeler, kütüphaneler ve müzeler) gösterir. Mevcut Yer ve Yer Ayrıntıları istekleriyle, PNG biçimindeki simge URL'lerinin yanı sıra ilgili simge arka plan rengini isteyebilirsiniz.

Bir yer için simge resmi ve arka plan rengi istemek istiyorsanız isteğinize aşağıdaki alanları ekleyin:

  • GMSPlaceFieldIconImageURL
  • GMSPlaceFieldIconBackgroundColor

Aşağıdaki örneklerde, Mevcut Yer veya Yer Ayrıntıları isteklerinden alınan simge resmi ve arka plan renginin kullanımı gösterilmektedir:

iOS için Yerler Swift SDK'sı

// 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]];
      });
});

Alanlar

Her yer simgesi aşağıdaki alanları içerir:

  • iconImageUrl, renkli olmayan bir PNG simgesinin temel URL'sini döndürür.
  • iconBackgroundColor, yerin kategorisinin varsayılan UIExtendedSRGBColorSpace renk kodunu döndürür.

Simge ve arka plan rengi isteği gönderme

Aşağıdaki tablolarda, kategoriye göre tüm mevcut yer simgeleri gösterilmektedir. Bunlar varsayılan olarak siyah bir simgeyle gösterilir. Simgenin arka plan rengi, yerin kategorisine göre belirlenir.

Yer kategorisi: Yiyecek ve içecek
(simge arka plan rengi #FF9E67)
Bar
Bar,
Gece kulübü
Kafe
Kafe
Restoran
Restoran, Fırın
Yer kategorisi: Perakende
(simge arka plan rengi #4B96F3)
Kitapçı
Kitap, Giyim, Elektronik, Mücevher, Ayakkabı,
Alışveriş merkezi
Market
Market
Bakkal
Bakkal, Süpermarket
Eczane
Eczane
Yer kategorisi: Hizmetler
(simge arka plan rengi #909CE1)
ATM
ATM
Banka
Banka
Benzin
Akaryakıt
Konaklama
Konaklama
Postane
Postane
Yer kategorisi: Eğlence
(simge arka plan rengi #13B5C7)
Akvaryum, Turist
Akvaryum, Turist
Golf
Golf
Tarihi
Tarihi
Film
Film
Müze
Müze
Tiyatro salonu
Tiyatro
Yer kategorisi: Ulaşım
(simge arka plan rengi #10BDFF)
Havalimanı
Havalimanı
Otobüs
Otobüs, araç paylaşma, taksi
Tren/Demiryolu
Tren/Demiryolu
Yer kategorisi: Belediye/genel/dini
(simge arka plan rengi #7B9EB0)
Mezarlık
Mezarlık
Belediye binası
Kamu binası
Kitaplık
Kitaplık
Anıt
Anıt
Otopark
Otopark
Okul (ilkokul, ortaokul, üniversite)
Okul (ilkokul, ortaokul, üniversite)
İbadet (Hristiyan)
İbadet (Hristiyan)
Tapınma (Hindu)
Tapınma (Hindu)
İbadet (İslam)
İbadet (İslam)
Tapınma (Caynist)
Tapınma (Jain)
İbadet (Yahudi)
İbadet (Yahudi)
İbadet (Sih)
Tapınma (Sih)
Genel işletme
Genel işletme
Yer kategorisi: Açık hava
(simge arka plan rengi #4DB546)
Tekne gezisi
Tekne
Kamp
Kamp
Park
Park
Stadium
Stadyum
Hayvanat Bahçesi
Hayvanat bahçesi
Yer kategorisi: Acil durum
(simge arka plan rengi #F88181)
Hastane
Hastane
Polis
Polis