Hello,
I am just starting out with Cesium and I am attempting to make a very simple data viewer, very similar to that in the Flight tracker demo. I am attempting to read in data from a JSON file served by a local webserver. To ensure that the data is received fully before parsing, I put the JSON.parse as well as the viewer.entities.add call in the callback for the http request. However, this code only produces a rendering error of type: TypeError: (intermediate value).createObjectURL is not a function
Here is the full error:
TypeError: (intermediate value).createObjectURL is not a function
getWorkerUrl@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:262461
getBootstrapperUrl@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:262580
createWorker@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:262696
TaskProcessor.prototype.scheduleTask@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:264460
QuantizedMeshTerrainData.prototype.createMesh@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:334001
transform@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2661641
processTerrainStateMachine@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2657113
GlobeSurfaceTile.processStateMachine@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2660256
GlobeSurfaceTileProvider.prototype.loadTile@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2707055
processSinglePriorityLoadQueue@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2762087
processTileLoadQueue@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2761632
QuadtreePrimitive.prototype.endFrame@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2752117
Globe.prototype.endFrame@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:2773952
render@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3110426
tryAndCatchError@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3110533
Scene.prototype.render@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3112390
CesiumWidget.prototype.render@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3356823
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342702
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallbackrequestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
e@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342712
FrameRequestCallback*requestAnimationFramePolyFill@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:758306
startRenderLoop@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3342531
set@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3353743
CesiumWidget@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3346533
Viewer@https://cesiumjs.org/releases/1.80/Build/Cesium/Cesium.js:1:3435194
@http://localhost:4000/CesiumExample01Demo.html:32:17
I am at a loss as to why this could be happening, given that this is such a simple script. I have made sure the data is received and parsed correctly. Even when stepping through each line in the Firefox debugger the viewer.entities.add call seems to execute fine. Here is the code.
// Create instance of Cesium viewer
var viewer = new Cesium.Viewer('cesiumContainer', {terrainProvider: Cesium.createWorldTerrain()});
// Create new HTTP request
var xmlhttp = new XMLHttpRequest();
// Specify URL to JSON file
var URL = "http://localhost:4000/Example01_User1.json";
// Define event handler to ensure data is fully transferred before parsing
xmlhttp.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
var user1 = JSON.parse(this.response);
// Include the rest of the Cesium initialization
for(let i = 0; i < user1.length; i++) {
// Read data point
var dataPoint = user1[i];
// Read time
var time = dataPoint.dateVector;
// Read position and convert
var position = Cesium.Cartesian3.fromDegrees(dataPoint.long, dataPoint.lat, dataPoint.alt);
// Add points into viewer
var satPoint = viewer.entities.add({
// description: `Location: (${dataPoint.long}, ${dataPoint.lat}, ${dataPoint.alt})`,
position: position,
point: {pixelSize: 10, color: Cesium.Color.RED}
});
}
}
};
// Open the URL with a GET request
xmlhttp.open("GET", URL, true);
// Send the request
xmlhttp.send();
// Log response text to the console
// console.log(xmlhttp.response);
viewer.zoomTo(viewer.entitities);