MapKit SwiftUI Map with .standard(elevation: .realistic) falls back to 2D in globe mode, while .hybrid(elevation: .realistic) remains 3D

Overview

When using SwiftUI Map with .standard(elevation: .realistic) and a globe-style presentation, the map unexpectedly renders as a flat 2D map instead of a 3D globe / realistic terrain view.

In the same view, switching to .hybrid(elevation: .realistic) preserves the expected 3D globe behavior.

This appears to be a rendering bug or regression specific to the .standard style under globe mode, not an app-level issue. The issue is reproducible in my app’s competition map screen and has also been reported by other developers online.


Steps to Reproduce

  1. Create a SwiftUI Map.
  2. Bind it to a MapCameraPosition.
  3. Apply a standard map style with realistic elevation: .mapStyle(.standard(elevation: .realistic))
  4. Configure the UI so the user can switch between:
  • standard + globe
  • hybrid + globe
  1. Zoom out / interact with the map in globe mode.

Expected Results

Map with .standard(elevation: .realistic) should continue to render with globe / 3D realistic terrain behavior, consistent with realistic elevation support and similar to .hybrid(elevation: .realistic).


Actual Results

When the map style is .standard(elevation: .realistic) in globe mode, the map falls back to a flat 2D-looking representation.

Changing the same map to .hybrid(elevation: .realistic) restores the expected 3D globe rendering.


Regression

Unknown, but this appears to be unintended behavior because:

  • realistic elevation is intended to provide realistic terrain / 3D map rendering, and
  • there are no overlays in this map configuration that should intentionally force the map into a flat representation.

Minimal Relevant Code From My App

private enum CompetitionMapMode: String, CaseIterable {
    case satellite
    case explore

    func mapStyle(look: CompetitionMapLook) -> MapStyle {
        switch self {
        case .satellite:
            return .hybrid(elevation: look.elevation)
        case .explore:
            return .standard(elevation: look.elevation)
        }
    }
}

private enum CompetitionMapLook: String, CaseIterable {
    case globe
    case flat

    var elevation: MapStyle.Elevation {
        switch self {
        case .globe:
            return .realistic
        case .flat:
            return .flat
        }
    }
}

Map(position: $cameraPosition, selection: $selectedMapItemID) {
    UserAnnotation()

    ForEach(mapDisplayItems) { item in
        Annotation(
            item.title,
            coordinate: item.coordinate,
            anchor: .bottom
        ) {
            mapAnnotationView(for: item)
        }
        .tag(item.id)
    }
}
.mapStyle(mapModeSelection.mapStyle(look: mapLookSelection))

Why I Believe This Is a Framework Bug

The same Map instance renders correctly in 3D when using:

.hybrid(elevation: .realistic)

but falls back to 2D with:

.standard(elevation: .realistic)

under globe mode.

This suggests the issue is tied specifically to the .standard rendering path in SwiftUI Map / MapKit, rather than camera state, annotations, or location handling.

My map does include annotations, but it does not add overlays that would intentionally flatten realistic terrain.


Environment

  • Xcode: Xcode 26.4 (17E192)
  • SDK: SDK Version 26.4 (23E237)
  • Device: iPhone 17 Pro
  • iOS version: iOS 26.5 Beta 2
  • Reproducibility: Always
  • App type: SwiftUI app using MapKit Map

Additional Notes

  • The issue is visible in a production app screen, not only a toy sample.
  • The problem appears style-specific:
  • .standard(elevation: .realistic) → incorrect 2D fallback
  • .hybrid(elevation: .realistic) → expected 3D behavior
  • This makes standard map style unusable for globe presentation in my app.
MapKit SwiftUI Map with .standard(elevation: .realistic) falls back to 2D in globe mode, while .hybrid(elevation: .realistic) remains 3D
 
 
Q