یک نقشه را پیکربندی کنید

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

این نمای کلی نحوه پیکربندی نقشه ای را که با استفاده از Maps SDK برای iOS به برنامه iOS اضافه شده است، توضیح می دهد.

نمای کلی

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

تنظیمات اولیه نقشه شامل موارد زیر است:

در زمان اجرا می توانید این تنظیمات و برخی تنظیمات اضافی را با به روز رسانی شی GMSMapView پیکربندی کنید.

گزینه های نقشه

هنگام تنظیم اولیه نمای نقشه، گزینه های پیکربندی با GMSMapViewOptions تنظیم می شوند. ویژگی های گزینه شامل frame ، camera ، mapID یا backgroundColor است.

گزینه های نقشه
قاب
مقدار: CGRect
قاب نقشه. پیش‌فرض CGRectZero است.
دوربین
مقدار: GMSCameraPosition
موقعیت پیش فرض دوربین نقشه.
شناسه نقشه
مقدار: GMSMapID
شناسه نقشه گوگل پارامتر اختیاری
رنگ پس زمینه
مقدار: UIColor
پیش‌فرض UIColor.lightGray است

پیکربندی گزینه های نقشه

می‌توانید ویژگی‌های گزینه خود را تنظیم کنید یا یک GMSMapViewOptions با مقادیر پیش‌فرض را مستقیماً به GMSMapView ارسال کنید.

سویفت

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

هدف-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

در اینجا نمونه ای از ارسال یک شی GMSMapViewOptions با مقادیر پیش فرض به طور مستقیم به GMSMapView آورده شده است.

سویفت

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

هدف-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

پیکربندی رنگ پس زمینه

هنگام کار در حالت تاریک یا جابجایی بین نماهای نقشه، ممکن است نادیده گرفتن رنگ پیش‌فرض پس‌زمینه نقشه مفید باشد. این را می توان با تنظیم ویژگی های backgroundColor گزینه های نقشه به دست آورد.

سویفت

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

هدف-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

انواع نقشه

می توانید نقشه خود را با یکی از چندین نوع نقشه سفارشی کنید. نوع نقشه بر نمایش کلی نقشه حاکم است. به عنوان مثال، یک اطلس معمولاً حاوی نقشه های سیاسی است که بر نشان دادن مرزها تمرکز می کند و نقشه های راه که همه جاده های یک شهر یا منطقه را نشان می دهد. Maps SDK برای iOS انواع نقشه های زیر را ارائه می دهد:

نوع نقشه
عادی
مقدار: kGMSTypeNormal
نقشه راه معمولی جاده ها، برخی از ویژگی های ساخته شده توسط انسان و ویژگی های مهم طبیعی مانند رودخانه ها را نشان می دهد. برچسب های جاده و ویژگی نیز قابل مشاهده است. از تنظیم طرح رنگ نقشه روی تیره، روشن یا پیروی از تنظیمات سیستم پشتیبانی می کند.
هیبرید
مقدار: kGMSTypeHybrid
داده های عکس های ماهواره ای با نقشه های راه اضافه شده است. برچسب های جاده و ویژگی نیز قابل مشاهده است.
ماهواره
مقدار: kGMSTypeSatellite
داده های عکس ماهواره ای برچسب های جاده و ویژگی قابل مشاهده نیستند.
زمین
مقدار: kGMSTypeTerrain
داده های توپوگرافی این نقشه شامل رنگ‌ها، خطوط و برچسب‌ها و سایه‌های پرسپکتیو است. برخی از جاده ها و برچسب ها نیز قابل مشاهده هستند. از تنظیم طرح رنگ نقشه روی تیره، روشن یا پیروی از تنظیمات سیستم پشتیبانی می کند.
هیچ کدام
مقدار: kGMSTypeNone
بدون کاشی نقشه کاشی های نقشه پایه ارائه نمی شوند. این حالت در ارتباط با لایه های کاشی مفید است. هنگامی که نوع نقشه روی هیچ تنظیم شده باشد، نمایش داده های ترافیک غیرفعال می شود.

تغییر نوع نقشه

برای تنظیم نوع نقشه، یک مقدار جدید به ویژگی GMSMapView.mapType اختصاص دهید. به عنوان مثال، برای نمایش یک نقشه ماهواره ای نوع:

سویفت

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

هدف-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

انتخابگر زیر مقایسه ای از نقشه های زمین، نرمال و ترکیبی را برای یک مکان نشان می دهد:

نقشه های داخلی

در سطوح زوم بالا، Maps SDK برای iOS پلان‌های فضاهای داخلی مانند فرودگاه‌ها، مراکز خرید، فروشگاه‌های خرده‌فروشی بزرگ و ایستگاه‌های حمل و نقل را نشان می‌دهد. پلان‌های طبقه داخلی در کاشی‌های نقشه پیش‌فرض برای نوع نقشه «عادی» ( kGMSTypeNormal ) ادغام می‌شوند و هنگامی که کاربر بزرگ‌نمایی می‌کند، به‌طور خودکار فعال می‌شوند، و زمانی که نقشه کوچک‌نمایی می‌شود، محو می‌شوند.

می‌توانید نقشه‌های داخلی را با تنظیم ویژگی indoorEnabled GMSMapView روی NO غیرفعال کنید.

سویفت

mapView.isIndoorEnabled = false
      

هدف-C

mapView.indoorEnabled = NO;
      

از طرف دیگر، می‌توانید فقط کنترل Floor Picker را غیرفعال کنید.

اضافه کردن پلان های طبقه

نقشه های طبقات در مکان های انتخابی موجود است. اگر داده های پلان طبقه برای ساختمانی که می خواهید در برنامه خود برجسته کنید در دسترس نیست، می توانید:

لایه ترافیک

می توانید به کاربران خود این امکان را بدهید که نقشه را با اطلاعات تراکم ترافیک که در بالای آن قرار گرفته است، مشاهده کنند. این یک خلاصه تصویری از وضعیت ترافیک محلی آنها را ارائه می دهد. با فراخوانی متد trafficEnabled می توانید لایه ترافیک را روشن و خاموش کنید. مثال زیر نشان می دهد که چگونه لایه ترافیک ممکن است روی نقشه ظاهر شود.

نقشه گوگل که ترافیک را نشان می دهد لایه

قابلیت دسترسی

به طور پیش فرض، عناصر دسترسی روی نقشه پنهان هستند. می‌توانید با تنظیم ویژگی accessibilityElementsHidden GMSMapView روی NO ، قابلیت دسترسی را فعال کنید. این باعث می شود عناصر دسترسی برای اشیاء همپوشانی (مانند GMSMarker و پنجره های اطلاعات، GMSPolyline و غیره) تولید شود.

سویفت

mapView.accessibilityElementsHidden = false
      

هدف-C

mapView.accessibilityElementsHidden = NO;
      

این ویژگی مطابق پروتکل غیررسمی UIAccessibility است، با این تفاوت که مقدار پیش‌فرض در Maps SDK برای iOS YES است.

موقعیت مکانی من

به طور پیش فرض، هیچ داده موقعیت مکانی روی نقشه نشان داده نمی شود. می‌توانید با تنظیم myLocationEnabled در GMSMapView نقطه آبی «My Location» و جهت قطب‌نما را فعال کنید.

سویفت

mapView.isMyLocationEnabled = true
      

هدف-C

mapView.myLocationEnabled = YES;
      

فعال کردن این ویژگی موقعیت فعلی کاربر را از طریق ویژگی myLocation فراهم می‌کند. این ویژگی ممکن است فوراً در دسترس نباشد - برای مثال، اگر iOS از کاربر خواسته شود اجازه دسترسی به این داده ها را بدهد. در این مورد nil است.

سویفت

print("User's location: \(String(describing: mapView.myLocation))")
      

هدف-C

NSLog(@"User's location: %@", mapView.myLocation);
      

ساختمان های سه بعدی

بسیاری از شهرها، وقتی از نزدیک مشاهده شوند، ساختمان های سه بعدی قابل مشاهده خواهند بود، همانطور که در تصویر سیاتل، واشنگتن در زیر قابل مشاهده است.

نقشه سه بعدی از ساختمان ها در سیاتل، واشنگتن.

می‌توانید ساختمان‌های سه بعدی را با تنظیم ویژگی GMSMapView در Swift یا Objective-C غیرفعال کنید، همانطور که در زیر نشان داده شده است:

سویفت

mapView.isBuildingsEnabled = false
      

هدف-C

[mapView setBuildingsEnabled:NO];
      

بالشتک نقشه

یک نقشه گوگل برای پر کردن کل منطقه تعریف شده توسط GMSMapView طراحی شده است. چندین جنبه از نحوه ظاهر و رفتار نقشه با ابعاد نما مشخص می شود:

  • هدف دوربین، مرکز ناحیه بالشتک شده را منعکس می کند.
  • کنترل های نقشه نسبت به لبه های نقشه قرار می گیرند.
  • اطلاعات حقوقی، مانند بیانیه‌های حق نسخه‌برداری یا نشان‌واره Google در لبه پایین نقشه ظاهر می‌شوند.

می‌توانید با استفاده از GMSMapView ، لبه‌های نقشه را اضافه کنید. خاصیت padding نقشه همچنان کل محفظه را پر می کند، اما موقعیت یابی متن و کنترل، حرکات نقشه و حرکات دوربین طوری رفتار می کند که گویی در فضای کوچکتری قرار گرفته است. این منجر به تغییرات زیر می شود:

  • حرکات دوربین با استفاده از تماس‌های API یا فشار دادن دکمه‌ها (مثلاً قطب‌نما، موقعیت مکانی من) نسبت به ناحیه بالشتک‌شده است.
  • GMSMapView . projection طرحی را برمی گرداند که فقط شامل ناحیه padded می شود.
  • کنترل‌های UI از لبه کانتینر با تعداد نقاط مشخص شده جابجا می‌شوند.

هنگام طراحی رابط‌های کاربری که روی بخشی از نقشه همپوشانی دارند، پد کردن می‌تواند مفید باشد. به عنوان مثال، در تصویر، نقشه در امتداد لبه های بالا و سمت راست قرار گرفته است. کنترل‌های نقشه قابل مشاهده و متن قانونی در امتداد لبه‌های ناحیه پرشده، به رنگ سبز نشان داده می‌شود، در حالی که نقشه همچنان کل ظرف را که به رنگ آبی نشان داده شده است، پر می‌کند. در این مثال، می‌توانید منویی را در سمت راست نقشه بدون پنهان کردن کنترل‌های نقشه شناور کنید.

Map Padding

برای افزودن پد به نقشه خود، یک شی UIEdgeInsets ایجاد کنید و آن را به GMSMapView ارسال کنید. خاصیت padding

سویفت

// Insets are specified in this order: top, left, bottom, right
let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets
      

هدف-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;
      

طرح رنگ نقشه

برای نقشه‌هایی از نوع عادی و زمین، می‌توانید طرح رنگ نقشه را روی تیره، روشن یا برای استفاده از تنظیمات فعلی سیستم تنظیم کنید. برای مثال، می‌توانید طرح رنگ نقشه را بر اساس زمان روز یا استفاده در داخل یا خارج از دستگاه تیره یا روشن کنید.

از GMSMapView overrideUserInterfaceStyle: برای تنظیم و به روز رسانی طرح رنگ نقشه استفاده کنید.

سویفت

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

هدف-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;