UNPKG

earthjs

Version:

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

77 lines (76 loc) 2.87 kB
<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> #three-js { pointer-events: all; } </style> </head> <body> <svg id="earth-js"></svg> <canvas id="three-js"></canvas> <script> const {offsetWidth, offsetHeight} = d3.select('body').node(); const g = earthjs({width: offsetWidth, height: offsetHeight, padding:5, transparent: true}) .register(earthjs.plugins.threejsPlugin()) .register(earthjs.plugins.inertiaPlugin()) .register(earthjs.plugins.autorotatePlugin()) .register(earthjs.plugins.hoverCanvas()) .register(earthjs.plugins.dotRegion()) .register(earthjs.plugins.graticuleThreejs()) .register(earthjs.plugins.canvasThreejs('../d/world-110m.json')) .register(earthjs.plugins.pointsThreejs('../data/geonames_cities100k.csv')); g.inertiaPlugin.selectAll('#three-js'); g.pointsThreejs.ready = function(err, csv) { const features = csv.map(d => { return { type: 'Feature', properties: { name: d.name, population: d.population, }, geometry: { type: 'Point', coordinates: [d.longitude, d.latitude]} } }); g.pointsThreejs.data({features}); g.dotRegion.data({features}); }; g._.options.showDots = true; let hovering = null; g.hoverCanvas.onCircle({ dotHoverIn(event, latlong) { hovering = event; const data = g.dotRegion.detect(latlong); if (data) console.log('detect', data.properties); } }) // g.pointsThreejs.onHover({ // dotHoverIn(event) { // hovering = event; // const {pageX, pageY} = event.origDomEvent; // const latlong = g._.proj.invert([pageX, pageY]); // const data = g.dotClickCanvas.detect(latlong); // if (data) console.log('detect', data.properties); // } // }) // g.canvasThreejs.onHover({ // dotHoverOut(event) { // if (hovering) { // hovering = null // console.log('hovering out...'); // } // } // }) g.ready(function(){ g.create(); }) </script> </body> </html>