| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one | |
| or more contributor license agreements. See the NOTICE file | |
| distributed with this work for additional information | |
| regarding copyright ownership. The ASF licenses this file | |
| to you under the Apache License, Version 2.0 (the | |
| "License"); you may not use this file except in compliance | |
| with the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, | |
| software distributed under the License is distributed on an | |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations | |
| under the License. | |
| --> | |
| <html> | |
| <head> | |
| <meta charset='utf-8'> | |
| <script src='lib/simpleRequire.js'></script> | |
| <script src='lib/config.js'></script> | |
| <script src='lib/jquery.min.js'></script> | |
| <script src="lib/dat.gui.min.js"></script> | |
| <meta name='viewport' content='width=device-width, initial-scale=1' /> | |
| </head> | |
| <body> | |
| <style> | |
| html, body, #main { | |
| width: 100%; | |
| height: 100%; | |
| margin: 0; | |
| } | |
| </style> | |
| <div id='main'></div> | |
| <script> | |
| var xs = [440000, 450000]; | |
| var ys = [4368000, 4537000]; | |
| require([ | |
| 'echarts', | |
| 'data/map/json/world.json', | |
| './data/flight.json' | |
| ], function (echarts, worldJson, data) { | |
| echarts.registerMap('world', worldJson); | |
| var config = { | |
| dataLoading: 'whole', | |
| streamThreshold: 0, | |
| streamRender: true, | |
| largeModel: true | |
| }; | |
| var chart; | |
| // var gui = new dat.GUI(); | |
| // gui.add(config, 'dataLoading', ['whole', 'chunked']) | |
| // .onChange(init); | |
| // gui.add(config, 'largeModel') | |
| // .onChange(init); | |
| // gui.add(config, 'streamRender') | |
| // .onChange(init); | |
| // gui.add(config, 'streamThreshold', 0, 200000) | |
| // .onChange(init); | |
| init(); | |
| function init() { | |
| if (chart) { | |
| chart.dispose(); | |
| } | |
| chart = echarts.init(document.getElementById('main')); | |
| 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]) | |
| ]; | |
| }); | |
| var option = { | |
| streamStep: 4000, | |
| title: { | |
| text: 'World Flights', | |
| left: 'center', | |
| textStyle: { | |
| color: '#eee' | |
| } | |
| }, | |
| backgroundColor: '#003', | |
| tooltip: { | |
| formatter: function (param) { | |
| var route = data.routes[param.dataIndex]; | |
| return data.airports[route[1]][1] + ' > ' + data.airports[route[2]][1]; | |
| } | |
| }, | |
| geo: { | |
| map: 'world', | |
| left: 0, | |
| right: 0, | |
| roam: true, | |
| silent: true, | |
| itemStyle: { | |
| normal: { | |
| borderColor: '#003', | |
| color: '#005' | |
| } | |
| } | |
| }, | |
| series: [{ | |
| type: 'lines', | |
| coordinateSystem: 'geo', | |
| blendModel: 'lighter', | |
| data: routes, | |
| large: true, | |
| largeThreshold: 100, | |
| lineStyle: { | |
| normal: { | |
| opacity: 0.5, | |
| width: 0.5, | |
| curveness: 0.3 | |
| } | |
| }, | |
| // 设置混合模式为叠加 | |
| blendMode: 'lighter' | |
| }] | |
| }; | |
| chart.setOption(option); | |
| } | |
| }); | |
| </script> | |
| </body> | |
| </html> |