Rendering has stopped.(polyline from geojson)

1. A concise explanation of the problem you’re experiencing.

I tried to draw the entity from geojson , linestring but came up with the

following error. The feature count is approximate 7000.

-----------Error Message--------------------

An error occurred while rendering. Rendering has stopped.

TypeError: Failed to execute ‘shaderSource’ on ‘WebGLRenderingContext’: parameter 1 is not of type ‘WebGLShader’.

TypeError: Failed to execute ‘shaderSource’ on ‘WebGLRenderingContext’: parameter 1 is not of type ‘WebGLShader’.

at f (

at y (

at d._bind (

at V (

at k.draw (

at n.execute (

at d.executeCopyColor (

at tt (

at it (

at we.render (

2. A minimal code example. If you’ve found a bug, this helps us reproduce and repair it.

var promise = Cesium.GeoJsonDataSource.load(’…/Specs/Data/KML/tn1_road_84.geojson’);

promise.then(function(dataSource) {




canvas: viewer.scene.canvas,

clampToGround: false



var entities = dataSource.entities.values;

for (var i = 0; i < entities.length; i++) {

var entity = entities[i];

entity.polyline.material = Cesium.Color.WHITE;

entity.polyline.width = 10;



3. Context. Why do you need to do this? We might know a better way to accomplish your goal.

I would like to test the performance in 3D with pipeline data, maybe more than 7k or more.

4. The Cesium version you’re using, your operating system and browser.

Cesium: 1.41

OS: Win7 x64

**Browser: Chrome, **Version 63.0.3239.132 (Official Build) (64-bit)

Hi there,

I don’t have the data, so I can’t replicate directly. If you could post it, that might help. However. DataSourceCollection.add doesn’t take an options parameter, instead make sure you are passing it to GeoJsonDataSource.load. Also check if the entity.polyline is defined before you modify it, just in case it is not a polyline entity.



Hi Gabby,

I am also having problems loading a geojson data set in version 1.42. Our data has 2800 features, and we have been able to load the data in an app using version 1.23.


var promise = Cesium.GeoJsonDataSource.load(zones, {
    stroke: Cesium.Color.BLACK,
    fill: new Cesium.Color(0.01,0.01,0.01,0.01)
promise.then((dataSource) => {
    //Display any errrors encountered while loading.

Our data is open to the public, so it’s attached to this post. Is this file too much data to load without using 3D tiles?



Oops forgot to attach the data:

zonesGeo.json (1.53 MB)

Your data works for me. A couple of changes to your Sandcastle example though.


var viewer = new Cesium.Viewer(‘cesiumContainer’);

var promise = Cesium.GeoJsonDataSource.load(’…/…/…/Specs/Data/GeoJSON/zonesGeo.json’, {

stroke: Cesium.Color.BLACK,

fill: Cesium.Color.GOLD


promise.then(function(dataSource) {





Thanks Scott!

Justin, if you are running into issue rendering geoJson directly, take a look at getting the data converted to 3D Tiles, as it should improve performance.