Echarts 地图结合高德地图实时显示车辆位置 - 赣州行政区完整代码示例

本示例演示如何使用 Echarts 和高德地图 API 实时显示车辆位置,并展示了以赣州行政区为地图的完整代码。教程涵盖地图加载、数据处理、样式设置等关键步骤。

注意:

由于涉及到高德地图的使用,需要先申请高德地图的 API Key。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <title>Echarts 结合高德地图显示车辆实时位置</title>
    <style type='text/css'>
        html,body{
            height:100%;
            margin:0px;
            overflow:hidden;
        }
        #container{
            width:100%;
            height:100%;
        }
    </style>
</head>
<body>
    <div id='container'></div>
    <script src='https://cdn.bootcdn.net/ajax/libs/echarts/5.2.2/echarts.min.js'></script>
    <script src='https://webapi.amap.com/maps?v=1.4.15&key=您的API Key'></script>
    <script src='https://cdn.bootcdn.net/ajax/libs/echarts/5.2.2/extension/bmap.min.js'></script>
    <script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js'></script>
    <script src='https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment.min.js'></script>
    <script>
        $(document).ready(function(){
            var map = new AMap.Map('container',{
                zoom:12, //地图缩放级别
                center:[114.938792,25.865087], //地图中心点坐标
                viewMode:'3D', //地图显示模式
                pitch:30 //地图倾角
            });
            //使用echarts插件绘制地图和车辆
            var myChart = echarts.init(document.getElementById('container'));
            //按需加载echarts地图
            echarts.registerMap('ganzhou', echarts.extendMap({
                'ganzhou': {
                    getGeoJson: function (callback) {
                        $.getJSON('ganzhou.json', function (data) {
                            callback(data);
                        });
                    }
                }
            }));
            //设置echarts地图选项
            var option = {
                tooltip:{
                    trigger:'item',
                    formatter:'{b}'
                },
                geo:{
                    map:'ganzhou',
                    roam:true,
                    label:{
                        show:true,
                        fontSize:14,
                        color:'#000',
                        formatter:function(params){
                            return params.name;
                        }
                    },
                    itemStyle:{
                        normal:{
                            borderColor:'#fff',
                            borderWidth:1,
                            areaColor:'#87CEFA',
                            shadowColor:'#fff',
                            shadowBlur:10
                        },
                        emphasis:{
                            areaColor:'#FFB6C1',
                            borderWidth:0
                        }
                    }
                },
                series:[]
            };
            myChart.setOption(option);
            //设置定时器,每隔1秒更新一次车辆位置
            setInterval(function(){
                //模拟获取车辆位置的数据,这里用了一个随机数
                var data = [
                    {name:'车辆1',value:[114.951611,25.844685,Math.random()*100]},
                    {name:'车辆2',value:[114.926558,25.847738,Math.random()*100]},
                    {name:'车辆3',value:[114.91842,25.86608,Math.random()*100]},
                    {name:'车辆4',value:[114.933972,25.876681,Math.random()*100]},
                    {name:'车辆5',value:[114.956371,25.875104,Math.random()*100]}
                ];
                //将车辆位置数据转换为echarts地图系列数据
                var seriesData = data.map(function(item){
                    return {
                        name:item.name,
                        type:'effectScatter',
                        coordinateSystem:'bmap',
                        zlevel:1,
                        rippleEffect:{
                            brushType:'stroke',
                            scale:4
                        },
                        label:{
                            show:true,
                            position:'right',
                            formatter:function(params){
                                return params.data.name+'
'+params.data.value[2].toFixed(2);
                            }
                        },
                        symbolSize:10,
                        itemStyle:{
                            color:'#F4A460'
                        },
                        data:[{name:item.name,value:[item.value[0],item.value[1],item.value[2]]}]
                    };
                });
                //将echarts地图系列数据添加到echarts选项中
                myChart.setOption({
                    series:seriesData
                });
            },1000);
        });
    </script>
</body>
</html>

代码说明:

  1. 引入库: 代码中引入了 Echarts、高德地图、Echarts-Bmap、jQuery 和 Moment.js 等库的 CDN 链接。
  2. 申请 API Key: 请到高德地图开放平台申请 API Key,并将其替换代码中的您的API Key部分。
  3. 加载赣州行政区地图数据: ganzhou.json 文件需放在与 HTML 文件同级的目录下。该文件包含赣州行政区的地理信息数据,可通过高德地图开放平台提供的工具生成。
  4. 地图初始化: 使用 AMap.Map 初始化地图,设置地图中心点坐标、缩放级别、显示模式和倾角等参数。
  5. Echarts 地图初始化: 使用 Echarts 初始化地图,注册ganzhou地图,并设置地图选项,包括 tooltip、geo、series 等。
  6. 实时更新车辆位置: 使用 setInterval 定时器,每隔 1 秒更新一次车辆位置,并通过 Echarts 的 effectScatter 系列显示在地图上。
  7. 车辆数据: 代码中模拟获取车辆位置数据,并将其转换为 Echarts 地图系列数据。您可以根据实际情况修改车辆数据获取方式。

ganzhou.json 文件内容示例:

{
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "id": "360702",
        "properties": {
            "name": "章贡区",
            "cp": [114.938792,25.865087],
            "childNum": 1
        },
        "geometry": {
            "type": "MultiPolygon",
            "coordinates": [
                [
                    [
                        [114.921784,25.915189],
                        [114.928756,25.91299],
                        [114.933473,25.914208],
                        [114.93662,25.912414],
                        [114.940148,25.916599],
                        [114.941638,25.913078],
                        [114.946003,25.910646],
                        [114.946891,25.906489],
                        ...
                    ]
                ]
            ]
        }
    }]
}

注意:

  1. 代码中的车辆位置数据是模拟的,请根据实际情况修改。
  2. 您可以根据需要修改地图样式和车辆图标。
  3. 使用高德地图 API 需要遵守相关使用规范,请查看高德地图开发文档。

希望以上内容对您有所帮助。如果您有任何问题,请随时提问。

相关资源:

Echarts 地图结合高德地图实时显示车辆位置 | 赣州行政区完整代码示例

原文地址: https://www.cveoy.top/t/topic/mOzW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录