feat: add Jordan 3D topographic platform, Siro Map cinematic orbit studio, sun-shadow simulation, and sovereign intelligence security gating
This commit is contained in:
@@ -163,10 +163,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
|
||||
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.18"
|
||||
version: "0.12.19"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -179,10 +179,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
|
||||
sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.18.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -256,10 +256,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
|
||||
sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.9"
|
||||
version: "0.7.11"
|
||||
typed_data:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -301,5 +301,5 @@ packages:
|
||||
source: hosted
|
||||
version: "6.6.1"
|
||||
sdks:
|
||||
dart: ">=3.9.0-0 <4.0.0"
|
||||
dart: ">=3.10.0-0 <4.0.0"
|
||||
flutter: ">=3.22.0"
|
||||
|
||||
@@ -179,6 +179,103 @@ class IntaleqMapController {
|
||||
? CameraPosition.fromMapLibre(_raw.cameraPosition!)
|
||||
: null;
|
||||
|
||||
/// Direct access to underlying MapLibreMapController.
|
||||
mgl.MapLibreMapController get raw => _raw;
|
||||
|
||||
/// Sets camera tilt (0.0 to 60.0 degrees) smoothly.
|
||||
Future<void> setTilt(double tilt, {Duration duration = const Duration(milliseconds: 300)}) async {
|
||||
final pos = cameraPosition;
|
||||
if (pos == null) return;
|
||||
await _raw.animateCamera(
|
||||
mgl.CameraUpdate.newCameraPosition(
|
||||
mgl.CameraPosition(
|
||||
target: pos.target,
|
||||
zoom: pos.zoom,
|
||||
bearing: pos.bearing,
|
||||
tilt: tilt.clamp(0.0, 60.0),
|
||||
),
|
||||
),
|
||||
duration: duration,
|
||||
);
|
||||
}
|
||||
|
||||
/// Sets camera bearing (0.0 to 360.0 degrees) smoothly.
|
||||
Future<void> setBearing(double bearing, {Duration duration = const Duration(milliseconds: 100)}) async {
|
||||
final pos = cameraPosition;
|
||||
if (pos == null) return;
|
||||
await _raw.animateCamera(
|
||||
mgl.CameraUpdate.newCameraPosition(
|
||||
mgl.CameraPosition(
|
||||
target: pos.target,
|
||||
zoom: pos.zoom,
|
||||
bearing: (bearing % 360.0 + 360.0) % 360.0,
|
||||
tilt: pos.tilt,
|
||||
),
|
||||
),
|
||||
duration: duration,
|
||||
);
|
||||
}
|
||||
|
||||
/// Smooth cinematic orbit step by [deltaDegrees].
|
||||
Future<void> orbitStep(double deltaDegrees, {Duration duration = const Duration(milliseconds: 60)}) async {
|
||||
final pos = cameraPosition;
|
||||
if (pos == null) return;
|
||||
final newBearing = (pos.bearing + deltaDegrees) % 360.0;
|
||||
await _raw.animateCamera(
|
||||
mgl.CameraUpdate.newCameraPosition(
|
||||
mgl.CameraPosition(
|
||||
target: pos.target,
|
||||
zoom: pos.zoom,
|
||||
bearing: newBearing,
|
||||
tilt: pos.tilt,
|
||||
),
|
||||
),
|
||||
duration: duration,
|
||||
);
|
||||
}
|
||||
|
||||
/// Sets layer visibility in the active style.
|
||||
Future<void> setLayerVisibility(String layerId, bool visible) async {
|
||||
if (!_isStyleLoaded) return;
|
||||
try {
|
||||
await _raw.setLayerVisibility(layerId, visible);
|
||||
} catch (e) {
|
||||
print("⚠️ [IntaleqController] setLayerVisibility error for $layerId: $e");
|
||||
}
|
||||
}
|
||||
|
||||
/// Updates sun lighting and shadows simulation across terrain and 3D buildings.
|
||||
Future<void> updateSunSimulation({
|
||||
required double sunAzimuth,
|
||||
required String shadowColorHex,
|
||||
required String highlightColorHex,
|
||||
required String buildingColorHex,
|
||||
double buildingOpacity = 0.88,
|
||||
double hillshadeExaggeration = 0.75,
|
||||
}) async {
|
||||
if (!_isStyleLoaded) return;
|
||||
try {
|
||||
await _raw.setLayerProperties(
|
||||
'hillshading',
|
||||
mgl.HillshadeLayerProperties(
|
||||
hillshadeIlluminationDirection: sunAzimuth % 360.0,
|
||||
hillshadeShadowColor: shadowColorHex,
|
||||
hillshadeHighlightColor: highlightColorHex,
|
||||
hillshadeExaggeration: hillshadeExaggeration,
|
||||
),
|
||||
);
|
||||
} catch (_) {}
|
||||
|
||||
try {
|
||||
final buildingProps = mgl.FillExtrusionLayerProperties(
|
||||
fillExtrusionColor: buildingColorHex,
|
||||
fillExtrusionOpacity: buildingOpacity,
|
||||
);
|
||||
await _raw.setLayerProperties('building-3d', buildingProps);
|
||||
await _raw.setLayerProperties('building-3d-osm', buildingProps);
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
/// Returns the current zoom level.
|
||||
Future<double> getZoomLevel() async => _raw.cameraPosition?.zoom ?? 14.0;
|
||||
|
||||
|
||||
@@ -164,10 +164,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
|
||||
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.18"
|
||||
version: "0.12.19"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -180,10 +180,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
|
||||
sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.18.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -257,10 +257,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
|
||||
sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.9"
|
||||
version: "0.7.11"
|
||||
typed_data:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -302,5 +302,5 @@ packages:
|
||||
source: hosted
|
||||
version: "6.6.1"
|
||||
sdks:
|
||||
dart: ">=3.9.0-0 <4.0.0"
|
||||
dart: ">=3.10.0-0 <4.0.0"
|
||||
flutter: ">=3.22.0"
|
||||
|
||||
Reference in New Issue
Block a user