A sophisticated 3D mapping application built with React, Deck.gl, and Three.js that visualizes building models on interactive maps with multimedia content integration.
This application provides an immersive 3D mapping experience featuring:
- Interactive 3D Building Visualization: Renders GLB/GLTF building models on maps
- Dual Map Styles: Terrain and Street map views with seamless switching
- Multimedia Integration: Clickable markers for images and videos
- Advanced WebGL Rendering: Custom WebGL layers and Three.js integration
- Real-time Lighting: PBR lighting effects for realistic 3D models
- 3D Building Models: Displays "Enclave at Kelsey Creek" building model using GLB format
- Map Integration: Built on Mapbox with Deck.gl for advanced visualization
- Interactive Markers: Clickable icons for image galleries and video content
- Responsive Design: Optimized for various screen sizes and devices
- Custom WebGL Layers: Direct WebGL shader programming for custom rendering
- Three.js Integration: Seamless Three.js scene rendering within Deck.gl
- PBR Lighting: Physically Based Rendering for realistic material appearance
- Terrain Support: 3D terrain visualization with elevation data
- Sky Atmosphere: Dynamic sky rendering with sun positioning
- React 18.2.0 - Modern React with hooks and concurrent features
- Vite 3.2.1 - Fast build tool and development server
- React Router DOM 7.1.5 - Client-side routing
- Deck.gl 9.1.1 - WebGL-powered data visualization framework
- Three.js 0.173.0 - 3D graphics library
- Mapbox GL JS 3.10.0 - Interactive maps
- React Map GL 8.0.1 - React wrapper for Mapbox
- Zustand 3.5.10 - Lightweight state management
- TanStack React Query 4.13.4 - Server state management
- Axios 1.3.4 - HTTP client
- PrimeReact 10.9.2 - UI component library
- Styled Components 5.3.0 - CSS-in-JS styling
- Framer Motion 6.5.1 - Animation library
- PrimeFlex 4.0.0 - CSS utility framework
- React Image Gallery 1.4.0 - Image gallery component
- React Player 2.16.0 - Video player with Vimeo support
- Loaders.gl - GLB/GLTF model loading
src/
βββ api/ # API configuration and endpoints
β βββ country.js # Country data API
β βββ index.js # Axios configuration
β βββ trade.js # Trade data API
βββ components/ # Reusable UI components
β βββ Containers/ # Container components
β βββ Labels/ # Label components
β βββ Loader/ # Loading components
β βββ Navbar/ # Navigation components
β βββ ...
βββ pages/Main/ # Main application page
β βββ components/ # Page-specific components
β β βββ ImageDialog.jsx # Image gallery modal
β β βββ VideoDialog.jsx # Video player modal
β β βββ TerrainMap.jsx # Terrain map view
β β βββ StreetMap.jsx # Street map view
β β βββ ThreeLayer.js # Three.js integration layer
β β βββ MyWebGLLayer.js # Custom WebGL layer
β βββ Main.jsx # Main page component
βββ state/ # State management
β βββ store.js # Zustand store configuration
βββ theme/ # Theming system
β βββ ThemeProvider.js # Theme context provider
β βββ theme.js # Theme configuration
βββ utils/ # Utility functions
- TerrainMap: 3D terrain visualization with satellite imagery
- StreetMap: Custom street map style with building models
- ThreeLayer: Custom Deck.gl layer integrating Three.js scenes
- MyWebGLLayer: Direct WebGL shader implementation
- ImageDialog: Modal displaying image galleries
- VideoDialog: Modal with Vimeo video player
- IconLayer: Clickable markers for multimedia content
- Zustand Store: Manages UI state (modals, menu visibility)
- React Query: Handles server state and caching
- Node.js 20+ - JavaScript runtime
- Yarn - Package manager (recommended)
-
Install Yarn globally (if not already installed):
npm install --global yarn
-
Install dependencies:
yarn install
-
Start development server:
yarn start
-
Open your browser and navigate to
http://localhost:4000
yarn start- Start development server with hot reloadyarn build- Build production bundleyarn lint- Run ESLint with auto-fixyarn format- Format code with Prettier
- Access Token: Configured for Mapbox services
- Map Styles:
- Terrain:
mapbox://styles/mapbox/satellite-streets-v12 - Street: Custom style
mapbox://styles/belopot/ckbt1oxxw0gjr1jlahbsj7c3s
- Terrain:
- Terrain Source:
mapbox://mapbox.mapbox-terrain-dem-v1
- Building Model: GLB format from GitHub CDN
- Location: Enclave at Kelsey Creek (Bellevue, WA)
- Coordinates:
[-122.142386, 47.61232] - Lighting: PBR with ambient and directional lighting
- Add GLB/GLTF model to public directory or CDN
- Update coordinates in map components
- Configure ScenegraphLayer with new model path
- Theme: Modify
src/theme/files - Components: Update styled-components in respective files
- Map Styles: Configure Mapbox styles in map components
- Update
public/images/with new images - Modify
ImageGalleryViewercomponent - Update marker coordinates in IconLayer
- Custom WebGL layers provide direct shader control
- Three.js integration enables complex 3D scenes
- Deck.gl handles WebGL context management
- GLB models are loaded asynchronously
- Terrain data uses Mapbox's optimized tiles
- WebGL layers are efficiently managed by Deck.gl
- Modern browsers with WebGL support required
- ES2020+ features utilized (BigInt support)
- Responsive design for mobile and desktop
This project is licensed under the terms specified in the LICENSE file.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
For questions or issues, please refer to the project's issue tracker or contact the development team.