Jupiter and Its Moons
Jupiter as a globe wearing Cassini's map of its clouds, spinning a Jupiter day in 30 seconds, with its four largest moons going round at their real relative speeds: Io in under two days, Callisto in over sixteen.
More than maps of the Earth
A map chart wears any whole-planet picture in the usual equirectangular layout, and since 5.21.0 places points by height too: here the moons float above Jupiter on raised orbits and pass behind it. Turning the map turns the planet; each moon moves on the map at its own speed less the planet's, so on screen it goes round as fast as it really does. The picture is Cassini's map of December 2000: Jupiter's clouds move, so it shows them as they were then.
Good for
- Space and science pages
- Anything that orbits: moons, satellites, stations
- An eye-catching opener
Think twice when
- Exact distances: the moons' distances are squeezed to fit
- Today's weather on Jupiter: the picture is from 2000
Get the code.
Built with amCharts 5, a JavaScript library. The JavaScript includes your theme and renderer (canvas or SVG); the JSON also follows the changes you make with the controls.
npm install @amcharts/amcharts5. See Getting started.
The same chart as a JSON config. Chart Maker reads and writes this format, the library's JSON parser turns it into a chart, and the <am5-chart> element puts it on a page with no code.How it reads:
"type" is the class to create and "settings" what you would pass to its new() in code; "properties" fill in its parts, lists such as series and axes or templates such as columns.template; "refs" holds objects used in more than one place ("#series-0" stands for the one named series-0); a string starting with "@" takes a value from another object, such as "@series.get('fill')".
A complete page. Save it as an .html file and open it in a browser.
Paste this into an AI coding assistant to build the chart from scratch. More in amCharts & AI.
// Create root element
// https://www.amcharts.com/docs/v5/getting-started/#Root_element
var root = am5.Root.new("chartdiv");
// Set themes
// https://www.amcharts.com/docs/v5/concepts/themes/
root.setThemes([
am5themes_Animated.new(root),
am5themes_Responsive.new(root)
]);
// The buttons (the zoom control) in a dark slate that suits the night sky, instead of the default blue
root.interfaceColors.setAll({
primaryButton: am5.color(0x2a3042),
primaryButtonHover: am5.color(0x3a4259),
primaryButtonDown: am5.color(0x485170),
primaryButtonActive: am5.color(0x485170),
primaryButtonStroke: am5.color(0x4a5370),
primaryButtonText: am5.color(0xe6e8f0),
primaryButtonDisabled: am5.color(0x1c2030), // the minus button, zoomed out as far as it goes
primaryButtonTextDisabled: am5.color(0x5c6278)
});
// Jupiter as a map: the planet is a globe wearing a picture of its clouds, and its four largest moons are map points
// raised above it, so the planet hides them when they pass behind. Heights are in meters of the map's globe, which is
// the Earth's size: a moon twice Jupiter's radius from its center is one globe radius up
var GLOBE = 6371008.8; // the map globe's radius, meters
var JUPITER = 71492; // Jupiter's radius at the equator, km
// A time-lapse: a Jupiter day (9.9 hours) in 30 seconds, and the moons as fast as they really are, at that scale
var DAY_HOURS = 9.925;
var DAY = 30000; // milliseconds
var HOUR = DAY / DAY_HOURS; // milliseconds for an hour
// Create the map chart: Jupiter seen from a little above its equator. The map turns once a Jupiter day, so the
// clouds go round; a drag up or down tilts it (a sideways drag would stop the spin, so it does nothing)
// https://www.amcharts.com/docs/v5/charts/map-chart/
var chart = root.container.children.push(am5map.MapChart.new(root, {
projection: am5map.geoOrthographic(), // a globe
panX: "none", // the planet turns by itself
panY: "rotateY", // an up or down drag tilts it
rotationY: -12, // the moons' orbits open a little toward the camera
rotationZ: -3, // Jupiter's axis leans 3° on its orbit
homeZoomLevel: 0.45, // zoomed out far enough for the moons around the planet...
minZoomLevel: 0.45, // zooming out stops there: any further and the moons are specks
zoomLevel: 0.45,
autoHome: true, // ...from the start
animations: [
// a full turn a Jupiter day, eastward as Jupiter spins; loops: 0 repeats it for ever
{ key: "rotationX", from: 0, to: 360, duration: DAY, loops: 0 }
]
}));
// Add the picture of Jupiter, a map of its whole cloud top redrawn to fit the globe as it turns: Cassini's map from
// its flyby in December 2000, read from the amCharts CDN. The clouds move, so it shows them as they were then
// https://www.amcharts.com/docs/v5/charts/map-chart/map-raster-series/
chart.series.push(am5map.MapRasterSeries.new(root, {
src: "https://cdn.amcharts.com/lib/5/geodata/images/jupiter2048.jpg"
}));
// ── The moons ──
// The four Galilean moons: distance from Jupiter's center (km), orbital period (hours), radius (km), color, and
// where each starts. On the map they are closer in than in life (distances squeezed with a logarithm), so Callisto,
// 26 Jupiter radii out, still fits; the tooltips have the real numbers
var MOONS = [
{ name: "Io", distance: 421700, period: 42.46, radius: 1821.6, color: 0xe6cf6e, start: 40 },
{ name: "Europa", distance: 671034, period: 85.23, radius: 1560.8, color: 0xece4d4, start: 160 },
{ name: "Ganymede", distance: 1070412, period: 171.71, radius: 2634.1, color: 0xb6a68e, start: -70 },
{ name: "Callisto", distance: 1882709, period: 400.54, radius: 2410.3, color: 0x8d7f6b, start: -150 }
];
function shown(km) { return 1 + 0.65 * Math.log(km / JUPITER); } // in Jupiter radii, on the map
function height(km) { return (shown(km) - 1) * GLOBE; } // as a height above the map's globe
// A circle round the equator at a moon's height: longitude, latitude and height
function orbit(km) {
var coordinates = [];
for (var longitude = -180; longitude <= 180; longitude += 5) {
coordinates.push([longitude, 0, height(km)]);
}
return { type: "LineString", coordinates: coordinates };
}
// Create line series for the orbits: faint circles at the moons' heights. They are drawn on the map, which turns
// once a Jupiter day, so they are solid: dashes would spin round with the planet, far faster than the moons
// https://www.amcharts.com/docs/v5/charts/map-chart/map-line-series/
var orbitSeries = chart.series.push(am5map.MapLineSeries.new(root, {}));
orbitSeries.mapLines.template.setAll({
stroke: am5.color(0xffffff),
strokeOpacity: 0.06, // barely there: Jupiter has no rings, so its moons' paths stay a hint
altitude: 0, // each point of a line carries its own height (the third number of its coordinates)
interactive: false // the orbits take no pointer: the moons have the tooltips
});
orbitSeries.data.setAll(MOONS.map(function(moon) {
return { geometry: orbit(moon.distance) };
}));
// Create point series for the moons, raised to their orbits (altitudeField)
// https://www.amcharts.com/docs/v5/charts/map-chart/map-point-series/
var moonSeries = chart.series.push(am5map.MapPointSeries.new(root, {
latitudeField: "latitude",
longitudeField: "longitude",
altitudeField: "altitude"
}));
moonSeries.bullets.push(function() {
var circle = am5.Circle.new(root, {
// no radius or fill here: a setting made here would win over the size and color each moon's data gives
tooltipText: "[bold]{name}[/]\n{across} km across\n{km} km from Jupiter's center\nOnce round in {days} days",
tooltipY: 0, // the tooltip points at the top of the moon, not its middle
templateField: "circleSettings"
});
// pointed at, the moon grows a little
// https://www.amcharts.com/docs/v5/concepts/settings/states/
circle.states.create("hover", { scale: 1.4 });
return am5.Bullet.new(root, { sprite: circle });
});
moonSeries.data.setAll(MOONS.map(function(moon) {
// The map itself turns once a Jupiter day, and a moon's longitude is on the map: to go round at its own speed on
// screen, it moves on the map at its speed less the planet's. Every moon is slower than the spin, so its longitude
// runs backward, a full turn in this many hours
var lap = 1 / (1 / DAY_HOURS - 1 / moon.period);
return {
name: moon.name,
across: Math.round(moon.radius * 2).toLocaleString("en-US"),
km: moon.distance.toLocaleString("en-US"),
days: (moon.period / 24).toFixed(1),
longitude: moon.start,
latitude: 0,
altitude: height(moon.distance),
circleSettings: {
radius: 8 * Math.sqrt(moon.radius / 2634.1), // by the square root of the moon's size: Ganymede 8px
fill: am5.color(moon.color),
animations: [{ target: "dataItem", key: "longitude", from: moon.start, to: moon.start - 360, duration: Math.round(lap * HOUR), loops: 0 }]
}
};
}));
// Add zoom control: plus, minus and home buttons, at the bottom left
// https://www.amcharts.com/docs/v5/charts/map-chart/map-pan-zoom/#Zoom_control
var zoomControl = chart.set("zoomControl", am5map.ZoomControl.new(root, {
x: 0, // at the chart's left edge...
centerX: 0,
dx: 10 // ...10px in
}));
zoomControl.homeButton.set("visible", true); // the home button is hidden by default
// Add image credit, at the bottom right
chart.children.push(am5.Label.new(root, {
text: "Imagery: NASA/JPL/Space Science Institute",
fontSize: 11, // small print
fill: am5.color(0xffffff), // white, over the dark background
fillOpacity: 0.6, // a little see-through
x: am5.p100, // at the chart's right edge...
centerX: am5.p100, // ...lined up by the label's own right side
y: am5.p100, // and at the bottom
centerY: am5.p100,
dx: -10, // 10px in from the edges
dy: -10
}));
{
"type": "MapChart",
"settings": {
"panX": "none",
"panY": "rotateY",
"rotationY": -12,
"rotationZ": -3,
"homeZoomLevel": 0.45,
"minZoomLevel": 0.45,
"zoomLevel": 0.45,
"autoHome": true,
"animations": [
{
"key": "rotationX",
"from": 0,
"to": 360,
"duration": 30000,
"loops": 0
}
],
"zoomControl": {
"type": "ZoomControl",
"settings": {
"x": 0,
"centerX": 0,
"dx": 10
},
"properties": {
"homeButton": {
"settings": {
"visible": true
}
}
}
},
"projectionName": "geoOrthographic"
},
"properties": {
"series": [
"#series-0",
"#series-1",
"#series-2"
]
},
"children": [
{
"type": "Label",
"settings": {
"text": "Imagery: NASA/JPL/Space Science Institute",
"fontSize": 11,
"fill": {
"type": "Color",
"value": "#ffffff"
},
"fillOpacity": 0.6,
"x": {
"type": "Percent",
"value": 100
},
"centerX": {
"type": "Percent",
"value": 100
},
"y": {
"type": "Percent",
"value": 100
},
"centerY": {
"type": "Percent",
"value": 100
},
"dx": -10,
"dy": -10
},
"index": 2
}
],
"refs": [
{
"data-0": []
},
{
"data-1": [
{
"geometry": {
"type": "LineString",
"coordinates": [
[-180, 0, 7349344.692686404],
[-175, 0, 7349344.692686404],
[-170, 0, 7349344.692686404],
[-165, 0, 7349344.692686404],
[-160, 0, 7349344.692686404],
[-155, 0, 7349344.692686404],
[-150, 0, 7349344.692686404],
[-145, 0, 7349344.692686404],
[-140, 0, 7349344.692686404],
[-135, 0, 7349344.692686404],
[-130, 0, 7349344.692686404],
[-125, 0, 7349344.692686404],
[-120, 0, 7349344.692686404],
[-115, 0, 7349344.692686404],
[-110, 0, 7349344.692686404],
[-105, 0, 7349344.692686404],
[-100, 0, 7349344.692686404],
[-95, 0, 7349344.692686404],
[-90, 0, 7349344.692686404],
[-85, 0, 7349344.692686404],
[-80, 0, 7349344.692686404],
[-75, 0, 7349344.692686404],
[-70, 0, 7349344.692686404],
[-65, 0, 7349344.692686404],
[-60, 0, 7349344.692686404],
[-55, 0, 7349344.692686404],
[-50, 0, 7349344.692686404],
[-45, 0, 7349344.692686404],
[-40, 0, 7349344.692686404],
[-35, 0, 7349344.692686404],
[-30, 0, 7349344.692686404],
[-25, 0, 7349344.692686404],
[-20, 0, 7349344.692686404],
[-15, 0, 7349344.692686404],
[-10, 0, 7349344.692686404],
[-5, 0, 7349344.692686404],
[0, 0, 7349344.692686404],
[5, 0, 7349344.692686404],
[10, 0, 7349344.692686404],
[15, 0, 7349344.692686404],
[20, 0, 7349344.692686404],
[25, 0, 7349344.692686404],
[30, 0, 7349344.692686404],
[35, 0, 7349344.692686404],
[40, 0, 7349344.692686404],
[45, 0, 7349344.692686404],
[50, 0, 7349344.692686404],
[55, 0, 7349344.692686404],
[60, 0, 7349344.692686404],
[65, 0, 7349344.692686404],
[70, 0, 7349344.692686404],
[75, 0, 7349344.692686404],
[80, 0, 7349344.692686404],
[85, 0, 7349344.692686404],
[90, 0, 7349344.692686404],
[95, 0, 7349344.692686404],
[100, 0, 7349344.692686404],
[105, 0, 7349344.692686404],
[110, 0, 7349344.692686404],
[115, 0, 7349344.692686404],
[120, 0, 7349344.692686404],
[125, 0, 7349344.692686404],
[130, 0, 7349344.692686404],
[135, 0, 7349344.692686404],
[140, 0, 7349344.692686404],
[145, 0, 7349344.692686404],
[150, 0, 7349344.692686404],
[155, 0, 7349344.692686404],
[160, 0, 7349344.692686404],
[165, 0, 7349344.692686404],
[170, 0, 7349344.692686404],
[175, 0, 7349344.692686404],
[180, 0, 7349344.692686404]
],
"__parse": true
},
"__parse": true
},
{
"geometry": {
"type": "LineString",
"coordinates": [
[-180, 0, 9273017.726951342],
[-175, 0, 9273017.726951342],
[-170, 0, 9273017.726951342],
[-165, 0, 9273017.726951342],
[-160, 0, 9273017.726951342],
[-155, 0, 9273017.726951342],
[-150, 0, 9273017.726951342],
[-145, 0, 9273017.726951342],
[-140, 0, 9273017.726951342],
[-135, 0, 9273017.726951342],
[-130, 0, 9273017.726951342],
[-125, 0, 9273017.726951342],
[-120, 0, 9273017.726951342],
[-115, 0, 9273017.726951342],
[-110, 0, 9273017.726951342],
[-105, 0, 9273017.726951342],
[-100, 0, 9273017.726951342],
[-95, 0, 9273017.726951342],
[-90, 0, 9273017.726951342],
[-85, 0, 9273017.726951342],
[-80, 0, 9273017.726951342],
[-75, 0, 9273017.726951342],
[-70, 0, 9273017.726951342],
[-65, 0, 9273017.726951342],
[-60, 0, 9273017.726951342],
[-55, 0, 9273017.726951342],
[-50, 0, 9273017.726951342],
[-45, 0, 9273017.726951342],
[-40, 0, 9273017.726951342],
[-35, 0, 9273017.726951342],
[-30, 0, 9273017.726951342],
[-25, 0, 9273017.726951342],
[-20, 0, 9273017.726951342],
[-15, 0, 9273017.726951342],
[-10, 0, 9273017.726951342],
[-5, 0, 9273017.726951342],
[0, 0, 9273017.726951342],
[5, 0, 9273017.726951342],
[10, 0, 9273017.726951342],
[15, 0, 9273017.726951342],
[20, 0, 9273017.726951342],
[25, 0, 9273017.726951342],
[30, 0, 9273017.726951342],
[35, 0, 9273017.726951342],
[40, 0, 9273017.726951342],
[45, 0, 9273017.726951342],
[50, 0, 9273017.726951342],
[55, 0, 9273017.726951342],
[60, 0, 9273017.726951342],
[65, 0, 9273017.726951342],
[70, 0, 9273017.726951342],
[75, 0, 9273017.726951342],
[80, 0, 9273017.726951342],
[85, 0, 9273017.726951342],
[90, 0, 9273017.726951342],
[95, 0, 9273017.726951342],
[100, 0, 9273017.726951342],
[105, 0, 9273017.726951342],
[110, 0, 9273017.726951342],
[115, 0, 9273017.726951342],
[120, 0, 9273017.726951342],
[125, 0, 9273017.726951342],
[130, 0, 9273017.726951342],
[135, 0, 9273017.726951342],
[140, 0, 9273017.726951342],
[145, 0, 9273017.726951342],
[150, 0, 9273017.726951342],
[155, 0, 9273017.726951342],
[160, 0, 9273017.726951342],
[165, 0, 9273017.726951342],
[170, 0, 9273017.726951342],
[175, 0, 9273017.726951342],
[180, 0, 9273017.726951342]
],
"__parse": true
},
"__parse": true
},
{
"geometry": {
"type": "LineString",
"coordinates": [
[-180, 0, 11206850.87213243],
[-175, 0, 11206850.87213243],
[-170, 0, 11206850.87213243],
[-165, 0, 11206850.87213243],
[-160, 0, 11206850.87213243],
[-155, 0, 11206850.87213243],
[-150, 0, 11206850.87213243],
[-145, 0, 11206850.87213243],
[-140, 0, 11206850.87213243],
[-135, 0, 11206850.87213243],
[-130, 0, 11206850.87213243],
[-125, 0, 11206850.87213243],
[-120, 0, 11206850.87213243],
[-115, 0, 11206850.87213243],
[-110, 0, 11206850.87213243],
[-105, 0, 11206850.87213243],
[-100, 0, 11206850.87213243],
[-95, 0, 11206850.87213243],
[-90, 0, 11206850.87213243],
[-85, 0, 11206850.87213243],
[-80, 0, 11206850.87213243],
[-75, 0, 11206850.87213243],
[-70, 0, 11206850.87213243],
[-65, 0, 11206850.87213243],
[-60, 0, 11206850.87213243],
[-55, 0, 11206850.87213243],
[-50, 0, 11206850.87213243],
[-45, 0, 11206850.87213243],
[-40, 0, 11206850.87213243],
[-35, 0, 11206850.87213243],
[-30, 0, 11206850.87213243],
[-25, 0, 11206850.87213243],
[-20, 0, 11206850.87213243],
[-15, 0, 11206850.87213243],
[-10, 0, 11206850.87213243],
[-5, 0, 11206850.87213243],
[0, 0, 11206850.87213243],
[5, 0, 11206850.87213243],
[10, 0, 11206850.87213243],
[15, 0, 11206850.87213243],
[20, 0, 11206850.87213243],
[25, 0, 11206850.87213243],
[30, 0, 11206850.87213243],
[35, 0, 11206850.87213243],
[40, 0, 11206850.87213243],
[45, 0, 11206850.87213243],
[50, 0, 11206850.87213243],
[55, 0, 11206850.87213243],
[60, 0, 11206850.87213243],
[65, 0, 11206850.87213243],
[70, 0, 11206850.87213243],
[75, 0, 11206850.87213243],
[80, 0, 11206850.87213243],
[85, 0, 11206850.87213243],
[90, 0, 11206850.87213243],
[95, 0, 11206850.87213243],
[100, 0, 11206850.87213243],
[105, 0, 11206850.87213243],
[110, 0, 11206850.87213243],
[115, 0, 11206850.87213243],
[120, 0, 11206850.87213243],
[125, 0, 11206850.87213243],
[130, 0, 11206850.87213243],
[135, 0, 11206850.87213243],
[140, 0, 11206850.87213243],
[145, 0, 11206850.87213243],
[150, 0, 11206850.87213243],
[155, 0, 11206850.87213243],
[160, 0, 11206850.87213243],
[165, 0, 11206850.87213243],
[170, 0, 11206850.87213243],
[175, 0, 11206850.87213243],
[180, 0, 11206850.87213243]
],
"__parse": true
},
"__parse": true
},
{
"geometry": {
"type": "LineString",
"coordinates": [
[-180, 0, 13545229.305020873],
[-175, 0, 13545229.305020873],
[-170, 0, 13545229.305020873],
[-165, 0, 13545229.305020873],
[-160, 0, 13545229.305020873],
[-155, 0, 13545229.305020873],
[-150, 0, 13545229.305020873],
[-145, 0, 13545229.305020873],
[-140, 0, 13545229.305020873],
[-135, 0, 13545229.305020873],
[-130, 0, 13545229.305020873],
[-125, 0, 13545229.305020873],
[-120, 0, 13545229.305020873],
[-115, 0, 13545229.305020873],
[-110, 0, 13545229.305020873],
[-105, 0, 13545229.305020873],
[-100, 0, 13545229.305020873],
[-95, 0, 13545229.305020873],
[-90, 0, 13545229.305020873],
[-85, 0, 13545229.305020873],
[-80, 0, 13545229.305020873],
[-75, 0, 13545229.305020873],
[-70, 0, 13545229.305020873],
[-65, 0, 13545229.305020873],
[-60, 0, 13545229.305020873],
[-55, 0, 13545229.305020873],
[-50, 0, 13545229.305020873],
[-45, 0, 13545229.305020873],
[-40, 0, 13545229.305020873],
[-35, 0, 13545229.305020873],
[-30, 0, 13545229.305020873],
[-25, 0, 13545229.305020873],
[-20, 0, 13545229.305020873],
[-15, 0, 13545229.305020873],
[-10, 0, 13545229.305020873],
[-5, 0, 13545229.305020873],
[0, 0, 13545229.305020873],
[5, 0, 13545229.305020873],
[10, 0, 13545229.305020873],
[15, 0, 13545229.305020873],
[20, 0, 13545229.305020873],
[25, 0, 13545229.305020873],
[30, 0, 13545229.305020873],
[35, 0, 13545229.305020873],
[40, 0, 13545229.305020873],
[45, 0, 13545229.305020873],
[50, 0, 13545229.305020873],
[55, 0, 13545229.305020873],
[60, 0, 13545229.305020873],
[65, 0, 13545229.305020873],
[70, 0, 13545229.305020873],
[75, 0, 13545229.305020873],
[80, 0, 13545229.305020873],
[85, 0, 13545229.305020873],
[90, 0, 13545229.305020873],
[95, 0, 13545229.305020873],
[100, 0, 13545229.305020873],
[105, 0, 13545229.305020873],
[110, 0, 13545229.305020873],
[115, 0, 13545229.305020873],
[120, 0, 13545229.305020873],
[125, 0, 13545229.305020873],
[130, 0, 13545229.305020873],
[135, 0, 13545229.305020873],
[140, 0, 13545229.305020873],
[145, 0, 13545229.305020873],
[150, 0, 13545229.305020873],
[155, 0, 13545229.305020873],
[160, 0, 13545229.305020873],
[165, 0, 13545229.305020873],
[170, 0, 13545229.305020873],
[175, 0, 13545229.305020873],
[180, 0, 13545229.305020873]
],
"__parse": true
},
"__parse": true
}
]
},
{
"data-2": [
{
"name": "Io",
"across": "3,643",
"km": "421,700",
"days": "1.8",
"longitude": 40,
"latitude": 0,
"altitude": 7349344.692686404,
"circleSettings": {
"radius": 6.65273717821019,
"fill": {
"type": "Color",
"value": "#e6cf6e"
},
"animations": [
{
"target": "dataItem",
"key": "longitude",
"from": 40,
"to": -320,
"duration": 39152,
"loops": 0
}
],
"__parse": true
},
"__parse": true
},
{
"name": "Europa",
"across": "3,122",
"km": "671,034",
"days": "3.6",
"longitude": 160,
"latitude": 0,
"altitude": 9273017.726951342,
"circleSettings": {
"radius": 6.158110620255045,
"fill": {
"type": "Color",
"value": "#ece4d4"
},
"animations": [
{
"target": "dataItem",
"key": "longitude",
"from": 160,
"to": -200,
"duration": 33954,
"loops": 0
}
],
"__parse": true
},
"__parse": true
},
{
"name": "Ganymede",
"across": "5,268",
"km": "1,070,412",
"days": "7.2",
"longitude": -70,
"latitude": 0,
"altitude": 11206850.87213243,
"circleSettings": {
"radius": 8,
"fill": {
"type": "Color",
"value": "#b6a68e"
},
"animations": [
{
"target": "dataItem",
"key": "longitude",
"from": -70,
"to": -430,
"duration": 31840,
"loops": 0
}
],
"__parse": true
},
"__parse": true
},
{
"name": "Callisto",
"across": "4,821",
"km": "1,882,709",
"days": "16.7",
"longitude": -150,
"latitude": 0,
"altitude": 13545229.305020873,
"circleSettings": {
"radius": 7.652606956278904,
"fill": {
"type": "Color",
"value": "#8d7f6b"
},
"animations": [
{
"target": "dataItem",
"key": "longitude",
"from": -150,
"to": -510,
"duration": 30762,
"loops": 0
}
],
"__parse": true
},
"__parse": true
}
]
},
{
"series-0": {
"type": "MapRasterSeries",
"settings": {
"src": "https://cdn.amcharts.com/lib/5/geodata/images/jupiter2048.jpg"
}
}
},
{
"series-1": {
"type": "MapLineSeries",
"properties": {
"data": "#data-1",
"mapLines": {
"properties": {
"template": {
"settings": {
"stroke": {
"type": "Color",
"value": "#ffffff"
},
"strokeOpacity": 0.06,
"altitude": 0,
"interactive": false
}
}
}
}
}
}
},
{
"series-2": {
"type": "MapPointSeries",
"settings": {
"latitudeField": "latitude",
"longitudeField": "longitude",
"altitudeField": "altitude"
},
"properties": {
"data": "#data-2",
"bullets": [
{
"type": "Bullet",
"settings": {
"sprite": {
"type": "Circle",
"settings": {
"tooltipText": "[bold]{name}[/]\n{across} km across\n{km} km from Jupiter's center\nOnce round in {days} days",
"tooltipY": 0,
"templateField": "circleSettings"
},
"states": [
{
"key": "hover",
"settings": {
"scale": 1.4
}
}
]
}
}
}
]
}
}
}
],
"root": {
"properties": {
"interfaceColors": {
"settings": {
"primaryButton": {
"type": "Color",
"value": "#2a3042"
},
"primaryButtonHover": {
"type": "Color",
"value": "#3a4259"
},
"primaryButtonDown": {
"type": "Color",
"value": "#485170"
},
"primaryButtonActive": {
"type": "Color",
"value": "#485170"
},
"primaryButtonDisabled": {
"type": "Color",
"value": "#1c2030"
},
"primaryButtonTextDisabled": {
"type": "Color",
"value": "#5c6278"
},
"primaryButtonText": {
"type": "Color",
"value": "#e6e8f0"
},
"primaryButtonStroke": {
"type": "Color",
"value": "#4a5370"
},
"background": {
"type": "Color",
"value": "#0b0e18"
}
}
}
}
}
}



