پلتفرم را انتخاب کنید: Android iOS JavaScript

جزء جزئیات مکان

جزء Place Details در Places UI Kit به شما امکان می دهد یک مؤلفه UI جداگانه اضافه کنید که جزئیات مکان را در برنامه شما نمایش می دهد. این جزء قابل تنظیم است.

جزئیات محل جزء فشرده

مولفه Place Details را می توان به طور مستقل یا همراه با سایر APIها و سرویس های پلتفرم Google Maps استفاده کرد. مؤلفه یا شناسه مکان ، نام منبع، یا مختصات طول و عرض جغرافیایی را می گیرد و اطلاعات جزئیات مکان ارائه شده را برمی گرداند.

مولفه Place Details کاملاً مضمون‌پذیر است و به شما این امکان را می‌دهد که فونت‌ها، رنگ‌ها و شعاع گوشه‌ها را مطابق با مورد استفاده و دستورالعمل‌های برند بصری خود سفارشی کنید. شما می توانید ظاهر جزئیات مکان را با ارائه مقادیر سفارشی PlacesMaterialTheme سفارشی کنید. همچنین می‌توانید با تعیین فهرستی از ورودی‌های PlaceDetailsCompactView ، که هر کدام مربوط به بخشی از اطلاعات نشان‌داده‌شده درباره مکان است، فیلدهای جزئیات مکان را سفارشی کنید.

انواع چیدمان

مولفه Place Details از دو نوع چیدمان اصلی پشتیبانی می کند:

  • فشرده: طرحی برای پیش نمایش اطلاعات کلیدی.
  • کامل: یک طرح جامع که تمام جزئیات مکان موجود را نمایش می دهد.

طرح فشرده می تواند در جهت عمودی یا افقی نمایش داده شود. این به شما امکان می دهد کامپوننت را در طرح بندی های مختلف طراحی و اندازه های صفحه ادغام کنید. طرح کامل فقط می تواند به صورت عمودی نمایش داده شود.

طرح بندی افقی و عمودی
طرح بندی افقی و عمودی

مؤلفه Place Details به شما کنترل دقیقی بر محتوای نمایش داده شده در مؤلفه می دهد. هر عنصر (مانند عکس‌ها، نظرات، و اطلاعات تماس) می‌تواند به‌صورت جداگانه نشان داده یا پنهان شود، که امکان سفارشی‌سازی دقیق ظاهر اجزا و چگالی اطلاعات را فراهم می‌کند.

گزینه های محتوای جزئیات مکان
گزینه های نمایش محتوا

نمای فشرده مکان جزئیات

نمای فشرده Place Details ( PlaceDetailsCompactView ) جزئیات یک مکان انتخابی را با استفاده از حداقل فضا ارائه می دهد. این ممکن است در یک پنجره اطلاعاتی که مکان را روی نقشه برجسته می‌کند، در یک تجربه رسانه‌های اجتماعی مانند اشتراک‌گذاری یک مکان در چت، به عنوان پیشنهادی برای انتخاب مکان فعلی‌تان، یا در یک مقاله رسانه‌ای برای ارجاع به مکان در Google Maps مفید باشد.

جزئیات مکان نمای کامل

نمای کامل جزئیات مکان ( PlaceDetailsView ) سطح بزرگتری را برای نمایش اطلاعات جزئیات مکان ارائه می دهد و به شما امکان می دهد انواع بیشتری از اطلاعات را نمایش دهید.

گزینه های نمایش محتوا

می‌توانید با استفاده از فهرست‌های موجود در PlaceDetailsCompactContent یا PlaceDetailsContent مشخص کنید که کدام محتوا نمایش داده شود.

نمای فشرده نمای کامل
  • عکس محل
  • آدرس محل
  • رتبه بندی و تعداد امتیاز
  • نوع مکان
  • قیمت
  • اطلاعات ورودی در دسترس
  • وضعیت اکنون را باز کنید
  • قرار دادن کلاژ عکس
  • آدرس محل
  • رتبه بندی و تعداد امتیاز
  • نوع مکان
  • قیمت
  • اطلاعات دسترسی
  • وضعیت اکنون را باز کنید
  • ساعات کار
  • خلاصه سرمقاله
  • وب سایت
  • شماره تلفن
  • نظرات ارائه شده در برگه اختصاصی
  • کد پلاس
  • لیست ویژگی، ارائه شده در یک برگه اختصاصی
  • نکات برجسته نوع خاص، مانند قیمت بنزین برای پمپ بنزین ها

صورتحساب

هنگام استفاده از Place Details UI Kit، برای هر بار فراخوانی متد PlaceDetailsQuery صورتحساب دریافت می کنید. اگر یک مکان را چندین بار بارگیری کنید، برای هر درخواست صورتحساب دریافت می کنید.

جزئیات مکان را به برنامه خود اضافه کنید

جزء جزئیات مکان یک نمای رابط کاربری Swift است. می توانید ظاهر و احساس اطلاعات جزئیات مکان را مطابق با نیازهای خود و مطابقت با ظاهر برنامه خود سفارشی کنید. درباره سفارشی سازی بیشتر بیاموزید .

شما می توانید انتخاب کنید که جزء جزئیات مکان با شناسه مکان، نام منبع یا مختصات طول و عرض جغرافیایی بارگیری شود. شما می توانید هر روش یا چند روش را انتخاب کنید. identifier در ساختار PlaceDetailsQuery را به .placeID ، .resourceName یا .coordinate تنظیم کنید.

موقعیت پیش فرض برای نمای فشرده، عمودی است. اگر می خواهید یک طرح افقی داشته باشید، orientation: .horizontal در PlaceDetailsCompactView . شما همچنین می توانید به صورت اختیاری orientation: .vertical برای وضوح. نمای کامل فقط به صورت عمودی قابل نمایش است.

نمونه‌هایی را در بخش نمونه‌های جزء جزئیات مکان ببینید.

ظاهر بصری را سفارشی کنید

سفارشی سازی بصری جزئیات مکان
نمونه های سفارشی سازی بصری

کیت UI Places یک رویکرد سیستم طراحی را برای سفارشی‌سازی بصری تقریباً بر اساس طراحی متریال (با برخی تغییرات خاص Google-Maps) ارائه می‌کند. به مرجع طراحی متریال برای رنگ و تایپوگرافی مراجعه کنید. به طور پیش فرض، این سبک به زبان طراحی بصری Google Maps پایبند است.

گزینه های سفارشی سازی جزئیات مکان

ظاهر و احساس کامپوننت با ساختارهای placesMaterialColor ، placesMaterialFont ، placesMaterialShape و placesMaterialTheme سفارشی می شود.

شما می توانید سبک های زیر را سفارشی کنید:

سفارشی سازی رنگ گفتگو و تایپوگرافی
سفارشی سازی رنگ گفتگو و تایپوگرافی
ویژگی تم استفاده
رنگ
theme.color.surface پس زمینه ظرف و دیالوگ
theme.color.outlineDecorative حاشیه کانتینر
theme.color.primary پیوندها، نشانگر بارگیری، نمادهای نمای کلی
theme.color.onSurface سرفصل ها، محتوای گفتگو
theme.color.onSurfaceVariant اطلاعات مکان
theme.color.secondaryContainer پس زمینه دکمه
theme.color.onSecondaryContainer متن و نماد دکمه
theme.color.neutralContainer نشان تاریخ را مرور کنید، اشکال نگه‌دارنده را بارگیری کنید
theme.color.onNeutralContainer تاریخ بازبینی، خطای بارگذاری
theme.color.positiveContainer نشان شارژر EV موجود
theme.color.onPositiveContainer محتوای نشان شارژر EV موجود است
theme.color.positive اکنون برچسب "باز" ​​را قرار دهید
theme.color.negative اکنون برچسب "بسته" را قرار دهید
theme.color.info نماد ورودی قابل دسترسی
theme.measurement.borderWidthButton باز کردن در نقشه ها و دکمه های OK
تایپوگرافی
theme.font.bodySmall اطلاعات مکان
theme.font.bodyMedium اطلاعات مکان، محتوای گفتگو
theme.font.labelMedium محتوای نشان
theme.font.labelLarge محتوای دکمه
theme.font.headlineMedium سرفصل های گفتگو
theme.font.displaySmall نام مکان
theme.font.titleSmall نام مکان
فاصله گذاری
theme.measurement.spacingExtraSmall
theme.measurement.spacingSmall
theme.measurement.spacingMedium
theme.measurement.spacinglarge
theme.measurement.spacingExtraLarge
theme.measurement.spacingTwoExtraLarge
اندازه گیری
borderWidth ظرف
theme.measurement.borderWidthButton
شکل
theme.shape.cornerRadius ظرف
theme.shape.cornerRadiusButton باز کردن در Maps و دکمه‌های تأیید (به استثنای دکمه نماد گرد)
theme.shape.cornerRadiusThumbnail تصویر کوچک را قرار دهید
theme.shape.cornerRadiusCollageOuter کلاژ رسانه ای
theme.shape.cornerRadiusCard کارت مکان، کارت بررسی کاربر
theme.shape.cornerRadiusDialog گفتگوی افشای Google Maps
نام تجاری نقشه های گوگل
attribution.lightModeColor دکمه انتساب و افشای طرح زمینه روشن Google Maps (فهرست برای سفید، خاکستری و سیاه)
attribution.darkModeColor دکمه انتساب و افشای طرح زمینه تاریک Google Maps (فهرست برای سفید، خاکستری و سیاه)

نمونه‌هایی را در بخش نمونه‌های جزء جزئیات مکان ببینید.

سفارشی سازی عرض و ارتفاع

نماهای فشرده

عرض های توصیه شده:

  • جهت عمودی: بین 180 پیکسل تا 300 پیکسل.
  • جهت افقی: بین 180 پیکسل تا 500 پیکسل.

بهترین روش این است که ارتفاعی را برای نماهای فشرده تنظیم نکنید. این به محتوای پنجره اجازه می دهد تا ارتفاع را تنظیم کند و اجازه می دهد تمام اطلاعات نمایش داده شوند.

عرض های کوچکتر از 160 پیکسل ممکن است به درستی نمایش داده نشوند.

نماهای کامل

برای نمایش کامل، عرض پیشنهادی بین 250 پیکسل تا 450 پیکسل است. عرض کوچکتر از 250 پیکسل ممکن است به درستی نمایش داده نشود.

می توانید ارتفاع مؤلفه را تنظیم کنید: نمای عمودی جزئیات مکان به صورت عمودی در فضای اختصاص داده شده حرکت می کند.

بهترین روش این است که ارتفاع را برای نمایش کامل تنظیم کنید. این به محتوای پنجره اجازه می دهد تا به درستی اسکرول شود.

رنگهای انتساب

نسبت دادن
انتساب

شرایط خدمات Google Maps از شما می‌خواهد که از یکی از سه رنگ مارک برای انتساب Google Maps استفاده کنید. وقتی تغییرات سفارشی‌سازی انجام می‌شود، این انتساب باید قابل مشاهده و قابل دسترسی باشد.

ما 3 رنگ مارک را برای انتخاب ارائه می دهیم که می توانند به طور مستقل برای تم های روشن و تاریک تنظیم شوند:

  • موضوع روشن: attributionColorLight با فهرست برای سفید، خاکستری و سیاه.
  • طرح زمینه تیره: attributionColorDark با فهرست برای سفید، خاکستری و سیاه.

نمونه‌های جزء جزئیات مکان

یک نمای کامل با طرح بندی عمودی ایجاد کنید

سویفت

  var selectedType: Set<PlaceDetailsCompactContent> = PlaceDetailsCompactView.standardContent

    // Query for loading the place details widget.
    @State var query: PlaceDetailsQuery = PlaceDetailsQuery(
      identifier: .placeID("ChIJT7FdmYiAhYAROFOvrIxRJDU"))
    
    var theme: PlacesMaterialTheme = PlacesMaterialTheme()
    var configuration: PlaceDetailsConfiguration {
      PlaceDetailsConfiguration(
        content: selectedType,
        theme: theme)
    }
    
    // Callback for the place details widget.
    let placeDetailsCallback: (PlaceDetailsResult) -> Void = { result in
      if let place = result.place {
        print("Place: \(place.description)")
      } else {
        print("Error: \(String(describing: result.error))")
      }
    }
    PlaceDetailsCompactView(
      orientation: .vertical, query: $query,
      configuration: configuration,
      placeDetailsCallback: placeDetailsCallback
    )

یک نمای فشرده با طرح افقی ایجاد کنید

سویفت

  var selectedType: Set<PlaceDetailsCompactContent> = PlaceDetailsCompactView.standardContent

    // Query for loading the place details widget.
    @State var query: PlaceDetailsQuery = PlaceDetailsQuery(
      identifier: .placeID("ChIJT7FdmYiAhYAROFOvrIxRJDU"))
    
    var theme: PlacesMaterialTheme = PlacesMaterialTheme()
    var configuration: PlaceDetailsConfiguration {
      PlaceDetailsConfiguration(
        content: selectedType,
        theme: theme)
    }
    
    // Callback for the place details widget.
    let placeDetailsCallback: (PlaceDetailsResult) -> Void = { result in
      if let place = result.place {
        print("Place: \(place.description)")
      } else {
        print("Error: \(String(describing: result.error))")
      }
    }
    PlaceDetailsCompactView(
      orientation: .horizontal, query: $query,
      configuration: configuration,
      placeDetailsCallback: placeDetailsCallback
    )

یک نمای کامل با طرح بندی عمودی ایجاد کنید

سویفت

  @State var query: PlaceDetailsQuery = PlaceDetailsQuery(
    identifier: .placeID("ChIJT7FdmYiAhYAROFOvrIxRJDU"))
  var theme: PlacesMaterialTheme = PlacesMaterialTheme()
  var selectedType: Set<PlaceDetailsContent> = PlaceDetailsCompactView.standardContent
  
  var configuration: PlaceDetailsConfiguration {
    PlaceDetailsConfiguration(
      content: selectedType,
      theme: theme)
  }
  let placeDetailsCallback: (PlaceDetailsResult) -> Void = { result in
    placeIDPickerFocused = true
    if let place = result.place {
      print("Place: \(place.description)")
    } else {
      print("Error: \(String(describing: result.error))")
    }
  }
  GooglePlacesSwift.PlaceDetailsView(
    query: $query,
    configuration: configuration,
    placeDetailsCallback: placeDetailsCallback
  )

ویژگی های سبک را سفارشی کنید

این نمونه نحوه سفارشی کردن ویژگی های سبک پیش فرض یک نمای کامل یا فشرده را نشان می دهد.

سویفت

  // Same for compact and full
func makeTemplateTheme(colorScheme: ColorScheme) -> PlacesMaterialTheme {
  var theme = PlacesMaterialTheme()
  var color = PlacesMaterialColor()
  color.surface = (colorScheme == .dark ? .blue : .gray)
  color.buttonBorder = (colorScheme == .dark ? .pink : .orange)
  color.outlineDecorative = (colorScheme == .dark ? .white : .black)
  color.onSurface = (colorScheme == .dark ? .yellow : .red)
  color.onSurfaceVariant = (colorScheme == .dark ? .white : .blue)
  color.onSecondaryContainer = (colorScheme == .dark ? .white : .red)
  color.secondaryContainer = (colorScheme == .dark ? .green : .purple)
  color.positive = (colorScheme == .dark ? .yellow : .red)
  color.primary = (colorScheme == .dark ? .yellow : .purple)
  color.info = (colorScheme == .dark ? .yellow : .purple)
  var shape = PlacesMaterialShape()
  shape.cornerRadius = 10
  var font = PlacesMaterialFont()
  font.labelLarge = .system(size: UIFontMetrics.default.scaledValue(for: 18))
  font.headlineMedium = .system(size: UIFontMetrics.default.scaledValue(for: 15))
  font.bodyLarge = .system(size: UIFontMetrics.default.scaledValue(for: 15))
  font.bodyMedium = .system(size: UIFontMetrics.default.scaledValue(for: 12))
  font.bodySmall = .system(size: UIFontMetrics.default.scaledValue(for: 11))
  var attribution = PlacesMaterialAttribution()
  attribution.lightModeColor = .black
  attribution.darkModeColor = .white
  theme.measurement.borderWidthButton = 1
  theme.color = color
  theme.shape = shape
  theme.font = font
  theme.attribution = attribution
  return theme
}

نمایش محتوای خاص

این نمونه یک نمای فشرده ایجاد می کند که فقط رسانه، آدرس، رتبه بندی و نوع را با استفاده از تم ایجاد شده در مثال قبلی نمایش می دهد.

سویفت

  @State var query: PlaceDetailsQuery = PlaceDetailsQuery(
    identifier: .placeID("ChIJT7FdmYiAhYAROFOvrIxRJDU"))
  
  var body: some View {
    PlaceDetailsCompactView(
      orientation: .vertical, query: $query,
      contentType: [.media(), .address(), .rating(),
                    .type(), .price()], theme: theme,
      placeDetailsCallback: placeDetailsCallback, preferTruncation: false
    )
    .frame(width: 350)
  }