<!--
{
  "documentType" : "article",
  "framework" : "MapKit",
  "identifier" : "/documentation/MapKit/mapkit-for-swiftui",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "MapKit for SwiftUI"
}
-->

# MapKit for SwiftUI

MapKit for SwiftUI allows you to build map-centric views and apps across Apple platforms. You can design expressive and highly interactive Maps with minimal code by composing views, using ViewBuilders and view modifiers.

## Discussion

Like MapKit for AppKit and UIKit, MapKit for SwiftUI allows you to take advantage of map styles ranging from satellite imagery to rich, 3D perspective imagery to present vivid maps. Using [`MapContentBuilder`](/documentation/MapKit/MapContentBuilder) you can configure your maps to show [`Marker`](/documentation/MapKit/Marker) and [`Annotation`](/documentation/MapKit/Annotation) views, or — for more specialized content — you can design your own SwiftUI views to place on the map. To add even more interactivity, MapKit for SwiftUI supports overlays to highlight areas on the map, enabling you to animate paths and directions using [`MapPolyline`](/documentation/MapKit/MapPolyline), or make it easy for people to dig deeper into on the ground details with tappable points of interest. People who use your app can also explore at street level using [`LookAroundPreview`](/documentation/MapKit/LookAroundPreview) and Look Around viewer.

> Note:
> For more information about integrating MapKit into your app using SwiftUI, see WWDC23 session 10043: [Meet MapKit for SwiftUI](https://developer.apple.com/videos/play/wwdc2023/10043/)

## Topics

[Searching, displaying, and navigating to places](/documentation/MapKit/searching-displaying-and-navigating-to-places)

Convert place information between coordinates and user-friendly place names, get cycling directions, and conveniently display formatted addresses.

### Essentials

[`Map`](/documentation/MapKit/Map)

A view that displays an embedded map interface.

[`MapStyle`](/documentation/MapKit/MapStyle)

A style that you can apply to a map.

### Annotations and overlays

[`Annotation`](/documentation/MapKit/Annotation)

A customizable annotation used to indicate a location on a map.

[`MapCircle`](/documentation/MapKit/MapCircle)

A circular overlay with a configurable radius that you center on a geographic coordinate.

[`MapPolygon`](/documentation/MapKit/MapPolygon)

A closed polygon overlay.

[`MapPolyline`](/documentation/MapKit/MapPolyline)

An open polygon overlay consisting of one or more connected line segments.

[`Marker`](/documentation/MapKit/Marker)

A balloon-shaped annotation that marks a map location.

[`UserAnnotation`](/documentation/MapKit/UserAnnotation)

Displays the person’s current location on the map.

### Map controls

[`MapCompass`](/documentation/MapKit/MapCompass)

A view that reflects the current orientation of the associated map.

[`MapLocationCompass`](/documentation/MapKit/MapLocationCompass)

A view that displays a combined user location button and map compass.

[`MapPitchSlider`](/documentation/MapKit/MapPitchSlider)

A slider control that allows a person to change the pitch of the map.

[`MapPitchToggle`](/documentation/MapKit/MapPitchToggle)

A button that sets the pitch of the associated map.

[`MapScaleView`](/documentation/MapKit/MapScaleView)

Displays a legend with distance information for the associated map.

[`MapUserLocationButton`](/documentation/MapKit/MapUserLocationButton)

A button that sets the framing of the associated map to the user location.

[`MapZoomStepper`](/documentation/MapKit/MapZoomStepper)

Buttons a person uses to adjust the zoom level of the map.

### Exploring at street level

[`LookAroundPreview`](/documentation/MapKit/LookAroundPreview)

A view that provides a Look Around preview for a specific geographic location.

### Map features

[`MapFeature`](/documentation/MapKit/MapFeature)

A tappable map feature.

[`MapSelection`](/documentation/MapKit/MapSelection)

A value representing a selected feature on a map.

[`MapSelectable`](/documentation/MapKit/MapSelectable)

### Map customization

[`MapCamera`](/documentation/MapKit/MapCamera)

Defines a virtual viewpoint above the map surface.

[`MapCameraBounds`](/documentation/MapKit/MapCameraBounds)

Defines an optional boundary of an area within which the map’s center needs to remain.

[`MapCameraPosition`](/documentation/MapKit/MapCameraPosition)

A structure that describes how to position the map’s camera within the map.

[`MapCameraUpdateContext`](/documentation/MapKit/MapCameraUpdateContext)

A structure that defines additional information about the map camera.

[`MapCameraUpdateFrequency`](/documentation/MapKit/MapCameraUpdateFrequency)

A structure that describes when the map camera updates.

### Place information

[`MapItemDetailSelectionAccessoryStyle`](/documentation/MapKit/MapItemDetailSelectionAccessoryStyle)

The map item detail selection accessory style.

[`mapItemDetailSelectionAccessory(_:)`](/documentation/MapKit/MapContent/mapItemDetailSelectionAccessory(_:))

Specifies the selection accessory to display for the selected map item content.

[`callout(_:)`](/documentation/MapKit/MapItemDetailSelectionAccessoryStyle/callout(_:))

Presents the accessory as an annotation callout on the map.

### Geocoding

[`MKGeocodingRequest`](/documentation/MapKit/MKGeocodingRequest)

A class that looks up a geographic coordinate using the provided string.

[`MKReverseGeocodingRequest`](/documentation/MapKit/MKReverseGeocodingRequest)

A class that looks up address strings for the provided geographic coordinates.

### Representing places and addresses

[`MKMapItem`](/documentation/MapKit/MKMapItem)

A point of interest on the map.

[`MKAddress`](/documentation/MapKit/MKAddress)

A class that contains a full address, and, optionally, a short address.

[`MKAddressRepresentations`](/documentation/MapKit/MKAddressRepresentations)

A class that provides formatted address strings.

  <doc://com.apple.documentation/documentation/GeoToolbox>

### Points of interest

[`PointOfInterestCategories`](/documentation/MapKit/PointOfInterestCategories)

A structure you use to define points of interest to include or exclude on a map.

### Protocols

[`DynamicMapContent`](/documentation/MapKit/DynamicMapContent)

A  type of view that generates views from an underlying collection of data.

[`MapContent`](/documentation/MapKit/MapContent)

A protocol used to construct map content such as controls, markers, and annotations.

[`MapContentBuilder`](/documentation/MapKit/MapContentBuilder)

A result builder that creates map content from closures you provide.

[`MapContentView`](/documentation/MapKit/MapContentView)

A view that contains content that displays on a map at a specific position, and that responds to specific interactions you specify.

### Structures

[`DefaultUserAnnotationContent`](/documentation/MapKit/DefaultUserAnnotationContent)

A structure that represents the view to show at the user’s location on the map.

[`EmptyMapContent`](/documentation/MapKit/EmptyMapContent)

A map content element that doesn’t contain any content.

[`MapProxy`](/documentation/MapKit/MapProxy)

A proxy for accessing sizing information about a given map view.

[`MapReader`](/documentation/MapKit/MapReader)

A container view that defines its contents as a function of information about the first contained map.

[`TupleMapContent`](/documentation/MapKit/TupleMapContent)

A view created from a Swift tuple of map content values.

[`MapSelectableContentView`](/documentation/MapKit/MapSelectableContentView)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
