סמלי מקומות

בחירת פלטפורמה: Android iOS JavaScript Web Service

סמלי המקומות מציינים את הסוגים השונים של המקומות (לדוגמה, בתי קפה, ספריות ומוזיאונים). אפשר לבקש כתובות URL של סמלים בפורמט PNG, וגם את צבע הרקע התואם של הסמל, באמצעות הבקשות המיקום הנוכחי ופרטי המקום.

כדי לבקש תמונה של סמל וצבע רקע למקום, צריך לכלול בבקשה את השדות הבאים:

  • GMSPlaceFieldIconImageURL
  • GMSPlaceFieldIconBackgroundColor

בדוגמאות הבאות מוסבר איך משתמשים בתמונת הסמל ובצבע הרקע מבקשה של 'המיקום הנוכחי' או מבקשה של 'פרטי המקום':

Places 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)
        }
      }
  }
}

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

שדות

כל סמל של מקום מכיל את השדות הבאים:

  • הפונקציה iconImageUrl מחזירה את כתובת ה-URL הבסיסית של סמל PNG לא צבעוני.
  • הפונקציה iconBackgroundColor מחזירה את קוד הצבע UIExtendedSRGBColorSpace של ברירת המחדל לקטגוריה של המקום.

שליחת בקשות לגבי צבע הסמל וצבע הרקע

בטבלאות הבאות מוצגים כל סמלי המקומות הזמינים לפי קטגוריה. כברירת מחדל, הם מוצגים עם גליף שחור. צבע הרקע של הסמל נקבע לפי הקטגוריה של המקום.

קטגוריית המקום: מזון ומשקאות
(צבע הרקע של הסמל: #FF9E67)
בר
בר,
מועדון לילה
בית קפה
בית קפה
מסעדה
מסעדה, מאפייה
קטגוריית המקום: קמעונאות
(צבע הרקע של הסמל: #4B96F3)
חנות ספרים
ספרים, בגדים, מוצרי אלקטרוניקה, תכשיטים, נעליים,
מרכז קניות
חנות נוחות
חנות נוחות
מכולת
מכולת, סופרמרקט
בית מרקחת
בית מרקחת
קטגוריית המקום: שירותים
(צבע הרקע של הסמל הוא #909CE1)
כספומט
כספומט
בנק
בנק
דלק
גז
לינה
לינה
סניף דואר
סניף דואר
קטגוריית המקום: בידור
(צבע הרקע של הסמל: #13B5C7)
אקווריום, תיירותי
אקווריום, תיירות
גולף
גולף
היסטורי
היסטורי
סרט
סרט
מוזיאון
מוזיאון
תיאטרון
תיאטרון
קטגוריית המקום: תחבורה
(צבע הרקע של הסמל הוא #10BDFF)
נמל תעופה
שדה תעופה
אוטובוס
אוטובוס, נסיעה משותפת, מונית
רכבת/מסילה
רכבת/מסילה
קטגוריית המקום: עירוני/כללי/דתי
(צבע הרקע של הסמל: #7B9EB0)
בית קברות
בית קברות
מבנה ציבורי
מבנה ציבורי
ספרייה
Library
אנדרטה
אנדרטה
חניה
חניה
בית ספר (יסודי, חטיבה, אוניברסיטה)
בית ספר (יסודי, תיכון, אוניברסיטה)
טקסים דתיים (נוצריים)
טקסים רוחניים (נוצריים)
פולחן (הינדי)
טקסים רוחניים (הינדי)
פולחן (אסלאם)
פולחן (איסלאם)
טקסים דתיים (ג'ייני)
טקסים רוחניים (ג'ייני)
טקסים דתיים (יהודיים)
טקסים רוחניים (יהדות)
טקסים דתיים (סיקי)
טקסים רוחניים (סיקי)
עסק כללי
עסק כללי
קטגוריית המקום: חוץ
(צבע הרקע של הסמל: #4DB546)
שייט בסירה
שיט
מחנאות
קמפינג
פארק
פארק
אצטדיון
אצטדיון
גן חיות
גן חיות
קטגוריית מקום: חירום
(צבע הרקע של הסמל: #F88181)
בית חולים
בית חולים
משטרה
משטרה