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

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

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

Обзор

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

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

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

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

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

Параметры карты
рамка
Значение: CGRect
Рамка карты. По умолчанию CGRectZero.
камера
Значение: GMSCameraPosition
Положение камеры карты по умолчанию.
mapID
Значение: GMSMapID
Google mapID. Необязательный параметр.
Цвет фона
Значение: 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)

Objective-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

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

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Типы карт

Вы можете настроить свою карту с помощью одного из нескольких типов карт. Тип карты определяет общее представление карты. Например, атлас обычно содержит политические карты, которые фокусируются на отображении границ, и дорожные карты, которые показывают все дороги для города или региона. Maps SDK для iOS предлагает следующие типы карт:

Тип карты
Нормальный
Значение: kGMSTypeNormal
Типичная дорожная карта. Показывает дороги, некоторые объекты, построенные людьми, и важные природные объекты, такие как реки. Также видны метки дорог и объектов. Поддерживает настройку цветовой схемы карты на темную, светлую или в соответствии с системными настройками.
Гибридный
Значение: kGMSTypeHybrid
Данные спутниковых фотографий с добавленными дорожными картами. Также видны метки дорог и объектов.
Спутник
Значение: kGMSTypeSatellite
Данные спутниковой фотографии. Дорожные знаки и обозначения объектов не видны.
Местность
Значение: kGMSTypeTerrain
Топографические данные. Карта включает цвета, контурные линии и метки, а также перспективную штриховку. Некоторые дороги и метки также видны. Поддерживает установку цветовой схемы карты на темную, светлую или в соответствии с системными настройками.
Никто
Значение: kGMSTypeNone
Нет фрагментов карты. Фрагменты базовой карты не будут визуализироваться. Этот режим полезен в сочетании со слоями фрагментов . Отображение данных о дорожном движении отключено, если тип карты установлен на none.

Изменить тип карты

Чтобы задать тип карты, присвойте новое значение свойству 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

Objective-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 будет показывать планы этажей для внутренних помещений, таких как аэропорты, торговые центры, крупные розничные магазины и транзитные станции. Планы этажей в помещениях интегрированы в плитки карты по умолчанию для типа карты «normal» ( kGMSTypeNormal ) и автоматически включаются, когда пользователь увеличивает масштаб, и исчезают, когда карта уменьшается.

Вы можете отключить внутренние карты, установив свойство indoorEnabled объекта GMSMapView в NO .

Быстрый

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

В качестве альтернативы вы можете отключить только элемент управления «Выбор этажа» .

Добавить планы этажей

Планы этажей доступны в некоторых местах . Если данные плана этажа недоступны для здания, которое вы хотели бы выделить в своей заявке, вы можете:

  • Добавляйте планы этажей непосредственно в Google Maps. Это делает ваши планы доступными для всех пользователей Google Maps.
  • Отобразить план этажа в виде наложения на поверхность . Это позволяет просматривать планы этажей только пользователям вашего приложения.

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

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

Карта Google, показывающая слой трафика

Доступность

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

Быстрый

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

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

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

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

Быстрый

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

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

Быстрый

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

3D здания

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

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

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

Быстрый

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

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

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

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

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

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

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

Map Padding

Чтобы добавить отступы к карте, создайте объект UIEdgeInsets и передайте его свойству padding GMSMapView .

Быстрый

// 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
      

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

Цветовая схема карты

Для карт типа normal и terrain можно установить цветовую схему карты на темную, светлую или использовать текущие системные настройки. Например, можно затемнить или осветлить цветовую схему карты в зависимости от времени суток или использования устройства в помещении или на улице.

Используйте 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

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

Чтобы создать собственные светлые и темные стили для ваших карт, используйте облачные стили карт .