/*
title: Flights on Geo3D
category: lines3D
titleCN: Flights on Geo3D
*/

$.getJSON(ROOT_PATH + '/data-gl/asset/data/flights.json', function(data) {
    function getAirportCoord(idx) {
        return [data.airports[idx][3], data.airports[idx][4]];
    }
    var routes = data.routes.map(function(airline) {
        return [
            getAirportCoord(airline[1]),
            getAirportCoord(airline[2])
        ];
    });

    myChart.setOption({
        geo3D: {
            map: 'world',
            shading: 'color',

            environment: ROOT_PATH + '/data-gl/asset/starfield.jpg',

            silent: true,

            groundPlane: {
                show: false
            },
            light: {
                main: {
                    intensity: 0
                },
                ambient: {
                    intensity: 0
                }
            },
            viewControl: {
                distance: 50
            },

            itemStyle: {
                color: '#111'
            },

            boxHeight: 0.5
        },
        series: [{
            type: 'lines3D',

            coordinateSystem: 'geo3D',

            effect: {
                show: true,
                trailWidth: 2,
                trailLength: 0.2
            },

            blendMode: 'lighter',

            lineStyle: {
                width: 0,
                color: 'rgb(50, 50, 150)',
                opacity: 0.2
            },

            data: routes
        }]
    });
});

window.addEventListener('keydown', function () {
    myChart.dispatchAction({
        type: 'lines3DToggleEffect',
        seriesIndex: 0
    });
});