Настройка карты

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

В этом обзоре описывается, как настроить карту, добавленную в приложение iOS с помощью Maps SDK для iOS.

Обзор

После добавления карты в приложение вы можете настроить начальные параметры и параметры времени выполнения карты. Подробную информацию о добавлении контейнера карты см. в разделе Добавление карты .

Первоначальные настройки карты включают в себя следующее:

Во время выполнения вы можете настроить эти параметры и некоторые дополнительные параметры, обновив объект GMSMapView .

Параметры карты

При инициализации представления карты параметры конфигурации задаются с помощью GMSMapViewOptions . Свойства опций включают в себя frame , camera , mapID или backgroundColor .

Параметры карты
рамка
Значение: CGRect
Рамка карты. По умолчанию CGRectZero.
камера
Значение: GMSCameraPosition
Положение камеры по умолчанию.
идентификатор карты
Значение: GMSMapID
идентификатор карты Google. Необязательный параметр.
фонЦвет
Значение: 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. Благодаря этому ваши планы будут доступны всем пользователям Карт Google.
  • Отображение плана этажа в виде наложения земли . Это позволит просматривать планы этажей только пользователям вашего приложения.

Уровень трафика

Вы можете предоставить своим пользователям возможность просматривать карту с наложенной поверх нее информацией о плотности трафика. Это дает визуальное представление о местной дорожной ситуации. Вы можете включать и выключать уровень трафика, вызывая метод trafficEnabled . В следующем примере показано, как слой пробок может выглядеть на карте.

Карта Google, показывающая движение транспорта слой

Доступность

По умолчанию элементы доступности на карте скрыты. Вы можете включить специальные возможности, установив для свойства accessibilityElementsHidden GMSMapView значение NO . Это приводит к созданию элементов доступности для наложенных объектов (таких как GMSMarker и информационные окна, GMSPolyline и т. д.).

Быстрый

mapView.accessibilityElementsHidden = false
      

Цель-C

mapView.accessibilityElementsHidden = NO;
      

Это свойство соответствует неофициальному протоколу UIAccessibility , за исключением того, что значение по умолчанию в Maps SDK для iOS — YES .

Мое местоположение

По умолчанию на карте не отображаются данные о местоположении. Вы можете включить синюю точку «Мое местоположение» и направление компаса, установив myLocationEnabled в GMSMapView .

Быстрый

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);
      

3D здания

Во многих городах, если смотреть вблизи, будут видны трехмерные здания, как это видно на изображении Сиэтла, штат Вашингтон, ниже.

3D-карта зданий в Сиэтле, штат Вашингтон.

Вы можете отключить 3D-здания, установив соответствующее свойство GMSMapView в Swift или Objective-C, как показано ниже:

Быстрый

mapView.isBuildingsEnabled = false
      

Цель-C

[mapView setBuildingsEnabled:NO];
      

Заполнение карты

Карта Google предназначена для заполнения всего региона, определенного GMSMapView . Некоторые аспекты внешнего вида и поведения карты определяются размерами представления:

  • Цель камеры отражает центр дополненной области.
  • Элементы управления картой расположены относительно краев карты.
  • Юридическая информация, такая как заявления об авторских правах или логотип Google, отображается вдоль нижнего края карты.

Вы можете добавить отступы по краям карты с помощью GMSMapView . свойство padding . Карта продолжает заполнять весь контейнер, но расположение текста и элементов управления, жесты карты и движения камеры ведут себя так, как если бы она была помещена в меньшее пространство. Это приводит к следующим изменениям:

  • Движения камеры с использованием вызовов API или нажатия кнопок (например, компас, мое местоположение) выполняются относительно дополненной области.
  • GMSMapView . projection возвращает проекцию, включающую только дополненную область.
  • Элементы управления пользовательского интерфейса смещены от края контейнера на указанное количество точек.

Отступы могут быть полезны при разработке пользовательских интерфейсов, перекрывающих некоторую часть карты. Например, на изображении карта заполнена по верхнему и правому краям. Видимые элементы управления картой и допустимый текст отображаются по краям заполненной области (зеленый цвет), в то время как карта продолжает заполнять весь контейнер, показанный синим цветом. В этом примере вы можете разместить меню в правой части карты, не закрывая элементы управления картой.

Map Padding

Чтобы добавить поля к карте, создайте объект 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;