please take a look at the example below and pay attention to the console:
you will notice that if you move the scroll wheel forward, a height is logged. If you then move the scroll wheel backwards, the height is decreased rather than increased as it should be. Essentially, the height is always 1 step behind its actual value.
Is there a way I can get the actual height of the camera, and not where it was 1 event ago?
I am aware that if you use
viewer.onTick, you will receive the most up-to-date value while scrolling. I thought I could assign a variable once per tick which could then be accessed by another function, but the other function,
logHeight, still logs a variable which is 1 step behind:
I would simply have my task run in the
onTick method, but it is far too computationally expensive to run that often.
it appears I found a solution that checks height once per frame, but also only runs a command on wheel events using a boolean flag:
For this kind of function which should run every frame, I use either the
preRender event or
postRender event. For example, here’s a sandcastle example which moves an HTML overlay to match any camera movement.
This section of a blog post explains when each of those events are triggered.
the solution you posted has the same issue as the
onTick method I posted in my initial reply. Here is an example showcasing that it does not work, as the logged altitude is still one step behind the actual altitude: