diff --git a/apps/geoportal/src/app/components/GeoportalMap/GeoportalMap.tsx b/apps/geoportal/src/app/components/GeoportalMap/GeoportalMap.tsx
index a720324d..312a793e 100644
--- a/apps/geoportal/src/app/components/GeoportalMap/GeoportalMap.tsx
+++ b/apps/geoportal/src/app/components/GeoportalMap/GeoportalMap.tsx
@@ -484,7 +484,7 @@ export const GeoportalMap = () => {
pointerEvents: isMode2d ? "none" : "auto",
}}
>
-
+
)}
>
diff --git a/apps/geoportal/src/app/config/app.config.ts b/apps/geoportal/src/app/config/app.config.ts
index 0ded8561..fbb28ea7 100644
--- a/apps/geoportal/src/app/config/app.config.ts
+++ b/apps/geoportal/src/app/config/app.config.ts
@@ -11,6 +11,9 @@ export const CESIUM_CONFIG: CesiumConfig = {
duration: 100,
},
},
+ camera: {
+ minPitch: 30
+ },
baseUrl: `${APP_BASE_PATH}${CESIUM_PATHNAME}`,
pathName: CESIUM_PATHNAME,
};
diff --git a/libraries/mapping/engines/cesium/src/lib/CustomViewer/CustomViewer.tsx b/libraries/mapping/engines/cesium/src/lib/CustomViewer/CustomViewer.tsx
index 17574194..e4625040 100644
--- a/libraries/mapping/engines/cesium/src/lib/CustomViewer/CustomViewer.tsx
+++ b/libraries/mapping/engines/cesium/src/lib/CustomViewer/CustomViewer.tsx
@@ -60,6 +60,7 @@ type CustomViewerProps = {
//disableZoomRestrictions?: boolean; // todo
//minZoom?: number; // todo
+ minPitch?: number;
globe?: {
// https://cesium.com/learn/cesiumjs/ref-doc/Globe.html
baseColor?: Color;
@@ -99,6 +100,7 @@ function CustomViewer(props: CustomViewerProps) {
},
containerRef,
enableLocationHashUpdate = true,
+ minPitch,
} = props;
const previousViewerRef = useRef(null); // track viewer changes
@@ -130,7 +132,7 @@ function CustomViewer(props: CustomViewerProps) {
useTransitionTimeout();
useDisableSSCC();
useCameraRollSoftLimiter();
- useCameraPitchHardLimiter();
+ useCameraPitchHardLimiter(minPitch);
useEffect(() => {
if (viewer && enableLocationHashUpdate && !isMode2d) {
diff --git a/libraries/mapping/engines/cesium/src/lib/CustomViewer/hooks/useCameraPitchHardLimiter.ts b/libraries/mapping/engines/cesium/src/lib/CustomViewer/hooks/useCameraPitchHardLimiter.ts
index 36278060..581c9f8b 100644
--- a/libraries/mapping/engines/cesium/src/lib/CustomViewer/hooks/useCameraPitchHardLimiter.ts
+++ b/libraries/mapping/engines/cesium/src/lib/CustomViewer/hooks/useCameraPitchHardLimiter.ts
@@ -8,13 +8,16 @@ import {
useViewerIsMode2d,
} from "../../CustomViewerContextProvider";
-const useCameraPitchHardLimiter = (minPitch = CeMath.toRadians(-(30))) => {
+const DEFAULT_MIN_PITCH = 12;
+
+const useCameraPitchHardLimiter = (minPitchDeg = DEFAULT_MIN_PITCH) => {
const { viewer } = useCesiumCustomViewer();
const dispatch = useDispatch();
const isMode2d = useViewerIsMode2d();
const collisions = useScreenSpaceCameraControllerEnableCollisionDetection();
const lastPitch = useRef(null);
const lastPosition = useRef(null);
+ const minPitchRad = CeMath.toRadians(-minPitchDeg);
const clearLast = () => {
lastPitch.current = null;
lastPosition.current = null;
@@ -27,12 +30,12 @@ const useCameraPitchHardLimiter = (minPitch = CeMath.toRadians(-(30))) => {
);
clearLast();
const onUpdate = async () => {
- const isPitchTooLow = camera.pitch > minPitch;
+ const isPitchTooLow = camera.pitch > minPitchRad;
if (isPitchTooLow) {
console.log(
"LISTENER HOOK [2D3D|CESIUM|CAMERA]: reset pitch",
camera.pitch,
- minPitch,
+ minPitchRad,
);
if (lastPitch.current !== null && lastPosition.current !== null) {
const { latitude, longitude } = camera.positionCartographic;
@@ -43,7 +46,7 @@ const useCameraPitchHardLimiter = (minPitch = CeMath.toRadians(-(30))) => {
),
orientation: {
heading: camera.heading,
- pitch: minPitch,
+ pitch: minPitchRad,
roll: camera.roll,
},
});
@@ -57,7 +60,7 @@ const useCameraPitchHardLimiter = (minPitch = CeMath.toRadians(-(30))) => {
scene.preUpdate.removeEventListener(onUpdate);
};
}
- }, [viewer, minPitch, collisions, isMode2d, dispatch]);
+ }, [viewer, minPitchRad, collisions, isMode2d, dispatch]);
};
export default useCameraPitchHardLimiter;
diff --git a/types/cesium-config.d.ts b/types/cesium-config.d.ts
index 6b2d5766..9d12ce18 100644
--- a/types/cesium-config.d.ts
+++ b/types/cesium-config.d.ts
@@ -4,6 +4,9 @@ export type CesiumConfig = {
duration: number;
};
};
+ camera: {
+ minPitch: number;
+ };
baseUrl: string;
pathName: string;
};