How to implement a minimumZoomHeight (absolute height limit) in CesiumJS — same behavior as minimumZoomDistance, but without the globe

I want to create the exact same behavior as minimumZoomDistance,
but instead of limiting the distance to the target, I want to limit the camera’s absolute height above a reference plane (like the ground of our scene).


The Problem

When scene.globe.show = false, Cesium has no concept of ground level:

  • Cartographic.height returns the distance from the Earth’s center, not from “ground”.

  • There’s no built-in way to prevent the camera from going below a certain height.

  • minimumZoomDistance only limits range to the lookAt target, not vertical height.

I need the same smooth, natural stopping effect as minimumZoomDistance, but based on height, not range.


What I am Looking For

A way to:

  • Block any zoom or tilt input that would move the camera below a defined minimum local height (z in ENU coordinates around our model).

  • Keep the behavior perfectly smooth — the camera just stops descending, no snapping or repositioning.

  • Work even when scene.globe.show = false.

  • Remain compatible with a persistent camera.lookAt(target, …) (the camera always orbits the model).


In Simple Terms

I am trying to implement a minimumZoomHeight
a height-based limit for the Cesium camera that behaves exactly like minimumZoomDistance,
even in globe-less scenes.

Hi @Ori_Chai-Matan,

Thanks for your post and welcome to the Cesium community.

This is an interesting use case and idea. To my knowledge the Cesium library does not currently support these types of camera controls. As you seem to have found most features of the camera are very focused and dependent on the globe. My two immediate suggestions are 1) this would be an interesting ideas for a feature request, which you can write and file here GitHub · Where software is built (select the “Request a feature” option) and 2) I suggest trying to comb through the forums to see of others in the community have attempted or discussed what you are seeking. I took a pass at searching the forums and did not see an obvious issue to point you to, but you may have better luck since you know better what you are looking for.

Please feel free to follow up and link the feature request issue here if you decide to make one.

Best,
Luke