Having an issue with CesiumJS on mobile

I can’t seem to get CesiumJS load load tiles on mobile, it does download the tiles (Verified using remote debugging) but it leaves the globe totally blank.

The site works properly on desktop so I think its some sort of mobile vs desktop JS/ visual thing.

Any ideas?

I am using CesiumJS 1.81 currently.

What is the specs of the mobile device you are using to load CesiumJS? (for instance, iPhone X 256GB) And what browser are you using?

Currently Testing on a Samsung Gallaxy A71 5G on Chrome.

Is there any other errors that you can see in the console? For instance, any WebGL errors or out of memory errors?

Theres no errors at all in the console other then a few warnings about timings that are also present on desktop. (Due to my servers network speed and some of my CZML files sizes)

It also affects Firefox on the same device.

Are you able to share a Sandcastle example of the 3D tileset you are trying to load here? I’ll check if it’s unique to your device or if it’s an issue for other mobile devices as well. If you are not comfortable sharing the code or asset in this public forum, you can email it to support@cesium.com.

I am using just a basic Mapbox tileset

Building my viewer object like this.

Cesium.Ion.defaultAccessToken = ‘redacted’;
var viewer = new Cesium.Viewer(‘cesiumContainer’,{shadows:true,timeline:false,vrButton:false,homeButton:false,animation:true,baseLayerPicker:false,navigationInstructionsInitiallyVisible:false,navigationHelpButton:false,imageryProvider :new Cesium.MapboxStyleImageryProvider({
styleId: ‘satellite-v9’,
accessToken: ‘redacted’
})});
viewer.terrainProvider = Cesium.createWorldTerrain();
viewer.scene.globe.shadows=Cesium.ShadowMode.CAST_ONLY;
viewer.scene.globe.enableLighting = true;

The site that is using this is https://satnogs.jwgtechs.com (and also https://satnogs.jwgtechs.com/rotating )

Btw is there a way just to just use CesiumJS without Cesium ION? As I don’t use it at all and only have an API token because the tutorial on the site I was following back in 2018 made it sound like it was required.

This is possible. You can load a local dataset knowing the filepath to the dataset or you can load asset from another data source like aws. Here is a Sandcastle example of offline loading of an imageryProvider: Cesium Sandcastle.

The access token does give you access to Cesium World Terrain and Bing imagery, so if you need them in your application, you would still need an access token.

I am already using Mapbox as an alternative to using any of the datasets or assets from Cesium ION, yet somehow its still using data streaming on my access token. (Unless using the MapboxStyleImageryProvider still counts as using Cesium ION or maybe the Cesium.createWorldTerrain() call is using Cesium ION.)

I will test on my old Iphone 7 when I get home to see if it works or not.

This is what I see on an iPhone X 256GB:

Hm that’s weird, wonder if its some setting I have that’s messing up Googles version of WebGL, as the sandcastle example you linked loads and works on my phone as well.

Also just did an experiment after commenting out createWorldTerrain() and also my access token it says I need to have an access token set before making ANY Cesium api calls. Which means I have to have a Cesium ION token even if I don’t intend on using Cesium ION (didn’t know createWorldTerrain() used it as its not documented that it does in the docs)

1 Like