UNPKG

earthjs

Version:

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

113 lines (111 loc) 4.51 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <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/topojson.min.js"></script> <script type='text/javascript' src='../js/earthjs.js'></script> </head> <body> <div class="set-options"></div> <div class="set-options2"></div> <svg id="earth-js" class="ea-layer ea-1"></svg> <canvas class="ej-canvas ea-layer ea-2"></canvas> <canvas class="ej-canvas ea-layer ea-3"></canvas> <svg class="ej-svg noclicks ea-layer ea-4" width="700" height="500"></svg> <script> // https://github.com/mledoze/countries const g = earthjs({padding:50}); g.register(earthjs.plugins.commonPlugins('../d/world-110m.json')); g.register(earthjs.plugins.dotsCanvas('../d/cities.geojson')); g.register(earthjs.plugins.barSvg('../data/bars.json')); g.register(earthjs.plugins.dotsSvg()); g.register(earthjs.plugins.hoverCanvas()); g.register(earthjs.plugins.clickCanvas()); g.register(earthjs.plugins.dblClickCanvas()); g.register(earthjs.plugins.centerCanvas()); g.register(earthjs.plugins.fauxGlobeSvg()); g.register(earthjs.plugins.barTooltipSvg()); g.register(earthjs.plugins.dotSelectCanvas()); g.register(earthjs.plugins.dotTooltipCanvas()); g.register(earthjs.plugins.countrySelectCanvas()); g.register(earthjs.plugins.countryTooltipCanvas('../d/world-110m-country-names.tsv')); g.fauxGlobeSvg.selectAll('.ea-4'); g.barSvg.valuePath('properties.mag'); g.dotsSvg.radiusPath('properties.mag'); g.barSvg.ready = function(err, data) { g.barSvg.data(data); g.dotsSvg.data(data); } g.barSvg.selectAll('.ea-4'); g.dotsSvg.selectAll('.ea-1'); g.dotsCanvas.drawTo([1]); g.dotsCanvas.ready = function(err, data) { // const features = data.features.filter(d => d.properties.population>=3500000); const features = data.features; const dataMssg = { features, geometry: { radius: 0.5, lineWidth: 0.5, fillStyle: 'rgba(241, 239, 3,.6)', strokeStyle: 'rgba(241, 100, 0,.6)' } } g.dotsCanvas.data(dataMssg); } g.barTooltipSvg.onShow = function(d) { const {mag, place} = d.properties; return {properties: {mag,place}}; } g.dotTooltipCanvas.onShow = function(d) { const {tld, area, region, name, capital, currency, callingCode} = d.properties; return {properties: { name, capital, callingCode, region, currency, area, tld, coordinates: d.coordinates.join(', ')}}; } g.centerCanvas.focused(function() { g.autorotatePlugin.stop(); }) g.dotSelectCanvas.onClick({ index5: function(mouse, dot) { dot && console.log('dotSelectCanvas click', mouse, dot); } }) g.dotSelectCanvas.onDblClick({ index5: function(mouse, dot) { dot && console.log('dotSelectCanvas dblclick', mouse, dot); } }) g.countrySelectCanvas.onClick({ index5: function(mouse, country) { country && console.log('countrySelectCanvas click', mouse, country); } }) g.countrySelectCanvas.onDblClick({ index5: function(mouse, country) { country && console.log('countrySelectCanvas dblclick', mouse, country); } }) g._.options.showGlobeHilight = false; g.ready(() => { const world = g.worldCanvas.data(); g.hoverCanvas.data(world); g.clickCanvas.data(world); g.dblClickCanvas.data(world); g.create() }); g.commonPlugins.addChecker(':Shading:showGlobeShading'.split(':')) g.commonPlugins.addChecker(':Hilight:showGlobeHilight'.split(':')) g.commonPlugins.addChecker(':Bars:showBars'.split(':')) g.commonPlugins.addChecker(':Dots:showDots'.split(':')) </script> </body> </html>