Enterprise-grade 3D mapping solution with real-time location tracking and route visualization
Feature | Description |
---|---|
🌍 3D Map Rendering | Interactive Mapbox GL-powered 3D terrain visualization |
📍 Live Tracking | Real-time user location updates with compass heading |
🛣️ Smart Routing | Multi-waypoint polyline generation with traffic awareness |
🔍 GeoSearch | Type-ahead location search with fuzzy matching |
📊 Analytics | Usage metrics tracking for map interactions |
graph TD
A[Presentation Layer] -->|Events| B[Domain Layer]
B -->|Use Cases| C[Data Layer]
C -->|Repositories| D[Mapbox API]
C -->|Local Sources| E[Device Sensors]
lib/
├── core/
│ ├── constants/ # API keys, style URLs
│ ├── error/ # Custom exceptions
│ └── usecases/ # Base use case
│
├── features/map/
│ ├── data/ # Data sources & repositories
│ ├── domain/ # Entities & business logic
│ └── presentation/ # BLoCs & UI
- Mapbox Access Token (Get Free Tier)
- Flutter 3.22+
- Android Studio/Xcode
-
Clone Repository
git clone https://github.com/Qasim-afzaal/flutter_3d_map_box.git cd flutter_3d_map_box
-
Configure Environment
// lib/core/constants/constants.dart const String mapboxAccessToken = 'pk.your_token'; const String mapboxStyleUrl = 'mapbox://styles/your_style';
-
Run & Build
flutter pub get flutter run -d chrome --web-renderer html
class MapBloc extends Bloc<MapEvent, MapState> {
final GetPolylines getPolylines;
Stream<MapState> mapEventToState(MapEvent event) async* {
if (event is FetchPolylines) {
yield Loading();
final failureOrPolylines = await getPolylines(params);
yield failureOrPolylines.fold(
(failure) => Error(message: _mapFailure(failure)),
(polylines) => Loaded(polylines: polylines),
);
}
}
}
MapboxMap(
accessToken: Constants.mapboxAccessToken,
styleString: Constants.mapboxStyleUrl,
onMapCreated: (controller) {
_controller = controller;
_setupLocationTracking();
},
)
Metric | Value |
---|---|
Map Load Time | <1.2s |
Location Update Delay | 250ms |
Polyline Rendering | 60 FPS |
Memory Usage | <85MB |
Issue | Solution |
---|---|
Blank Map | Verify Mapbox token |
Location Drift | Calibrate device compass |
Routing Failures | Check internet connection |
- Fork repository
- Create feature branch:
git checkout -b feat/3d-buildings
- Commit changes:
git commit -m 'Add 3D extrusion support'
- Push to branch:
git push origin feat/3d-buildings
- Open pull request