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

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

این نمای کلی نحوه پیکربندی نقشه‌ای را که بااستفاده از «کیت توسعه نرم‌افزار Google Maps برای iOS» به برنامه iOS اضافه شده است شرح می‌دهد.

نمای کلی

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

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

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

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

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

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

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

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

Swift

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

آبجکتیو-سی

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

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

Swift

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

آبجکتیو-سی

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

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

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

Swift

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

آبجکتیو-سی

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

انواع نقشه

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

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

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

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

Swift

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

آبجکتیو-سی

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;

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

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

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

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

Swift

mapView.isIndoorEnabled = false
      

آبجکتیو-سی

mapView.indoorEnabled = NO;
      

یا می‌توانید فقط کنترل «انتخابگر طبقه» را غیرفعال کنید.

افزودن نقشه ساختمان

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

  • نقشه ساختمان را مستقیماً به Google Maps اضافه کنید. این کار باعث می‌شود طرح‌هایتان برای همه کاربران Google Maps دردسترس باشد.
  • نمایش نقشه ساختمان به‌عنوان رونهاد زمینی. این کار فقط به کاربران برنامه شما امکان می‌دهد طرح‌های طبقات را ببینند.

لایه ترافیک

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

نقشه Google که لایه ترافیک را نشان می‌دهد

لایه حمل‌ونقل عمومی

«کیت توسعه نرم‌افزار Maps برای iOS» به شما امکان می‌دهد شبکه حمل‌ونقل عمومی یک شهر را بااستفاده از روش transitEnabled روی نقشه‌تان نمایش دهید. وقتی لایه ترافیک فعال باشد و نقشه روی شهری متمرکز باشد که از اطلاعات حمل‌ونقل عمومی پشتیبانی می‌کند، نقشه خطوط اصلی حمل‌ونقل عمومی را به‌صورت خطوط رنگی ضخیم نمایش می‌دهد. رنگ خط براساس اطلاعات اپراتور خط حمل‌ونقل عمومی تنظیم می‌شود. فعال کردن لایه حمل‌ونقل عمومی سبک نقشه پایه را تغییر می‌دهد تا مسیرهای حمل‌ونقل عمومی بهتر برجسته شود.

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

مثال زیر نشان می‌دهد که لایه ترابری چگونه ممکن است روی نقشه ظاهر شود.

نقشه Google که لایه حمل‌ونقل عمومی را نشان می‌دهد

دسترس‌پذیری

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

Swift

mapView.accessibilityElementsHidden = false
      

آبجکتیو-سی

mapView.accessibilityElementsHidden = NO;
      

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

مکان من

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

Swift

mapView.isMyLocationEnabled = true
      

آبجکتیو-سی

mapView.myLocationEnabled = YES;
      

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

Swift

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

آبجکتیو-سی

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

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

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

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

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

Swift

mapView.isBuildingsEnabled = false
      

آبجکتیو-سی

[mapView setBuildingsEnabled:NO];
      

لایه‌گذاری نقشه

Google Map طوری طراحی شده است که کل منطقه تعریف‌شده توسط GMSMapView را پر کند. چندین جنبه از نحوه نمایش و رفتار نقشه با ابعاد نما تعریف می‌شود:

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

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

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

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

حاشیه‌گذاری داخلی نقشه

برای افزودن حاشیه به نقشه، شیء UIEdgeInsets ایجاد کنید و آن را به GMSMapView ارسال کنید.‫padding دارایی.

Swift

// 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
      

آبجکتیو-سی

// 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: برای تنظیم و به‌روزرسانی آرایش رنگ‌های نقشه استفاده کنید.

Swift

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

آبجکتیو-سی

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;

برای ایجاد سبک‌های روشن و تاریک سفارشی برای نقشه‌هایتان، از سبک‌پردازی نقشه بااستفاده از فضای ابری استفاده کنید.