Parigi Google Photorealistic 3D Tiles 48.8584° N · 2.2945° E
React 19 · three.js ≥ 0.160 · ESM + CJS + types
Cartografia 3D
in tempo reale
per React
Real-time 3D cartography for React.
Un motore Three.js imperativo che React monta e poi lascia lavorare. MapEngine possiede la camera, i tile e i layer, così il ciclo di rendering non aspetta mai un re-render.
npm i @pasquelin/map3d three react react-dom
- Versione
- 0.6.0
- Peers
- react 19 · three ≥ 0.160
- Build
- ESM + CJS + .d.ts
- Licenza
- PolyForm Noncommercial
Demo live
Provala nel browser
Senza installazione né chiavi. Le demo vengono compilate da questo repository a ogni push e servite direttamente da GitHub Pages.
Galleria
Dall’orbita al marciapiede
Una sola libreria copre tutta la discesa: globo orbitale, clustering regionale, linea dei tetti, nomi delle strade sotto i piedi.
-
12 700 km Dal globo alla mappa piana fallback ellissoidale, clustering intelligente
-
9 km Marker e cluster nodi DOM riciclati, divisi per categoria
-
3 km Skyline e orizzonte i marker mantengono la dimensione a schermo, qualunque sia l’inclinazione
-
900 m Reticolo di coordinate aderente al suolo, spessore di linea costante a schermo
-
1,7 m Modalità pedone altezza degli occhi, gravità, collisioni
Funzionalità
Cosa c’è nella scatola
Ogni superficie — barra strumenti, controlli, ricerca, reticolo, clustering — è montata dentro <Map> e guidata dalla configurazione. Tu metti i dati.
-
3D fotorealistico, 2D piano
cesiumIonTokenGoogle Photorealistic 3D Tiles tramite Cesium Ion, un globo ellissoidale quando manca il token, e una mappa base 2D servita da Google o dal tuo server XYZ. -
Marker e cluster in DOM
markersLayer()Veri nodi DOM con hover, focus e animazioni CSS nativi. Riciclati e scritti in un’unica passatatranslate3d; un agente in movimento scivola invece di essere ricreato. -
Editor di disegno
drawSelezione a riquadro e lazo, maniglie di ridimensionamento e rotazione, stili per strumento, annulla/ripeti, GeoJSON in entrata e in uscita. -
Dati live guidati dalla vista
useLiveData()Ricarica per bounding box mentre la camera si muove, più aggiornamenti in tempo reale. -
Simbologia MIL-STD-2525D
import dinamicoL’SDK di simbologia, 9 MB, viene caricato su richiesta — non entra mai in un bundle che non mostra simboli. -
Tema ed etichette tipizzati
theme · labelsChiaro e scuro,prefers-reduced-motionrispettato, interamente traducibile. Nessuna stringa o valore scritto a mano nel codice.
All’opera
Gli strumenti al lavoro
Ogni schermata viene dalla demo che puoi aprire qui sopra — nessun mockup.
-
Disegno e selezionemaniglie di ridimensionamento e rotazione, pannello di selezione live, annulla/ripeti
-
Palette MIL-STD-2525Damico, ostile, neutrale, sconosciuto — SDK caricato su richiesta
-
Catalogo e sorgentiattivi una sorgente, arrivano 252 punti e i cluster si ricompongono
-
Tema chiaroun’impostazione — tutta l’interfaccia segue, mappa compresa
Per iniziare
Una mappa con cluster in una dozzina di righe
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>
)
}
I plugin opzionali — IGN Géoplateforme, Windy, piante d’interni — vivono in un repository separato, e puoi scrivere il tuo con la API plugin.