
iOS 17
принесла разработчикам SwiftUI
настоящий подарок от MapKit
— кучу новых фишек, которые не потребуют никаких шаманских бубнов и костылей из UIKit
:
- новый
Map (position:selection:content:)
задает положение камерыposition
и отслеживает выборselection
на карте, - внутрь карты
Map
можно добавлять аннотации, маркеры, полигоны, маршруты через обычныйSwiftUI DSL
(ForEach, Marker, Annotation
и т.д.), который называетсяMapContentBuilder
и позволяет строить карты декларативно, как обычныйView
, LookAroundPreview
(аналог панорам улиц) можно показать для конкретной точки на карте,- теперь стандартные элементы управления картой добавляются через модификаторы: компас .
mapControl(.compass),
пользовательmapControl(.userLocation)
, масштабная линейка.mapControl(.scaleView)
, - данные поисковых подсказок
MKLocalSearchCompletion
теперь легко попадают вSwiftUI
через@State
.
Чтобы разобраться с новыми API
, я решила поработать с небольшим скромным iOS
приложением, которое описывается в посте Building a searchable map with SwiftUI and MapKit (перевод этого поста на русский находится здесь) вместе с блестящим ИИ от Google, Gemini 2.5 Pro Experimental
, чтобы привести его в работоспособное состояние.