| /* | |
| * 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); |