map3d v0.6.0
A photorealistic 3D city rendered by map3d, with the drawing editor open over it

Paris Google Photorealistic 3D Tiles 48.8584° N · 2.2945° E

React 19 · three.js ≥ 0.160 · ESM + CJS + types

Real-time 3D
cartography
for React

Cartographie 3D temps réel pour React.

An imperative Three.js engine that React mounts and then stays out of. MapEngine owns the camera, the tiles and the layers, so the frame loop never waits on a re-render.

npm i @pasquelin/map3d three react react-dom

Version
0.6.0
Peers
react 19 · three ≥ 0.160
Build
ESM + CJS + .d.ts
Licence
PolyForm Noncommercial

Live demos

Run it in the browser

No install, no key. The demos below are built from this repository on every push and served straight from GitHub Pages.

Capabilities

What ships in the box

Every surface — toolbar, controls, search, coordinate grid, clustering — is mounted inside <Map> and driven by configuration. You add the data.

In action

The tools, at work

Every screenshot below is the demo you can open above — no mockups.

Quick start

A clustered map in a dozen lines

import { Map, markersLayer, type MarkerData } from '@pasquelin/map3d'

type Alert = { title: string }

const alerts: MarkerData<Alert>[] = [
  { id: 1, type: 'critical', position: { lat: 48.8566, lng: 2.3522 }, title: 'Intrusion', data: { title: 'Intrusion' } },
  { id: 2, type: 'info', position: { lat: 48.8606, lng: 2.3376 }, title: 'Patrol', data: { title: 'Patrol' } },
]

export function App() {
  return (
    <div style={{ height: '100vh' }}>
      <Map
        center={{ lat: 48.8566, lng: 2.3522 }}
        zoom={13}
        layers={[markersLayer<Alert>({ points: alerts, cluster: { enabled: true } })]}
      />
    </div>
  )
}

Optional plugins — IGN Géoplateforme, Windy, indoor floor plans — live in a separate repository, and you can write your own with the plugin API.