
В этой статье на примере показано, как добавить базовую 3D-карту в приложение для iOS с помощью Maps 3D SDK для iOS. Инструкции на этой странице предполагают, что вы уже выполнили действия, описанные в разделе Настройка, и у вас есть:
- Проект Google Cloud с включенным Maps 3D SDK для iOS.
- ключ API для Maps 3D SDK для iOS;
- Xcode версии 16.0 или более поздней с добавленным пакетом Maps 3D SDK для iOS.
Подробнее о настройке…
Выполните более сложную практическую работу.
Часть 1. Создание базового приложения SwiftUI
- Создайте новое приложение в Xcode.
- Укажите название товара
Hello3DWorldи идентификатор организацииcom.example. Название пакета должно бытьcom.example.Hello3DWorld. - Выберите интерфейс SwiftUI.
- Добавьте библиотеку Maps 3D в приложение. Инструкции приведены в разделе настройки.
Часть 2. Добавьте карту
Откройте файл
ContentView.swift. Это точка входа и основная навигация для вашего приложения.Импортируйте
SwiftUIи пакетGoogleMaps3D.Замените весь код внутри объявления body на Map(mode: .hybrid).
Минимальная начальная конфигурация, которую необходимо предоставить для инициализации
Map, – этоMapMode:.hybrid,.roadmapили.satellite
Ваш файл
ContentView.swiftдолжен выглядеть следующим образом:import SwiftUI import GoogleMaps3D struct ContentView: View { var body: some View { Map(mode: .hybrid) } } #Preview { ContentView() }
Часть 3. Настройте ключ API.
Ключ API необходимо задать до инициализации карты. Для этого задайте
Map.apiKeyв обработчике событийinit()элементаView, содержащего карту.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(mode: .hybrid) } }
Часть 4. Управление областью просмотра карты с помощью камеры
Управление 3D-картами осуществляется с помощью класса Camera. На этом шаге вы узнаете, как настроить вид карты, указав местоположение, высоту, направление, наклон, крен и диапазон.
Измените вызов функции
Map(), чтобы включить свойствоinitialCamera. ИнициализируйтеinitialCamera, чтобы показать вид на центр Манхэттена.import SwiftUI import GoogleMaps3D struct ContentView: View { init () { Map.apiKey = "YOUR_API_KEY" } var body: some View { Map(initialCamera: .init( center: .init(latitude: 40.748339, longitude: -73.985912, altitude: 211.1), heading: 52, tilt: 68, roll: 0.0, range: 1039, fieldOfView: .degrees(50) ), mode: .hybrid) } }
В приведенном выше коде заданы значения для следующих параметров:
center:LatLngAltitude, представляющий местоположение камеры.heading– азимут в градусах от севера, на который направлена камера.tilt– угол наклона в градусах, где 0 – это вид сверху, а 90 – вид по горизонтали.roll– угол крена вокруг вертикальной плоскости камеры в градусах.range– расстояние в метрах от камеры до точки с указанными координатами.fieldOfView– угол, представляющий зону обзора камеры.
Если вы не укажете эти дополнительные параметры, будут использоваться значения по умолчанию.
Чтобы на карте отображалось больше 3D-данных, задайте начальные параметры так, чтобы карта была приближена и наклонена.
Часть 5. Предварительный просмотр и запуск приложения
Добавьте Xcode Preview
Предварительный просмотр – это мощная функция XCode, которая позволяет просматривать приложение и взаимодействовать с ним без использования симулятора или внешнего устройства.
Чтобы добавить предпросмотр, добавьте блок кода
#Preview {}за пределами структуры.#Preview { ContentView() }Запустите приложение.
Соберите и запустите приложение.
Состояния загрузки карты и ошибки
Maps 3D SDK для iOS автоматически показывает встроенные визуальные подсказки, управляя состоянием Map:
- Оверлей загрузки. При инициализации или загрузке карты в центре экрана показывается индикатор выполнения.
- Оверлей с ошибкой. Показывается, если не удалось загрузить карту.
Если вы применяете облачный стиль карты с помощью style(mapID:error:) в Map, то можете передать замыкание error для обработки ошибок загрузки стиля.
Отслеживание нажатий на карту
Чтобы отслеживать нажатия на карте, примените модификатор onTap(_:) к Map.
Когда пользователь нажимает на карту, замыкание получает значение MapTapInfo, которое предоставляет location (LatLngAltitude) и нажатый content (MapTapInfo.Content.map или MapTapInfo.Content.place(id:)). Дополнительную информацию о взаимодействии с объектами инфраструктуры можно найти в разделе Взаимодействие с объектами инфраструктуры.
Map(mode: .hybrid)
.onTap { tapInfo in
print("Tapped at \(tapInfo.location), content: \(tapInfo.content)")
}
Поздравляем!
Вы успешно добавили 3D-карту в приложение.
Теперь вы можете изучить более сложные функции Maps 3D SDK для iOS, например анимацию траектории камеры, 3D-маркеры или многоугольники.