UNPKG

earthjs

Version:

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

84 lines (78 loc) 2.74 kB
<html> <head> <style media="screen"> .input-area { position: absolute; z-index: 5; } </style> <style id="js-controlled"> </style> <link type="text/css" rel="stylesheet" href="../css/earthjs.css"> <style media="screen"> .globe-container { position: relative; float: left; } </style> <script type='text/javascript' src="../js/d3.min.js"></script> <script type='text/javascript' src="../js/topojson.min.js"></script> <script type='text/javascript' src='../js/earthjs.js'></script> </head> <body> <div class="input-area"> <input id="pan" type="range" min="0" max="50" step="1" value="0"/> </div> <span class="globe-container"> <svg class="s1"/> <canvas class="ej-canvas c1"/> </span> <span class="globe-container"> <svg class="s2"/> <canvas class="ej-canvas c2"/> </span> <script> const g1 = earthjs({selector:'.s1', rotate: 0, padding:50}); g1.register(earthjs.plugins.inertiaPlugin()); g1.register(earthjs.plugins.autorotatePlugin()); g1.register(earthjs.plugins.dropShadowSvg()); g1.register(earthjs.plugins.oceanSvg()); g1.register(earthjs.plugins.fauxGlobeSvg()); g1.register(earthjs.plugins.canvasPlugin()); g1.register(earthjs.plugins.graticuleCanvas()); g1.register(earthjs.plugins.worldCanvas('../d/world-110m.json')); const g2 = earthjs({selector:'.s2', rotate: 180, padding:50}); g2.register(earthjs.plugins.dropShadowSvg()); g2.register(earthjs.plugins.oceanSvg()); g2.register(earthjs.plugins.fauxGlobeSvg()); g2.register(earthjs.plugins.barSvg('../data/bars.json')); g2.barSvg.ready = function(err, json) { json.features.forEach(d => d.geometry.value = d.properties.mag); g2.barSvg.data(json); }; g2.register(earthjs.plugins.canvasPlugin()); g2.register(earthjs.plugins.graticuleCanvas()); g2.register(earthjs.plugins.worldCanvas()); g1.canvasPlugin.selectAll('.c1'); g2.canvasPlugin.selectAll('.c2'); g1.autorotatePlugin.sync([g2]); g1.inertiaPlugin.sync([g2]); g1.ready(function(){ const d = g1.worldCanvas.data(); g2.worldCanvas.data(d); g1.create([g2]); }); g2.ready(function(){ g2.create(); }); const st = d3.select('#js-controlled'); d3.select('#pan').on('input', function() { st.text(` canvas.ej-canvas { top: ${this.value}px; left: ${this.value}px; }` ); }) </script> </body> </html>