| |
| <!-- |
| 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> |