С помощью Maps SDK для iOS можно настраивать способ взаимодействия пользователей с картой, определив, какие из встроенных компонентов интерфейса будут отображаться на карте и какие жесты можно использовать.
Кнопки управления картой
В Maps SDK для iOS предусмотрены встроенные элементы управления пользовательского интерфейса, сходные с теми, которые используются в приложении "Google Карты" для iOS. Они отображаются и скрываются с помощью класса GMSUISettings.
Изменения, выполненные для этого класса, сразу же отображаются на карте.
Компас
В Maps SDK для iOS предусмотрен значок компаса, который появляется в правом верхнем углу, если камера ориентирована в направлении, отличном от нуля. Когда пользователь нажимает на компас, камера возвращается в положение, при котором направление равно нулю (ориентация по умолчанию), после чего компас скрывается.
По умолчанию компас отключен. Чтобы включить компас, задайте для свойства compassButton объекта GMSUISettings значение YES. Сделать так, чтобы он всегда был виден, нельзя.
Swift
let camera = GMSCameraPosition(latitude: 37.757815, longitude: -122.50764, zoom: 12) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) mapView.settings.compassButton = true
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.757815 longitude:-122.50764 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.settings.compassButton = YES;
Кнопка "Мое местоположение"
Кнопка геолокации отображается в правом нижнем углу экрана только, если она включена. При нажатии этой кнопки камера фокусируется на текущем местоположении пользователя, если оно известно. Чтобы включить кнопку, задайте для свойства myLocationButton объекта GMSUISettings значение YES.
Swift
mapView.settings.myLocationButton = true
Objective-C
mapView.settings.myLocationButton = YES;
Выбор этажа
Элемент управления для выбора этажа появляется в правом нижнем углу экрана, когда на карте показано здание. Если на экране отображается несколько схем зданий, модуль выбора этажа относится к тому зданию, которое находится ближе к центру экрана. Для каждого здания предусмотрен этаж, который показывается по умолчанию при первом появлении модуля на экране. Можно отобразить другой этаж, выбрав его в модуле выбора.
Чтобы отключить элемент управления выбором этажа, задайте для свойства indoorPicker объекта GMSUISettings значение NO.
Swift
mapView.settings.indoorPicker = false
Objective-C
mapView.settings.indoorPicker = NO;
Управление картой с помощью жестов
Вы можете отключить жесты по умолчанию на карте, задав свойства класса GMSUISettings, который доступен как свойство GMSMapView.
Ниже перечислены жесты, которые можно включить и отключить программным способом. Обратите внимание, что отключение жеста не ограничивает программный доступ к настройкам камеры.
scrollGestures– определяет, включены ли жесты прокрутки. Если этот жест разрешен, пользователи могут провести пальцем вдоль устройства для панорамирования карты.zoomGestures– включает/отключает жесты масштабирования. Если этот параметр включен, пользователи могут дважды нажать на экран, нажать на него двумя пальцами или свести пальцы, чтобы изменить масштаб камеры. Обратите внимание, что двойное нажатие или сведение пальцев при включенном свойствеscrollGesturesможет привести к панорамированию камеры в указанную точку.tiltGestures– определяет, включены ли жесты наклона. Если этот параметр включен, пользователи могут наклонять камеру, проводя по экрану двумя пальцами вверх или вниз.rotateGestures– определяет, включены ли жесты поворота. Если включено, пользователи могут поворачивать камеру, вращая карту двумя пальцами.
В приведенном ниже примере жесты панорамирования и масштабирования отключены.
Swift
override func loadView() { let camera = GMSCameraPosition.camera( withLatitude: 1.285, longitude: 103.848, zoom: 12 ) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) mapView.settings.scrollGestures = false mapView.settings.zoomGestures = false self.view = mapView }
Objective-C
- (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.settings.scrollGestures = NO; mapView.settings.zoomGestures = NO; self.view = mapView; }