slides/webgl/asset/ec-demo2/buildings-hatching.html (114 lines of code) (raw):

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Geo3D - 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="../common/dat.gui.js"></script> <script src="../texture/canyon.hdr.js"></script> <script> var chart = echarts.init(document.getElementById('main')); echarts.registerMap('buildings', buildingsGeoJSON); var regions = buildingsGeoJSON.features.map(function (feature) { return { name: feature.properties.name, value: Math.random(), height: Math.max(Math.sqrt(feature.properties.height), 0.1) }; }); chart.setOption({ series: [{ type: 'map3D', map: 'buildings', shading: 'hatching', environment: '#fff', hatchingMaterial: { hatchingTextures: [ '../texture/tam/hatch_0.jpg', '../texture/tam/hatch_1.jpg', '../texture/tam/hatch_2.jpg', '../texture/tam/hatch_3.jpg', '../texture/tam/hatch_4.jpg', '../texture/tam/hatch_5.jpg' ], textureTiling: [80, 40] }, postEffect: { enable: true, SSAO: { enable: true, radius: 8, intensity: 1.2 }, edge: { enable: true } }, groundPlane: { show: false }, light: { main: { intensity: 1, shadow: true, shadowQuality: 'high', alpha: 30 }, ambient: { intensity: 0 }, ambientCubemap: { texture: '../texture/canyon.hdr', exposure: 0, diffuseIntensity: 0.1 } }, viewControl: { alpha: 80, distance: 100, minBeta: -Infinity, maxBeta: Infinity }, itemStyle: { areaColor: '#000' }, silent: true, instancing: true, boxWidth: 200, boxHeight: 1, data: regions }] }); var config = { color: '#000' }; var gui = new dat.GUI(); gui.addColor(config, 'color').onFinishChange(function () { chart.setOption({ series: [{ itemStyle: { areaColor: config.color }, postEffect: { edge: { color: config.color } } }] }); }); window.addEventListener('resize', function () { chart.resize(); }); </script> </body> </html>