Элементы управления и жесты

Выберите платформу: Android iOS JavaScript

С помощью 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;
}