Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Затишна Галера
Añadido 06 ene. 2025 🌐 UK

Затишна Галера

@Zatishna_Galera
Número de suscriptores: 2 690
Fotos: 1,570
Videos: 475
Enlaces: 2,090
Descripción:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Fuente

Затишна Галера | iOSКомпас 🧭1️⃣7️⃣7️⃣️️️️ Завдання 177Які особливості роботи з MapKit у...

Logotipo de la comunidad de telegram - Затишна Галера Затишна Галера @Zatishna_Galera
495 Vistas/Alcance 2026-10-21 10:00 Mensaje №3079
#iOSКомпас 🧭
1️⃣7️⃣7️⃣️ ️️️ Завдання 177

Які особливості роботи з MapKit у SwiftUI?


SwiftUI та MapKit поступово зближуються. Якщо раніше для складних сценаріїв роботи з картами часто доводилося звертатися до UIKit і обгортати MKMapView у UIViewRepresentable, то тепер для більшості завдань є нативний Map. Розбираємося, які можливості він дає і як ними користуватися.

🔣 Базове відображення:

Найпростіший спосіб - додати карту одним рядком: Map(). Вона автоматично заповнить доступний простір. Її можна оформлювати як будь-який інший SwiftUI-компонент: додавати заокруглення кутів через .cornerRadius, обмежувати розмір через .frame, налаштовувати відступи.

🔣 Налаштування камери:

Керувати тим, що бачить користувач, можна через MapCameraPosition. Камеру можна задати один раз під час створення карти через initialPosition або зв'язати з @State через двосторонній binding position, щоб динамічно змінювати її положення.

Для точного налаштування можна використовувати MapCamera: вказати центр, відстань, кут нахилу (pitch) і напрямок (heading), а потім передати камеру в MapCameraPosition.camera.

🤓 Короткий приклад:

import SwiftUI
import MapKit

struct MapExample: View {
@State private var position: MapCameraPosition = .camera(
MapCamera(
centerCoordinate: .init(
latitude: 50.4501,
longitude: 30.5234
),
distance: 5_000,
heading: 0,
pitch: 30
)
)

var body: some View {
Map(
position: $position,
interactionModes: [.pan, .zoom]
)
.frame(height: 300)
.clipShape(.rect(cornerRadius: 16))
}
}

Тут ми задаємо початкову камеру над Києвом, дозволяємо користувачеві рухати та масштабувати карту, але вимикаємо її обертання й нахил.

🔣 Обмеження видимої області:

Якщо потрібно, щоб користувач не міг піти за межі певної території, використовується MapCameraBounds. Він задає область, у межах якої має залишатися центр карти, а також дозволяє обмежити мінімальну та максимальну дистанцію камери.

🔣 Інтерактивність:

Під час ініціалізації карти можна задати дозволені режими взаємодії: .pan (переміщення), .zoom (масштабування), .rotate (обертання) і .pitch (нахил). За замовчуванням дозволені всі, але їх легко обмежити.

#️⃣ Працювати з картами у SwiftUI стало набагато зручніше. Нативний Map покриває більшість типових сценаріїв: від простого відображення до керування камерою та обмеження видимої області. Якщо потрібні зовсім екзотичні можливості, все ще можна спуститися до UIKit-обгорток, але для більшості завдань вбудованих засобів уже достатньо.

@Zatishna_Galera