Overview
World Monitor’s interactive globe uses deck.gl and MapLibre GL JS to deliver a high-performance, WebGL-accelerated 3D map visualization. The system renders thousands of concurrent markers at 60fps while supporting seamless switching between 3D globe and flat map modes.Performance: The map can handle 10,000+ simultaneous data points without dropping below 60fps on modern hardware, thanks to WebGL hardware acceleration.
Map Modes
The globe supports two rendering modes configurable viaVITE_MAP_INTERACTION_MODE:
- 3D Globe Mode
- Flat Map Mode
Features:
- Full 3D spherical projection
- Pitch and rotation controls
- Realistic perspective rendering
- Great circle arcs for routes
WebGL Rendering Pipeline
Architecture
The map uses a layered rendering approach:- MapLibre GL JS - Base map tiles and terrain
- deck.gl MapboxOverlay - High-performance data layer rendering
- Supercluster - Intelligent marker clustering at low zoom levels
Performance Optimizations
The map includes several performance optimizations that are automatically applied based on zoom level and viewport size.
- Markers fade from 0.2 opacity at world view
- Gradually increase to 1.0 at street level
- Prevents visual clutter at low zoom
- Supercluster groups markers at low zoom
- Cluster sizes adapt to zoom level
- Expands to individual markers on zoom in
- Threshold calculation:
Math.max(60, Math.min(150, 200 - zoom * 20))
Map Controls
Navigation Controls
| Control | Action |
|---|---|
| Mouse drag | Pan the map |
| Scroll wheel | Zoom in/out |
| Right-click + drag | Rotate (3D mode only) |
| Ctrl + drag | Adjust pitch (3D mode only) |
| Double-click | Zoom to location |
Regional Presets
Quickly jump to predefined regional views:- Global Regions
- Specialized Views
- Global - Full world view
- Americas - North and South America
- Europe - European continent
- MENA - Middle East & North Africa
- Asia - Asia-Pacific region
- Center coordinates
- Zoom level
- Active data layers (region-specific)
Time Filtering
Filter events by recency:- 1h - Last hour (breaking events)
- 6h - Last 6 hours (recent developments)
- 24h - Last day (default)
- 48h - Last 2 days
- 7d - Last week
- all - All historical data
URL State Sharing
Map state is encoded in the URL for shareable views:view- Regional preset (global, mena, eu, asia, etc.)zoom- Zoom level (0-20)lat/lng- Center coordinateslayers- Comma-separated active layerstime- Time range filter
Share links with colleagues to highlight specific geographic areas and active intelligence layers.
Layer System
See Data Layers for complete layer documentation. The map supports 40+ toggleable data layers organized by category:- Geopolitical - Conflicts, protests, disasters
- Military & Strategic - Bases, flights, vessels
- Infrastructure - Cables, pipelines, datacenters
- Market & Crypto - Exchanges, financial centers
- Tech Ecosystem - HQs, cloud regions, accelerators (Tech variant)
- Finance & Markets - Stock exchanges, central banks (Finance variant)
Mobile Graceful Degradation
On devices below 768px width, the system automatically degrades to a lighter-weight renderer:Mobile users receive a warning modal since the dashboard is optimized for multi-panel desktop use. Core map functionality remains available.
WebGL Support Detection
- Automatic fallback to SVG renderer
- Reduced layer complexity
- Preserved core map functionality
Map Styling
The map supports multiple base styles:- Dark Theme (Default)
- Light Theme
- Low-contrast base map
- Optimized for data layer visibility
- Reduces eye strain during extended monitoring
- Theme color:
#0a0f0a
Pin Mode
Click the 📌 button to enable Pin Mode:- Map remains fixed in position during scroll
- Allows panel browsing without losing map context
- State persisted to localStorage
- Ideal for dual-monitor setups
Ultra-Wide Monitor Layout
On screens ≥2000px wide, the layout automatically switches to an L-shaped arrangement:Technical Implementation
Core Dependencies
Bundle Optimization
- MapLibre loads independently (~500KB)
- deck.gl stack bundles separately (~1.2MB)
- Progressive loading for faster initial paint
Error Handling
The map includes comprehensive error handling:Best Practices
Performance Tips
- Disable unused layers to improve rendering speed
- Use time filters to reduce active marker count
- On lower-end hardware, prefer flat map over 3D globe
- Close other browser tabs to free GPU resources
Related Features
- Data Layers - Complete layer reference
- Live News - Map-integrated news markers
- Desktop App - Native OS integration and performance
Troubleshooting
Map not loading?- Check browser WebGL2 support: visit
https://get.webgl.org/webgl2/ - Try disabling browser extensions (ad blockers can interfere)
- Clear browser cache and reload
- Reduce active layers
- Disable 3D globe mode
- Lower screen resolution
- Check GPU drivers are up to date
- Verify layer is enabled in controls
- Check time filter isn’t too restrictive
- Confirm data source is active in [Status Panel]