با استفاده از Maps SDK برای iOS، میتوانید نحوه تعامل کاربران با نقشه خود را با تعیین اینکه کدام یک از اجزای رابط کاربری داخلی روی نقشه ظاهر میشوند و کدام حرکات مجاز هستند، سفارشی کنید.
کنترل های نقشه
Maps SDK برای iOS برخی از کنترلهای UI داخلی را ارائه میکند که مشابه موارد موجود در Google Maps برای برنامه iOS هستند. با استفاده از کلاس GMSUISettings
میتوانید قابلیت مشاهده این کنترلها را تغییر دهید. تغییرات ایجاد شده در این کلاس بلافاصله روی نقشه منعکس می شود.
قطب نما
Maps SDK برای iOS یک گرافیک قطب نما را ارائه می دهد که تحت شرایط خاص در گوشه سمت راست بالای نقشه ظاهر می شود. قطب نما فقط زمانی ظاهر می شود که دوربین به گونه ای باشد که دارای یک یاتاقان غیر صفر باشد. هنگامی که کاربر روی قطب نما کلیک می کند، دوربین به موقعیتی با تحمل صفر (جهت پیش فرض) متحرک می شود و پس از مدت کوتاهی قطب نما محو می شود.
قطب نما به طور پیش فرض غیرفعال است. میتوانید با تنظیم ویژگی compassButton
در GMSUISettings
روی YES
، قطبنما را فعال کنید. با این حال، نمی توانید قطب نما را مجبور کنید همیشه نشان داده شود.
سویفت
let camera = GMSCameraPosition(latitude: 37.757815, longitude: -122.50764, zoom: 12) let mapView = GMSMapView(frame: .zero, camera: camera) mapView.settings.compassButton = true
هدف-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.757815 longitude:-122.50764 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.settings.compassButton = YES;
دکمه موقعیت مکانی من
دکمه موقعیت مکانی من تنها زمانی در گوشه سمت راست پایین صفحه ظاهر می شود که دکمه موقعیت مکانی من فعال باشد. هنگامی که کاربر روی دکمه کلیک می کند، دوربین متحرک می شود تا بر روی مکان فعلی کاربر تمرکز کند، اگر مکان کاربر در حال حاضر مشخص باشد. میتوانید با تنظیم ویژگی myLocationButton
در GMSUISettings
روی YES
، دکمه را فعال کنید.
سویفت
mapView.settings.myLocationButton = true
هدف-C
mapView.settings.myLocationButton = YES;
کفگیر
هر زمان که یک نقشه داخلی به طور برجسته نشان داده شود، کنترل انتخابگر طبقه در نزدیکی سمت راست پایین صفحه ظاهر می شود. هنگامی که دو یا چند نقشه داخلی قابل مشاهده است، انتخابگر طبقه به نزدیکترین ساختمان به مرکز صفحه مربوط می شود. هر ساختمان دارای یک طبقه پیش فرض است که زمانی که انتخاب کننده برای اولین بار نمایش داده می شود، انتخاب می شود. شما می توانید با انتخاب طبقه متفاوت از انتخاب کننده، طبقه دیگری را انتخاب کنید.
میتوانید با تنظیم ویژگی indoorPicker
GMSUISettings
روی NO
، کنترل طبقهگیر را غیرفعال کنید.
سویفت
mapView.settings.indoorPicker = false
هدف-C
mapView.settings.indoorPicker = NO;
حرکات نقشه
میتوانید با تنظیم ویژگیهای کلاس GMSUISettings
، که به عنوان ویژگی GMSMapView
در دسترس است، حرکات پیشفرض روی نقشه را غیرفعال کنید. ژست های زیر را می توان به صورت برنامه ریزی فعال و غیرفعال کرد. توجه داشته باشید که غیرفعال کردن ژست دسترسی برنامهای به تنظیمات دوربین را محدود نمیکند.
-
scrollGestures
- فعال یا غیرفعال بودن حرکات اسکرول را کنترل می کند. در صورت فعال بودن، کاربران میتوانند انگشت خود را برای حرکت به دوربین بکشند. -
zoomGestures
- فعال یا غیرفعال بودن حرکات زوم را کنترل می کند. در صورت فعال بودن، کاربران میتوانند برای بزرگنمایی دوربین، دو بار ضربه بزنند، دو انگشت ضربه بزنند یا نیشگون بگیرند. توجه داشته باشید که وقتیscrollGestures
فعال است، دوبار ضربه زدن یا نیشگون گرفتن آن ممکن است دوربین را تا نقطه مشخص شده حرکت دهد. -
tiltGestures
- فعال یا غیرفعال بودن حرکات شیب را کنترل می کند. اگر فعال باشد، کاربران میتوانند از یک تند کشیدن دو انگشتی عمودی به پایین یا بالا برای کج کردن دوربین استفاده کنند. -
rotateGestures
- فعال یا غیرفعال بودن حرکات چرخشی را کنترل می کند. در صورت فعال بودن، کاربران می توانند از حرکت چرخش دو انگشتی برای چرخاندن دوربین استفاده کنند.
در مثال زیر، هر دو حرکت حرکت و زوم غیرفعال شده است.
سویفت
override func loadView() { let camera = GMSCameraPosition.camera( withLatitude: 1.285, longitude: 103.848, zoom: 12 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.settings.scrollGestures = false mapView.settings.zoomGestures = false self.view = mapView }
هدف-C
- (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.settings.scrollGestures = NO; mapView.settings.zoomGestures = NO; self.view = mapView; }