Free Open source MIT

A real 3D globe, rendered natively in Metal.

platformsiOS 18 · macOS 15 languageSwift 6 · SwiftUI renderingMetal sourceGitHub

ImmersiveMap is an open-source Swift + Metal map engine for SwiftUI. It renders a real 3D globe that morphs into a flat map, with vector tiles, labels, a starfield and live avatar markers, natively on iOS and macOS. No web view.

Manhattan with 3D buildings and shadows The Chicago Loop under a tilted camera Berlin Mitte in the dark palette Berlin Mitte from a tilted camera Avatar markers with badges over Shibuya A 3D scene model by the Eiffel Tower The globe with the atmosphere and stars The Bolshoi Theatre over the measured streetscape
View the project on GitHub

Everything lives on GitHub: source code, documentation and releases. Found a bug? Open an issue and I'll get back to you.

Quick start

Two steps to a map on screen. Point the engine at our tile servers, and that is the integration. The tiles are public: no key and no sign-up.

1 Add the package
https://github.com/artembobkin/ImmersiveMap.git

In Xcode: File → Add Package Dependencies…, paste the URL, then add the ImmersiveMap library to your app target.

2 Drop it into a view
import SwiftUI
import ImmersiveMap

struct ContentView: View {
    var body: some View {
        ImmersiveMapView()
            .tileURLTemplate("https://immersivemap.dev/tiles/{z}/{x}/{y}.mvt")
            .ignoresSafeArea()
    }
}

It renders on iOS and macOS from the same SwiftUI code. The URL above is the whole integration: the planet, z0 to z16, refreshed from OpenStreetMap by our own pipeline.

Swift 6 · Xcode 16 · iOS 18 · macOS 15 Watch the tutorials → Read the docs →

Early Partner Program

For the teams building their map on ImmersiveMap first.

If you are building on ImmersiveMap while it is still early, we would love to work with you. No terms and no conditions, just a conversation.

What we would love
  • Your app on ImmersiveMap: a real map, in production, used by real people
  • Honest feedback: where the engine shines and where it falls short on your data
  • A story worth telling: how the integration went, in your words, if you are up for it
How it starts
  • Open an issue and say hello: what you are building and where you are with it
  • Talk it through: questions, ideas and rough edges, in the open on GitHub
Start the conversation

Nothing to apply for and no waiting list. Open an issue and tell us what you are building.