UNPKG

earthjs

Version:

D3 Earth JS using SVG, Canvas & THREE js, build with some plugins.

82 lines (80 loc) 3.27 kB
<!DOCTYPE html> <html> <head> <link type="text/css" rel="stylesheet" href="../css/earthjs.css"> <script type='text/javascript' src="../js/d3.min.js"></script> <script type='text/javascript' src='../js/three.min.js'></script> <script type='text/javascript' src="../js/topojson.min.js"></script> <script type='text/javascript' src='../js/earthjs.js'></script> <style>body {background: #555;}</style> </head> <body> <div class="input-area"> <input id="pan" type="range" min="0" max="1000" step="1" value="0"/><br/> <a id="g7" href=''>[ G7 Countries ]</a> </div> <svg id="earth-js"></svg> <canvas id="three-js"></canvas> <canvas class="ej-canvas"></canvas> <script> const {offsetWidth, offsetHeight} = d3.select('body').node(); const g = earthjs({width: offsetWidth, height: offsetHeight, padding:5}) .register(earthjs.plugins.inertiaPlugin()) .register(earthjs.plugins.hoverCanvas()) .register(earthjs.plugins.clickCanvas()) .register(earthjs.plugins.centerCanvas()) .register(earthjs.plugins.canvasPlugin()) .register(earthjs.plugins.dropShadowSvg()) .register(earthjs.plugins.countryCanvas()) // .register(earthjs.plugins.autorotatePlugin()) .register(earthjs.plugins.threejsPlugin()) .register(earthjs.plugins.canvasThreejs('../d/world-110m.json', 6.279, 2048)) .register(earthjs.plugins.worldCanvas('../d/world-110m.json')); g.canvasPlugin.selectAll('.ej-canvas'); g._.options.showSelectedCountry = true; g._.options.showLand = false; g.centerCanvas.focused(function(event, country) { g.autorotatePlugin.stop(); g.worldCanvas.style({}); if (event.metaKey) { const arr = g.worldCanvas.selectedCountries().concat(country); g.worldCanvas.selectedCountries(arr); } else { g.worldCanvas.selectedCountries([country]); } console.log(country); }) g.clickCanvas.onCountry({ autorotate(event, country) { if (!country) { g.worldCanvas.style({}); g.autorotatePlugin.start(); g.worldCanvas.selectedCountries([]); } } }) g.ready(function(){ const world = g.canvasThreejs.data(); g.countryCanvas.data(world); g.hoverCanvas.data(world); g.clickCanvas.data(world); g.create(); }) var canvas = d3.selectAll('canvas').nodes(); d3.select('#pan').on('input', function() { canvas[0].style.left = (this.value)+'px'; }) var g7 = [840,124,392,250,826,616,276,380]; d3.select('#g7').on('click', function(e) { event.preventDefault(); var arr= g.worldCanvas.countries().filter(function(x) { return g7.indexOf(x.id)>-1; }); g.worldCanvas.style({selected: 'rgba(255, 235, 0, 0.4)'}); g.worldCanvas.selectedCountries(arr); g.autorotatePlugin.stop(); g.centerCanvas.go(246); }) </script> </body> </html>