earthjs
Version:
D3 Earth JS using SVG, Canvas & THREE js, build with some plugins.
113 lines (111 loc) • 4.51 kB
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>