Hi all,
Is there a way to make HTML overlays disappear when behind the earth?
In the sandcastle, when you spin the globe around, the HTML overlay still appears even when behind the globe. Is there a way to detect the longitude bounds of what the user is looking at and conditionally show the HTML overlay if it’s within those bounds?
This is what I’ve tried so far (in the sandcastle):
var htmlOverlay = document.getElementById(‘htmlOverlay’);
var scratch = new Cesium.Cartesian2();
viewer.scene.preRender.addEventListener(function() {
// my code
var viewRect = viewer.camera.computeViewRectangle();
var east = Cesium.Math.toDegrees(viewRect.east);
var west = Cesium.Math.toDegrees(viewRect.west);
console.log("east: " + east + ", west: " + west);
// end my code
var position = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);
var canvasPosition = viewer.scene.cartesianToCanvasCoordinates(position, scratch);
if (Cesium.defined(canvasPosition)) {
htmlOverlay.style.top = canvasPosition.y + ‘px’;
htmlOverlay.style.left = canvasPosition.x + ‘px’;
}
});
``
The problem with this is that as soon as the user zooms out to see space, east becomes 180 and west becomes -180 which are the full longitude bounds of the entire earth, not just the half that you are looking at.
Is there another method I can use to get the view of the earth?
Thanks.
Cesium version 1.50