В этом обзоре описывается, как настроить карту, добавленную в приложение 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
. Следующий пример показывает, как слой трафика может отображаться на карте.
Доступность
По умолчанию элементы доступности на карте скрыты. Вы можете включить доступность, установив свойство 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-здания, установив соответствующее свойство GMSMapView
в Swift или Objective-C, как показано ниже:
Быстрый
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
Заполнение карты
Карта Google разработана для заполнения всего региона, определенного GMSMapView
. Несколько аспектов того, как выглядит и ведет себя карта, определяются размерами представления:
- Цель камеры отражает центр области с подкладкой.
- Элементы управления картой располагаются относительно краев карты.
- Юридическая информация, такая как заявления об авторских правах или логотип Google, отображается вдоль нижнего края карты.
Вы можете добавить отступы по краям карты с помощью свойства GMSMapView
. padding
. Карта продолжает заполнять весь контейнер, но текст и позиционирование элементов управления, жесты карты и движения камеры ведут себя так, как будто они были помещены в меньшее пространство. Это приводит к следующим изменениям:
- Движения камеры с использованием вызовов API или нажатий кнопок (например, компас, мое местоположение) выполняются относительно области с отступами.
-
GMSMapView
возвращаетprojection
, которая включает только дополненную область. - Элементы управления пользовательского интерфейса смещены от края контейнера на указанное количество точек.
Отступы могут быть полезны при проектировании пользовательских интерфейсов, которые перекрывают некоторую часть карты. Например, на изображении карта отступает вдоль верхнего и правого краев. Видимые элементы управления картой и юридический текст отображаются вдоль краев отступаемой области, показанной зеленым цветом, в то время как карта продолжает заполнять весь контейнер, показанный синим цветом. В этом примере вы можете разместить меню поверх правой стороны карты, не заслоняя элементы управления картой.
Чтобы добавить отступы к карте, создайте объект 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;
Чтобы создать собственные светлые и темные стили для ваших карт, используйте облачные стили карт .