В этом обзоре описывается, как настроить карту, добавленную в приложение iOS с помощью Maps SDK для iOS.
Обзор
После добавления карты в приложение вы можете настроить начальные параметры и параметры времени выполнения карты. Подробную информацию о добавлении контейнера карты см. в разделе Добавление карты .
Первоначальные настройки карты включают в себя следующее:
- Положение камеры, включая: местоположение, масштабирование, направление и наклон. См. раздел «Камера и просмотр» для получения подробной информации о расположении камеры.
- Цвет фона карты.
- Тип карты .
- Отображаемые компоненты пользовательского интерфейса , такие как кнопки масштабирования и компас.
- Жесты для включения.
Во время выполнения вы можете настроить эти параметры и некоторые дополнительные параметры, обновив объект GMSMapView
.
Параметры карты
При инициализации представления карты параметры конфигурации задаются с помощью GMSMapViewOptions
. Свойства опций включают в себя frame
, camera
, mapID
или backgroundColor
.
Параметры карты | |
---|---|
рамка | Значение: CGRect Рамка карты. По умолчанию CGRectZero. |
камера | Значение: GMSCameraPosition Положение камеры по умолчанию. |
идентификатор карты | Значение: 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)
Цель-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
. В следующем примере показано, как слой пробок может выглядеть на карте.
Доступность
По умолчанию элементы доступности на карте скрыты. Вы можете включить специальные возможности, установив для свойства 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-карта зданий в Сиэтле, штат Вашингтон.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=3&hl=ru)
Вы можете отключить 3D-здания, установив соответствующее свойство GMSMapView
в Swift или Objective-C, как показано ниже:
Быстрый
mapView.isBuildingsEnabled = false
Цель-C
[mapView setBuildingsEnabled:NO];
Заполнение карты
Карта Google предназначена для заполнения всего региона, определенного GMSMapView
. Некоторые аспекты внешнего вида и поведения карты определяются размерами представления:
- Цель камеры отражает центр дополненной области.
- Элементы управления картой расположены относительно краев карты.
- Юридическая информация, такая как заявления об авторских правах или логотип Google, отображается вдоль нижнего края карты.
Вы можете добавить отступы по краям карты с помощью GMSMapView
. свойство padding
. Карта продолжает заполнять весь контейнер, но расположение текста и элементов управления, жесты карты и движения камеры ведут себя так, как если бы она была помещена в меньшее пространство. Это приводит к следующим изменениям:
- Движения камеры с использованием вызовов API или нажатия кнопок (например, компас, мое местоположение) выполняются относительно дополненной области.
-
GMSMapView
.projection
возвращает проекцию, включающую только дополненную область. - Элементы управления пользовательского интерфейса смещены от края контейнера на указанное количество точек.
Отступы могут быть полезны при разработке пользовательских интерфейсов, перекрывающих некоторую часть карты. Например, на изображении карта заполнена по верхнему и правому краям. Видимые элементы управления картой и допустимый текст отображаются по краям заполненной области (зеленый цвет), в то время как карта продолжает заполнять весь контейнер, показанный синим цветом. В этом примере вы можете разместить меню в правой части карты, не закрывая элементы управления картой.
Чтобы добавить отступы к карте, создайте объект 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;