slides/webgl/asset/ec-demo/buildings.html (104 lines of code) (raw):

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Buildings - ECHARTS-GL</title> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <!-- Fullscreen Landscape on iOS --> <link rel="stylesheet" href="../common/reset.css"> </head> <body> <div id="main"></div> <script src="../common/echarts.min.js"></script> <script src="../common/jquery.min.js"></script> <script src="../common/echarts-gl.js"></script> <script src="../data/buildings.json.js"></script> <script src="../texture/woods.jpg.js"></script> <script src="../texture/oakfloor2_basecolor.jpg.js"></script> <script src="../texture/canyon.hdr.js"></script> <script> echarts.registerMap('buildings', buildingsGeoJSON); var chart = echarts.init(document.getElementById('main'), null, { devicePixelRatio: 1 }); var regions = buildingsGeoJSON.features.map(function (feature) { return { name: feature.properties.name, height: Math.max(Math.sqrt(feature.properties.height), 0.1) }; }); // console.profile('render'); chart.setOption({ series: [{ type: 'map3D', map: 'buildings', shading: 'realistic', realisticMaterial: { roughness: 0.6, baseTexture: floorBaseColorTexture, textureTiling: 40 }, postEffect: { enable: true, bloom: { enable: false }, SSAO: { enable: true, quality: 'low', radius: 4, intensity: 1.2 }, depthOfField: { enable: true, focalRange: 5, fstop: 1, blurRadius: 4, quality: 'low' } }, groundPlane: { show: true }, light: { main: { intensity: 4, shadow: true, shadowQuality: 'high', alpha: 30 }, ambient: { intensity: 0 }, ambientCubemap: { texture: canyonUrl, exposure: 2, diffuseIntensity: 1, specularIntensity: 0.2 } }, viewControl: { distance: 50 }, itemStyle: { areaColor: '#bbb' // borderColor: '#222', // borderWidth: 1 }, label: { textStyle: { color: 'white' } }, silent: true, instancing: true, boxWidth: 200, boxHeight: 1, data: regions }] }); // console.profileEnd('render'); window.onresize = chart.resize; </script> </body> </html>