با «کیت توسعه نرمافزار Google Maps برای iOS»، میتوانید با تغییر دادن دوربین نقشه، نقطه دید کاربر از نقشه را تغییر دهید.
با «کیت توسعه نرمافزار Google Maps برای iOS»، کاربران شما میتوانند نقشههایتان را کج کنند و بچرخانند تا آنها را در جهتی که برای بافت آنها مفید است تنظیم کنند. در هر سطح بزرگنمایی، کاربران میتوانند نقشه را با تأخیر بسیار کمی حرکت دهند یا چشمانداز آن را تغییر دهند.
تغییرات دوربین نشانگرها، چندخطیها، یا دیگر گرافیکهایی را که اضافه کردهاید تغییر نمیدهد، هرچند ممکن است بخواهید این موارد اضافهشده را تغییر دهید تا با نمای جدید بهتر مطابقت داشته باشند.
نمای نقشه
«کیت توسعه نرمافزار Maps برای iOS» از تصویر مرکاتور برای نمایش سطح جهان (کره) در صفحه دستگاهتان (صفحه تخت) استفاده میکند.
موقعیت دوربین
نمای نقشه بهعنوان دوربینی مدلسازی شده است که به صفحهای تخت نگاه میکند. موقعیت دوربین (و درنتیجه رندر کردن نقشه) با ویژگیهای زیر مشخص میشود: هدف (مکان طول/عرض جغرافیایی)، جهت، شیب، و بزرگنمایی.
هدف (مکان)
هدف دوربین مکان مرکز نقشه است که بهصورت مختصات عرض جغرافیایی و طول جغرافیایی مشخص میشود.
عرض جغرافیایی میتواند بین ۸۵- و ۸۵ درجه باشد. مقادیر بالاتر یا پایینتر از این محدوده به نزدیکترین مقدار در این محدوده محدود خواهند شد. برای مثال، اگر عرض جغرافیایی را ۱۰۰ مشخص کنید، مقدار آن روی ۸۵ تنظیم میشود. طول جغرافیایی بین ۱۸۰- و ۱۸۰ درجه است. مقادیر بالاتر یا پایینتر از این محدوده بهگونهای پیچیده میشوند که در محدوده (۱۸۰-، ۱۸۰) قرار گیرند. برای مثال، ۴۸۰، ۸۴۰، و ۱۲۰۰ همگی به ۱۲۰ درجه تبدیل میشوند.جهت (جهتیابی)
جهت دوربین، جهت قطبنما را مشخص میکند که برحسب درجه از شمال واقعی اندازهگیری میشود و با لبه بالایی نقشه مطابقت دارد. اگر خطی عمودی از مرکز نقشه به لبه بالایی نقشه بکشید، جهت با عنوان دوربین (اندازهگیریشده به درجه) نسبت به شمال واقعی مطابقت دارد.
جهت ۰ یعنی بالای نقشه بهسمت شمال واقعی است. مقدار جهت ۹۰ یعنی بالای نقشه بهسمت شرق است (۹۰ درجه روی قطبنما). مقدار ۱۸۰ یعنی بالای نقشه بهسمت جنوب است.
Maps API به شما امکان میدهد جهت نقشه را تغییر دهید. برای مثال، کسی که رانندگی میکند اغلب نقشه راه را میچرخاند تا آن را با جهت سفرش همراستا کند، درحالیکه کوهنوردان بااستفاده از نقشه و قطبنما معمولاً نقشه را طوری جهتیابی میکنند که خط عمودی به سمت شمال باشد.
شیب (زاویه دید)
شیب موقعیت دوربین را روی قوسی مستقیماً بالای موقعیت مرکز نقشه تعریف میکند که برحسب درجه از سمتالقدم (جهتی که مستقیماً زیر دوربین قرار دارد) اندازهگیری میشود. مقدار ۰ مربوط به دوربینی است که مستقیماً بهسمت پایین گرفته شده است. مقادیر بزرگتر از ۰ مربوط به دوربینی است که بهاندازه تعداد درجه مشخصشده بهسمت افق زاویه دارد. وقتی زاویه دید را تغییر میدهید، نقشه بهصورت پرسپکتیو نمایش داده میشود، بهطوریکه عارضههای دورتر کوچکتر و عارضههای نزدیکتر بزرگتر نشان داده میشوند. تصاویر زیر این موضوع را نشان میدهد.
در تصاویر زیر، زاویه دید ۰ درجه است. تصویر اول طرحوارهای از این موضوع را نشان میدهد؛ موقعیت ۱ موقعیت دوربین است و موقعیت ۲ موقعیت فعلی نقشه است. نقشه حاصل در زیر آن نشان داده میشود.
|
|
در تصاویر زیر، زاویه دید ۴۵ درجه است. توجه کنید که دوربین تا نیمه در امتداد قوسی بین بالای سر (۰ درجه) و زمین (۹۰ درجه) حرکت میکند تا به موقعیت ۳ برسد. دوربین همچنان بهسمت نقطه مرکزی نقشه است، اما منطقهای که با خط در موقعیت ۴ نشان داده شده است اکنون قابلمشاهده است.
|
|
نقشه در این نماگرفت هنوز روی همان نقطه نقشه اصلی متمرکز است، اما ویژگیهای بیشتری در بالای نقشه ظاهر شده است. با افزایش زاویه به بیش از ۴۵ درجه، عوارض بین دوربین و موقعیت نقشه بهطور متناسب بزرگتر ظاهر میشوند، درحالیکه عوارض فراتر از موقعیت نقشه بهطور متناسب کوچکتر ظاهر میشوند و جلوهای سهبعدی ایجاد میکنند.
بزرگنمایی
سطح بزرگنمایی دوربین مقیاس نقشه را تعیین میکند. در سطوح بزرگنمایی بیشتر، جزئیات بیشتری در صفحهنمایش دیده میشود، درحالیکه در سطوح بزرگنمایی کمتر، بخش بیشتری از جهان در صفحهنمایش دیده میشود. در سطح بزرگنمایی ۰، مقیاس نقشه بهگونهای است که کل جهان عرضی حدود ۲۵۶ نقطه دارد.
افزایش سطح بزرگنمایی بهاندازه ۱، عرض جهان را در صفحهنمایش دوبرابر میکند. بنابراین در سطح بزرگنمایی N، عرض جهان تقریباً 256 * 2N نقطه است. برای مثال، در سطح بزرگنمایی ۲، کل جهان تقریباً ۱۰۲۴ نقطه عرض دارد.
سطح بزرگنمایی لازم نیست عدد صحیح باشد. محدوده سطوح بزرگنمایی مجاز توسط نقشه به عوامل متعددی ازجمله هدف، نوع نقشه، و اندازه صفحهنمایش بستگی دارد. هر عددی خارج از این محدوده به نزدیکترین مقدار معتبر بعدی تبدیل میشود که میتواند حداقل سطح بزرگنمایی یا حداکثر سطح بزرگنمایی باشد. فهرست زیر سطح تقریبی جزئیاتی را نشان میدهد که میتوانید در هر سطح بزرگنمایی ببینید:
- ۱: جهانی
- ۵: خشکی/قاره
- ۱۰: شهر
- ۱۵: خیابانها
- ۲۰: ساختمانها
|
|
|
تنظیم موقعیت اولیه دوربین
موقعیت اولیه دوربین را بااستفاده از شیء
GMSCameraPosition
تنظیم کنید که به شما امکان میدهد عرض و طول جغرافیایی هدف را بههمراه
زاویه، کج کردن، و بزرگنمایی تنظیم کنید.
برای تنظیم موقعیت اولیه دوربین، یک شیء GMSMapViewOptions ایجاد کنید و ویژگی camera را روی GMSCameraPosition تنظیم کنید. سپس گزینههایتان را به سازنده راحتی GMSMapView منتقل کنید.
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 16) let mapView = GMSMapView(options:options)
آبجکتیو-سی
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:16]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
همچنین میتوانید شیء GMSMapView را بااستفاده از روش پیشفرض UIView init
ایجاد کنید. در این حالت، موقعیت دوربین از مکان پیشفرض شروع میشود و شما
آن را پساز ایجاد تغییر میدهید.
Swift
let options = GMSMapViewOptions() options.frame = self.view.bounds let mapView = GMSMapView(options:options)
آبجکتیو-سی
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.frame = self.view.bounds; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
تغییر دادن جایگاه دوربین
میتوانید موقعیت دوربین را بهصورت برنامهنویسیشده تغییر دهید تا مکان،
جهت، زاویه، و بزرگنمایی را تنظیم کنید. درحالیکه GMSMapView چندین روش ارائه میدهد که میتوانید از آنها برای تغییر موقعیت دوربین استفاده کنید، معمولاً از GMSCameraPosition یا GMSCameraUpdate استفاده میکنید:
GMSCameraPositionحاوی ویژگیها و روشهایی است که برای تغییر هر پارامتر موقعیت دوربین استفاده میکنید: هدف، جهت، کج کردن، و بزرگنمایی.GMSCameraUpdateبه شما امکان میدهد هدف، جهت، شیب، و بزرگنمایی را تغییر دهید و همچنین شامل روشهای راحتی بیشتری برای پشتیبانی از پیمایش، بزرگنمایی پیشرفته، متمرکز کردن دوربین در مرزهای ازپیش تعریفشده، و غیره است.
وقتی دوربین را حرکت میدهید، میتوانید انتخاب کنید که دوربین به موقعیت جدید «بچسبد»، یعنی پویانمایی وجود نداشته باشد، یا حرکت پویانمایی شود. برای مثال، اگر تغییر مکان هدف دوربین را پویانمایی کنید، پویانمایی از مکان قبلی به مکان جدید حرکت افقی میکند.
پویانمایی بین ویژگیهای دوربین فعلی و ویژگیهای دوربین جدید درونیابی میکند. میتوانید مدت پویانمایی را بااستفاده از Core Animation کنترل کنید.
استفاده از GMSCameraPosition
برای تغییر دادن دوربین با
GMSCameraPosition،
شیء جدیدی ایجاد میکنید یا شیء موجودی را کپی میکنید و سپس آن را روی شیء
GMSMapView تنظیم میکنید. از شیء GMSCameraPosition برای انتقال سریع دوربین به
مکان جدید با یا بدون پویانمایی استفاده کنید.
از شیء GMSCameraPosition برای پیکربندی ویژگیهای دوربین مانند
عرض جغرافیایی، طول جغرافیایی، بزرگنمایی، جهت، و زاویه دید استفاده کنید. سپس از آن شیء برای تنظیم خصوصیت camera از GMSMapView استفاده میکنید.
Swift
let fancy = GMSCameraPosition( latitude: -33, longitude: 151, zoom: 6, bearing: 270, viewingAngle: 45 ) mapView.camera = fancy
آبجکتیو-سی
GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6 bearing:30 viewingAngle:45]; [mapView setCamera:fancy];
هر ویژگی GMSCameraPosition را که میخواهید روی مقدار پیشفرض تنظیم شود حذف کنید.
برای پویانمایی کردن حرکت، بهجای تنظیم کردن ویژگی camera، از روش animateToCameraPosition: استفاده کنید.
استفاده از GMSCameraUpdate
GMSCameraUpdate
به شما امکان میدهد موقعیت دوربین را بهروز کنید و انتخاب کنید که به آن موقعیت جدید
بچسبد یا پویانمایی شود. مزیت GMSCameraUpdate راحتی آن است. میتوانید
از GMSCameraPosition برای انجام همان کارهای GMSCameraUpdate استفاده کنید، اما
GMSCameraUpdate روشهای کمکی بیشتری ارائه میدهد تا
دستکاری دوربین را آسانتر کند.
برای مثال، برای استفاده از GMSCameraPosition برای افزایش سطح بزرگنمایی فعلی، باید ابتدا سطح بزرگنمایی فعلی را تعیین کنید، سپس یک شیء GMSCameraPosition ایجاد کنید که در آن بزرگنمایی را روی مقداری یک واحد بیشتر از بزرگنمایی فعلی تنظیم کنید.
یا اینکه شیء GMSCameraUpdate را با روش zoomIn: بسازید.
سپس با ارسال شیء GMSCameraUpdate به روش GMSMapView animateWithCameraUpdate:، دوربین را بهروز کنید.
Swift
// Zoom in one zoom level let zoomCamera = GMSCameraUpdate.zoomIn() mapView.animate(with: zoomCamera)
آبجکتیو-سی
// Zoom in one zoom level GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; [mapView animateWithCameraUpdate:zoomCamera];
بهجای آن، از روش GMSMapView moveCamera: برای انتقال سریع دوربین به موقعیت جدید
استفاده کنید.
در مثال بعدی، از GMSCameraUpdate برای پویانمایی حرکت دوربین
برای قرار دادن ونکوور در مرکز استفاده میکنید.
Swift
// Center the camera on Vancouver, Canada let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11) let vancouverCam = GMSCameraUpdate.setTarget(vancouver) mapView.animate(with: vancouverCam)
آبجکتیو-سی
// Center the camera on Vancouver, Canada CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11); GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver]; [mapView animateWithCameraUpdate:vancouverCam];
ساختن شیء GMSCameraUpdate
بااستفاده از یکی از روشهای شیء GMSCameraUpdate، آن را بسازید.
-
zoomIn:وzoomOut: - سطح بزرگنمایی فعلی را ۱٫۰ تغییر دهید، درحالیکه همه ویژگیهای دیگر را یکسان نگه میدارید.
zoomTo:- سطح بزرگنمایی را به مقدار دادهشده تغییر میدهد، درحالیکه همه ویژگیهای دیگر را یکسان نگه میدارد.
zoomBy:- سطح بزرگنمایی را بهاندازه مقدار دادهشده افزایش میدهد (یا اگر مقدار منفی باشد، کاهش میدهد).
zoomBy:atPoint:- سطح بزرگنمایی را بهاندازه مقدار دادهشده افزایش (یا اگر مقدار منفی باشد، کاهش) میدهد، درحالیکه موقعیت نقطه مشخصشده را روی صفحه حفظ میکند.
setTarget:- طول و عرض جغرافیایی دوربین را تغییر میدهد، درحالیکه همه خصوصیات دیگر را حفظ میکند.
setTarget:zoom:- عرض جغرافیایی، طول جغرافیایی، و بزرگنمایی دوربین را تغییر میدهد، درحالیکه همه ویژگیهای دیگر را حفظ میکند.
setCamera:GMSCameraPositionجدیدی تنظیم میکند.scrollByX:Y:- طول و عرض جغرافیایی دوربین را تغییر میدهد تا نقشه را به تعداد نقاط مشخصشده جابهجا کند. مقدار x مثبت باعث میشود دوربین به سمت راست حرکت کند، بهطوریکه به نظر میرسد نقشه به سمت چپ حرکت کرده است. مقدار y مثبت باعث میشود دوربین بهسمت پایین حرکت کند، بهطوریکه بهنظر میرسد نقشه بهسمت بالا حرکت کرده است. پیمایش نسبت به جهت فعلی دوربین است. برای مثال، اگر دوربین زاویه ۹۰ درجه داشته باشد، شرق «بالا» است.
fitBounds:- دوربین را تغییر میدهد تا مرزهای مشخصشده را در صفحه در بزرگترین سطح بزرگنمایی ممکن متمرکز کند. حاشیه پیشفرضی به مرزهای ۶۴ نقطهای اعمال میکند.
fitBounds:withPadding:- دوربین را طوری تغییر میدهد که مرزهای مشخصشده را در مرکز صفحه با بیشترین سطح بزرگنمایی ممکن قرار دهد. از این روش برای مشخص کردن حاشیه داخلی یکسان، برحسب نقطه، برای همه طرفهای چارگوش مرزی استفاده کنید.
fitBounds:withEdgeInsets:- دوربین را طوری تغییر میدهد که مرزهای مشخصشده را در
صفحه در بالاترین سطح بزرگنمایی ممکن در مرکز قرار دهد. با
UIEdgeInsets، حاشیه داخلی را برای هر طرف کادر محدودکننده بهطور مستقل مشخص میکنید.
از GMSMapView برای تغییر یک خصوصیت استفاده کنید
GMSMapView
چند روش ارائه میدهد که به شما امکان میدهد دوربین را بدون استفاده از شیء
GMSCameraPosition یا شیء GMSCameraUpdate حرکت دهید. با این روشها،
مثل animateToLocation: یا animateToZoom:، میتوانید تغییر در یک ویژگی دوربین را پویانمایی کنید.
برای مثال، از روش toViewingAngle: برای پویانمایی تغییر در شیب دوربین استفاده کنید.
Swift
mapView.animate(toViewingAngle: 45)
آبجکتیو-سی
[mapView animateToViewingAngle:45];
تنظیم هدف (مکان)
مکان مرکز نقشه را تعیین میکند. مکانها با طول و عرض جغرافیایی مشخص میشوند و بهصورت برنامهنویسیشده با CLLocationCoordinate2D که با CLLocationCoordinate2DMake ایجاد شده است نشان داده میشوند.
برای تغییر مکان، از GMSCameraPosition استفاده کنید. در این مثال، نقشه به مکان جدید میرود.
Swift
let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208) mapView.camera = GMSCameraPosition(target: target, zoom: 6)
آبجکتیو-سی
CLLocationCoordinate2D target = CLLocationCoordinate2DMake(-33.868, 151.208); mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
برای پویانمایی تغییر و جابهجایی نقشه به مکان جدید، میتوانید بهجای تنظیم ویژگی camera، از روش animateToCameraPosition: استفاده کنید. یا،
از روش animateToLocation: در GMSMapView استفاده کنید.
Swift
mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
آبجکتیو-سی
[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
همچنین میتوانید شیء GMSCameraUpdate ایجاد کنید تا دوربین را حرکت دهید. از روش داخلی آن، scrollByX:Y:، برای مشخص کردن تعداد نقاطی که دوربین باید در جهتهای X و Y پیمایش کند استفاده کنید. در این مثال، دوربین را ۲۰۰ نقطه به راست و ۱۰۰ نقطه به پایین پیمایش میکنید:
Swift
// Move the camera 200 points to the right, and 100 points downwards let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100) mapView.animate(with: downwards)
آبجکتیو-سی
// Move the camera 200 points to the right, and 100 points downwards GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0]; [mapView animateWithCameraUpdate:downwards];
تنظیم جهت (جهتیابی)
جهت قطبنمایی است که با درجه از شمال واقعی برای لبه بالایی نقشه اندازهگیری میشود. برای مثال، جهت ۹۰ درجه منجر به نقشهای میشود که لبه بالایی آن بهسمت شرق است.
جهت را بهصورت برنامهنویسی با GMSCameraPosition یا GMSCameraUpdate
یا با روش animateToBearing: از GMSMapView تنظیم کنید.
Swift
mapView.animate(toBearing: 0)
آبجکتیو-سی
[mapView animateToBearing:0];
تنظیم شیب (زاویه دید)
زاویه دید موقعیت دوربین روی یک قوس بین مستقیماً بالای موقعیت مرکز نقشه و سطح زمین است که برحسب درجه از نظیر (جهتی که مستقیماً زیر دوربین را نشان میدهد) اندازهگیری میشود. وقتی زاویه دید را تغییر میدهید، نقشه بهصورت پرسپکتیو نشان داده میشود، بهطوریکه عوارض بین دوربین و موقعیت نقشه بهطور نسبی بزرگتر و عوارض فراتر از موقعیت نقشه بهطور نسبی کوچکتر نشان داده میشوند و جلوهای سهبعدی ایجاد میکنند.
زاویه دید میتواند بین ۰ (اشاره مستقیم به پایین نقشه) و حداکثر وابسته به سطح بزرگنمایی باشد. برای سطح بزرگنمایی ۱۶ یا بالاتر، حداکثر زاویه ۶۵ درجه است. برای سطح بزرگنمایی ۱۰ یا کمتر، حداکثر زاویه ۳۰ درجه است.
زاویه دید را بهصورت برنامهنویسیشده بااستفاده از GMSCameraPosition یا
GMSCameraUpdate یا با روش animateToViewingAngle: مربوط به GMSMapView تنظیم کنید.
Swift
mapView.animate(toViewingAngle: 45)
آبجکتیو-سی
[mapView animateToViewingAngle:45];
تنظیم بزرگنمایی
سطح بزرگنمایی دوربین مقیاس نقشه را تعیین میکند. در سطوح بزرگنمایی بیشتر، میتوانید جزئیات بیشتری را در صفحه ببینید، درحالیکه در سطوح بزرگنمایی کمتر، میتوانید بخش بیشتری از جهان را ببینید.
بزرگنمایی را بهصورت برنامهنویسیشده با GMSCameraPosition یا GMSCameraUpdate یا
با روش animateToZoom: از GMSMapView تنظیم کنید.
Swift
mapView.animate(toZoom: 12)
آبجکتیو-سی
[mapView animateToZoom:12];
مثال زیر از روش zoomIn: برای ساختن شیء GMSCameraUpdate
استفاده میکند تا بزرگنمایی را با یک سطح از سطح فعلی پویانمایی کند.
Swift
// Zoom in one zoom level let zoomCamera = GMSCameraUpdate.zoomIn() mapView.animate(with: zoomCamera)
آبجکتیو-سی
// Zoom in one zoom level GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; [mapView animateWithCameraUpdate:zoomCamera];
تعیین مرزها
برای حرکت دادن دوربین بهگونهای که کل ناحیه موردنظر در بالاترین سطح بزرگنمایی ممکن قابلمشاهده باشد، مرزهایی برای نمای دوربین تنظیم کنید. برای مثال، اگر میخواهید همه پمپبنزینهای موجود در فاصله پنج مایلی از موقعیت فعلی کاربر را نمایش دهید، دوربین را طوری حرکت دهید که همه آنها در صفحه نمایان شوند:
GMSCoordinateBoundsرا که میخواهید روی صفحه نمایان باشد محاسبه کنید.- از روش
cameraForBounds:insets:مربوط بهGMSMapViewبرای برگرداندنGMSCameraPositionجدید استفاده کنید.
این مرزها را طوری تنظیم کنید که GMSCoordinateBounds دادهشده کاملاً در اندازه نقشه فعلی جا شود. توجه داشته باشید که این روش، شیب و جهت نقشه را روی ۰ تنظیم میکند.
مثال زیر نشان میدهد که چگونه دوربین را تغییر دهید تا شهرهای ونکوور و کلگری هر دو در یک نما ظاهر شوند.
Swift
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11) let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05) let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary) let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())! mapView.camera = camera
آبجکتیو-سی
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11); CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05); GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary]; GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero]; mapView.camera = camera;
محدود کردن حرکت افقی کاربر به ناحیهای مشخص
این سناریوها مرزهای نقشه را تعیین میکنند اما کاربر میتواند به خارج از این مرزها پیمایش یا حرکت افقی کند. درعوض، شاید بخواهید مرزهای مرکز مختصات نقطه کانونی نقشه (هدف دوربین) را محدود کنید تا کاربران فقط بتوانند در این مرزها پیمایش و جابهجا شوند.
برای مثال، یک برنامه خردهفروشی برای مرکز خرید یا فرودگاه ممکن است بخواهد نقشه را به مرزهای خاصی محدود کند و به کاربران اجازه دهد در آن مرزها پیمایش و جابهجا شوند.
برای محدود کردن حرکت افقی به مرزهای خاص، ویژگی cameraTargetBounds مربوط به
GMSMapView را روی شیء GMSCoordinateBounds که مرزهای موردنیاز را تعریف میکند تنظیم کنید.
برای برداشتن محدودیت در زمانی دیگر، cameraTargetBounds را روی nil تنظیم کنید.
Swift
mapView.cameraTargetBounds = bounds
آبجکتیو-سی
mapView.cameraTargetBounds = bounds;
نمودار زیر سناریویی را نشان میدهد که در آن نشانگاه دوربین به منطقهای محدود شده است که کمی بزرگتر از نمای هدف است. کاربر میتواند پیمایش و حرکت افقی انجام دهد، بهشرطی که هدف دوربین در محدوده مرز باقی بماند. علامت بهعلاوه نشاندهنده نشانگاه دوربین است:

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

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

تنظیم حداقل یا حداکثر بزرگنمایی
ثابتهای سراسری kGMSMinZoomLevel و kGMSMaxZoomLevel
مقادیر حداقل یا حداکثر بزرگنمایی را تعریف میکنند. بهطور پیشفرض، ویژگیهای minZoom و maxZoom
GMSMapView روی این ثابتها تنظیم شدهاند.
برای محدود کردن محدوده سطوح بزرگنمایی دردسترس برای نقشه، حداقل و حداکثر سطح بزرگنمایی را تنظیم کنید. کد زیر سطح بزرگنمایی را به بین ۱۰ و ۱۵ محدود میکند.
Swift
let camera = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 12 ) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) mapView.setMinZoom(10, maxZoom: 15)
آبجکتیو-سی
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; [mapView setMinZoom:10 maxZoom:15];
باید محدوده بزرگنمایی را با روش setMinZoom:maxZoom: تنظیم کنید؛ اما میتوانید
مقادیر فعلی را بااستفاده از ویژگیهای minZoom و maxZoom بخوانید. این رویکرد زمانی مفید است که فقط یکی از مقادیر محدود شود. کد زیر
فقط حداقل سطح بزرگنمایی را تغییر میدهد.
Swift
mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
آبجکتیو-سی
[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
اگر پساز بهروزرسانی حداقل و حداکثر بزرگنمایی، سطح بزرگنمایی دوربین روی مقداری خارج از محدوده جدید تنظیم شود، بزرگنمایی فعلی بهطور خودکار بهروز میشود تا نزدیکترین مقدار معتبر را نمایش دهد. برای مثال، در کد زیر، بزرگنمایی اصلی ۴ تعریف شده است. وقتی محدوده بزرگنمایی بعداً روی ۱۰-۱۵ تنظیم میشود، بزرگنمایی فعلی به ۱۰ بهروز میشود.
Swift
// Sets the zoom level to 4. let camera2 = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 4 ) let options2 = GMSMapViewOptions() options2.camera = camera2 let mapView2 = GMSMapView(options: options2) // The current zoom, 4, is outside of the range. The zoom will change to 10. mapView2.setMinZoom(10, maxZoom: 15)
آبجکتیو-سی
// Sets the zoom level to 4. GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:4]; GMSMapViewOptions *options2 = [[GMSMapViewOptions alloc] init]; options2.camera = camera2; GMSMapView *mapView2 = [[GMSMapView alloc] initWithOptions:options2]; // The current zoom, 4, is outside of the range. The zoom will change to 10. [mapView setMinZoom:10 maxZoom:15];