LAT 48.857 · LON 2.352 · Z 3 · SwiftUI

A real 3D globe, rendered natively in Metal.

ImmersiveMap is an open-source map engine for SwiftUI. Vector tiles, labels, a starfield and avatar markers — with a globe that morphs into a flat map as you zoom. No web view. No JavaScript bridge. Just Swift and Metal.

platformsiOS 18 · macOS 15 languageSwift 6 · SwiftUI renderingMetal licenseMIT
What it renders

Everything you'd build a web view for — done in Metal.

One SwiftUI view draws the whole scene on the GPU: the sphere, the tiles, the type and the sky. It reads standard Mapbox Vector Tiles, so you can point it at your own tile server or OpenStreetMap.

globe ⇄ flat

Continuous globe morph

A single shader blends between sphere and plane as zoom changes — no hard switch. Tilt, rotate and fly from orbit down to street level.

MVT

Vector tiles, your provider

Decodes Mapbox Vector Tiles and triangulates polygons on device. Swap in Mapbox, OpenStreetMap, or a self-hosted tileset behind one protocol.

MSDF

Crisp labels & avatars

MSDF text atlases keep place names sharp at any scale on the curved surface, with avatar markers that stay pinned to the world.

night lights

Starfield & night lights

A rendered starfield sits behind the globe, and NASA Black Marble night-lights tiles light up the dark side of the earth.

Get started

A globe in a handful of lines.

Add the Swift package, drop ImmersiveMapView into your hierarchy, and configure it with the modifiers you already know from SwiftUI.

It composes like any SwiftUI view — declarative camera, provider and style, no delegates or view controllers.

github.com/artembobkin/ImmersiveMap
import SwiftUI
import ImmersiveMap

struct ContentView: View {
    var body: some View {
        ImmersiveMapView()
            .tileProvider(.openStreetMap)
            .camera(center: (48.85, 2.35), zoom: 3)
            .mapStyle(.standard)
    }
}

Open the map. Star the repo.

ImmersiveMap is MIT-licensed and built in the open. Try it in your app, file an issue, or just spin the globe.