|  | /* | 
|  | * 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. | 
|  | */ | 
|  |  | 
|  | var echarts = require('../../dist/echarts'); | 
|  | // var v8 = require('v8'); | 
|  | // v8.setFlagsFromString('--max-old-space-size=4096'); | 
|  |  | 
|  | var { createCanvas } = require('canvas'); | 
|  | var fs = require('fs'); | 
|  | var ProgressBar = require('progress'); | 
|  |  | 
|  | echarts.setCanvasCreator(function () { | 
|  | return createCanvas(100, 100); | 
|  | }); | 
|  |  | 
|  | var canvas = createCanvas(); | 
|  | canvas.width = 2048; | 
|  | canvas.height = 1024; | 
|  |  | 
|  | var worldJson = JSON.parse(fs.readFileSync('.././data/map/json/world.json', 'utf-8')); | 
|  | echarts.registerMap('world', worldJson); | 
|  |  | 
|  | var chart = echarts.init(canvas); | 
|  | chart.setOption({ | 
|  | backgroundColor: '#000', | 
|  | geo: { | 
|  | map: 'world', | 
|  | roam: true, | 
|  | label: { | 
|  | emphasis: { | 
|  | show: false | 
|  | } | 
|  | }, | 
|  | silent: true, | 
|  | itemStyle: { | 
|  | normal: { | 
|  | areaColor: '#323c48', | 
|  | borderColor: '#111' | 
|  | }, | 
|  | emphasis: { | 
|  | areaColor: '#2a333d' | 
|  | } | 
|  | } | 
|  | }, | 
|  | series: [{ | 
|  | name: '弱', | 
|  | type: 'scatter', | 
|  | progressive: 1e5, | 
|  | coordinateSystem: 'geo', | 
|  | symbolSize: 0.5, | 
|  | blendMode: 'lighter', | 
|  | large: true, | 
|  | itemStyle: { | 
|  | normal: { | 
|  | color: 'rgb(20, 15, 2)' | 
|  | } | 
|  | }, | 
|  | postEffect: { | 
|  | enable: true | 
|  | }, | 
|  | silent: true, | 
|  | dimensions: ['lng', 'lat'], | 
|  | data: new Float32Array() | 
|  | }] | 
|  | }); | 
|  |  | 
|  |  | 
|  | // var CHUNK_COUNT = 277; | 
|  | var CHUNK_COUNT = 229; | 
|  | // https://blog.openstreetmap.org/2012/04/01/bulk-gps-point-data/ | 
|  | function fetchData(idx) { | 
|  | if (idx >= CHUNK_COUNT) { | 
|  | setTimeout(function () { | 
|  | fs.writeFile('out.png', canvas.toBuffer()); | 
|  | chart.dispose(); | 
|  | }); | 
|  | return; | 
|  | } | 
|  |  | 
|  | fs.readFile(`../../../echarts-gl/test/data/gps/gps_${idx}.bin`, function (err, buffer) { | 
|  | var arr = new Uint8Array(buffer.length); | 
|  | for (var i = 0; i < buffer.length; i++) { | 
|  | arr[i] = buffer[i]; | 
|  | } | 
|  |  | 
|  | var rawData = new Int32Array(arr.buffer); | 
|  | var data = new Float32Array(rawData.length); | 
|  | for (var i = 0; i < rawData.length; i += 2) { | 
|  | data[i] = rawData[i+1] / 1e7; | 
|  | data[i+1] = rawData[i] / 1e7; | 
|  | } | 
|  |  | 
|  | chart.appendData({ | 
|  | seriesIndex: 0, | 
|  | data: data | 
|  | }); | 
|  |  | 
|  | fetchData(idx + 1); | 
|  |  | 
|  | progress.tick(); | 
|  | }); | 
|  | } | 
|  | var progress = new ProgressBar('Generating [:bar] :percent :etas', { | 
|  | complete: '=', | 
|  | incomplete: ' ', | 
|  | width: 50, | 
|  | total: CHUNK_COUNT | 
|  | }); | 
|  |  | 
|  | fetchData(0); |