mapbox、echarts实现地图流动效果

实现效果:


<html>

<head>
    <script src="https://api.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/echarts@v3.8.0/dist/echarts.min.js"></script>
    <script src="http://echarts.baidu.com/resource/echarts-gl-latest/dist/echarts-gl.min.js"></script>
</head>

<body style="margin: 0; padding: 0;">
    <div id="map" style=" 100vw; height: 100vh"></div>
</body>

<script type="text/javascript">
    async function initialize() {
        let jsonData = 请求的数据'
        var szRoad=jsonData;

        var busLines = [];
        var data = szRoad.data;
        var hStep = 300 / (data.length - 1);

        var i = 0;
        for (var x in data) {
            // i++;
            // if(i<5000)
            //     continue;
            var line = data[x];
            // if(busLines.length>500)
            //     break;
            var pointString = line.ROAD_LINE;
            var pointArr = pointString.split(';');
            var lnglats = [];
            for (var j in pointArr) {
                lnglats.push(pointArr[j].split(','))
            }
            busLines.push({
                coords: lnglats,
                lineStyle: {
                    normal: {
                        color: echarts.color.modifyHSL('#5A94DF', Math.round(hStep * x))
                    }
                }
            })
        }

        option = {
            backgroundColor: '#404a59',
            mapbox: {
                center: [113.89764, 22.58294],
                zoom: 14,
                altitudeScale: 10000,
                style: {
                    'version': 8,
                    'sources': {
                        'raster-tiles': {
                            'type': 'raster',
                            'tiles': [
                                'https://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}'
                            ],
                            'tileSize': 256
                        }
                    },
                    'layers': [
                        {
                            'id': 'simple-tiles',
                            'type': 'raster',
                            'source': 'raster-tiles',
                            'minzoom': 0,
                            'maxzoom': 22
                        }
                    ]
                },
                postEffect: {
                    enable: true,
                    FXAA: {
                        enable: true
                    }
                },
                light: {
                    main: {
                        intensity: 1,
                        shadow: true,
                        shadowQuality: 'high'
                    },
                    ambient: {
                        intensity: 0
                    },
                    ambientCubemap: {
                        // texture: '/asset/get/s/data-1491838644249-ry33I7YTe.hdr',
                        texture: '/asset/get/s/Milkyway_Light.hdr',
                        exposure: 1,
                        diffuseIntensity: 0.5,
                        specularIntensity: 2
                    }
                }
            },
            series: [{
                type: 'lines3D',

                coordinateSystem: 'mapbox',

                effect: {
                    show: true,
                    constantSpeed: 2,
                    trailWidth: 2,
                    trailLength: 0.4,
                    trailOpacity: 1,
                    spotIntensity: 10
                },

                blendMode: 'lighter',

                polyline: true,

                lineStyle: {
                     0.1,
                    color: 'rgb(200, 40, 0)',
                    opacity: 0
                },

                data: {
                    count: function () {
                        return busLines.length;
                    },
                    getItem: function (idx) {
                        return busLines[idx]
                    }
                }
            }]
        };
   
        var myChart = echarts.init(document.getElementById('map'));
        myChart.setOption(option);

    }
    initialize();



</script>

</html>
原文地址:https://www.cnblogs.com/dxy9527/p/14984547.html