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.
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.
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.
A single shader blends between sphere and plane as zoom changes — no hard switch. Tilt, rotate and fly from orbit down to street level.
Decodes Mapbox Vector Tiles and triangulates polygons on device. Swap in Mapbox, OpenStreetMap, or a self-hosted tileset behind one protocol.
MSDF text atlases keep place names sharp at any scale on the curved surface, with avatar markers that stay pinned to the world.
A rendered starfield sits behind the globe, and NASA Black Marble night-lights tiles light up the dark side of the earth.
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)
}
}
ImmersiveMap is MIT-licensed and built in the open. Try it in your app, file an issue, or just spin the globe.