این نمای کلی نحوه پیکربندی نقشه ای را که با استفاده از 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 را غیرفعال کنید.
اضافه کردن پلان های طبقه
نقشه های طبقات در مکان های انتخابی موجود است. اگر داده های پلان طبقه برای ساختمانی که می خواهید در برنامه خود برجسته کنید در دسترس نیست، می توانید:
- نقشه های طبقات را مستقیماً به Google Maps اضافه کنید . این باعث می شود برنامه های شما در دسترس همه کاربران Google Maps باشد.
- یک پلان طبقه را به عنوان روکش زمین نمایش دهید. این فقط کاربران برنامه شما را قادر می سازد تا پلان های طبقه شما را مشاهده کنند.
لایه ترافیک
می توانید به کاربران خود این امکان را بدهید که نقشه را با اطلاعات تراکم ترافیک که در بالای آن قرار گرفته است، مشاهده کنند. این یک خلاصه تصویری از وضعیت ترافیک محلی آنها را ارائه می دهد. با فراخوانی متد 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 از لبه کانتینر با تعداد نقاط مشخص شده جابجا میشوند.
هنگام طراحی رابطهای کاربری که روی بخشی از نقشه همپوشانی دارند، پد کردن میتواند مفید باشد. به عنوان مثال، در تصویر، نقشه در امتداد لبه های بالا و سمت راست قرار گرفته است. کنترلهای نقشه قابل مشاهده و متن قانونی در امتداد لبههای ناحیه پرشده، به رنگ سبز نشان داده میشود، در حالی که نقشه همچنان کل ظرف را که به رنگ آبی نشان داده شده است، پر میکند. در این مثال، میتوانید منویی را در سمت راست نقشه بدون پنهان کردن کنترلهای نقشه شناور کنید.
برای افزودن پد به نقشه خود، یک شی 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;