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

Выберите платформу: 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
Нет фрагментов карты. Фрагменты базовой карты не будут отображаться. Этот режим полезен в сочетании со слоями фрагментов . Отображение данных о дорожном движении отключено, если выбран тип карты «Нет».

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

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

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

Быстрый

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

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

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

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

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

Слой трафика

Вы можете предоставить пользователям возможность просматривать карту с наложенной на неё информацией о плотности дорожного движения. Это обеспечивает наглядное представление о ситуации на дорогах в вашем регионе. Вы можете включать и отключать слой дорожного движения, вызывая метод 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 Maps предназначена для заполнения всей области, определяемой GMSMapView . Некоторые аспекты отображения и поведения карты определяются размерами представления:

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

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

  • Движения камеры с использованием вызовов 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;
      

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

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

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

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