Echarts实现区级地图

1.寻找需要的地图

获取geojson地图:
Echarts 官方Geojson 数据已被禁止, 补充geojson数据获取:
[http://datav.aliyun.com/tools/atlas/]
如果需要绘制自定义区域可以只用这个网站
http://geojson.io/#map=4/35.64/103.54
推荐先用 Open-> File 打开一个需要补充区域的json 然后用 方形工具 描绘需要的区域;
获取js地图:
Echarts官网已关闭下载,可以取github下载地图:
[https://github.com/apache/incubator-echarts]

2.Echarts导入地图

引入jquery.js和echarts.js文件到页面

<script type="text/javascript" src = "/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src = "/js/echarts.min.js"></script>

ECharts 中提供了两种格式的地图数据,一种是可以直接 script 标签引入的 js 文件,引入后会自动注册地图名字和数据。还有一种是 JSON 文件,需要通过 AJAX 异步加载后手动注册。
下面是两种类型的使用示例:
JavaScript 引入示例

<script src="echarts.js"></script>
<script src="map/js/china.js"></script>
<script>
var chart = echarts.init(document.getElementById('main'));
chart.setOption({
    series: [{
        type: 'map',
        map: 'china'
    }]
});
</script>

JSON 引入示例

$.get('map/json/china.json', function (chinaJson) {
    echarts.registerMap('china', chinaJson);
    var chart = echarts.init(document.getElementById('main'));
    chart.setOption({
        series: [{
            type: 'map',
            map: 'china'
        }]
    });
});

本例是采用第二种方式

2.完整实例代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>扬州市产业地图</title>
<script type="text/javascript" src = "/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src = "/js/echarts.min.js"></script>
</head>
<body>
<div id="map" style="width: 1200px;height:900px;"></div>
<script type="text/javascript">
//container 为div的id 
var dom = document.getElementById("map");
//得到echarts的实例对象
var myChart = echarts.init(dom);

var optionMap = {
        tooltip : {
            trigger : 'item',
            formatter : function(a) {
                return "";
            },
            show:true,
            alwaysShowContent: true,
            enterable: true,
            backgroundColor:'rgba(255,255,255,0.7)',
            borderColor: '#019ADD',
            borderWidth: 2,
            padding: [5,10],
            textStyle: {
                color: '#000',
            }
        },
        //地图坐标系必备的配置,具体的含义可以参考api
        geo : {
            roam : false,//是否开启缩放和平移
            map : '360000',//地图名称
            zoom : 1.2,//当前视角缩放比例
            selectedMode : 'single',//选中模式
            label : {
                normal : {
                    show : true,
                    textStyle : {
                        color : '#fff'
                    }
                },
                emphasis : {
                    show : true
                }
            },
            itemStyle : {//地图区域的多边形 图形样式
                hoverAnimation : false,
                normal : {
                    color : '#0065CF',
                    borderColor : '#FFF'
                },
                emphasis : {
                    areaColor : '#A6C5BD',
                    borderColor : '#FFF',
                    opacity : 1
                }
            }
        },
        series : [ {
            type : 'effectScatter',//带有涟漪特效动画的散点(气泡)图
            coordinateSystem : 'geo',
            data : [{name:'1',value:[119.53,33.23,457]},
            	{name:'2',value:[119.58,32.86,135]},
            	{name:'3',value:[119.71,32.55,234]},
            	{name:'4',value:[119.54,32.32,89]},
            	{name:'5',value:[119.40,32.49,333]},
            	{name:'6',value:[119.18,32.38,298]}],
            symbol:'circle',
            symbolSize : 5,
            showEffectOn : 'render',
            rippleEffect : {
                scale : 10,
                brushType : 'stroke'
            },
            hoverAnimation : true,
            label : {
                normal : {
                    formatter : function(a){
                        return "";
                    },
                    show : true,
                    position:'inside',
                    offset : [0 , 20],
                    textStyle:{
                        color:'#fff'
                    }
                }
            },
            itemStyle : {
                normal : {
                    color : '#f4e925',
                    shadowBlur : 10,
                    shadowColor : '#333'
                }
            },
            zlevel : 1
        },{
            type : 'scatter',
            coordinateSystem : 'geo',
            data : [{name:'1',value:[119.53,33.23,457]},
            	{name:'2',value:[119.58,32.86,135]},
            	{name:'3',value:[119.71,32.55,234]},
            	{name:'4',value:[119.54,32.32,89]},
            	{name:'5',value:[119.40,32.49,333]},
            	{name:'6',value:[119.18,32.38,298]}],
            symbol:'pin',
            symbolSize : function(a){
                return a[2]==1?0:40;
            },
            rippleEffect : {
                scale : 10,
                brushType : 'stroke'
            },
            hoverAnimation : true,
            label : {
                normal : {
                    formatter : function(a){
                        return a.value[2];
                    },
                    show : true,
                    position: 'inside',
                    textStyle:{
                        color:'#fff'
                    }
                }
            },
            itemStyle : {
                normal : {
                    color : '#00DEFF',
                    shadowBlur : 10,
                    shadowColor : '#333'
                }
            },
            zlevel : 2
        },]
    };
	$.get('/js/yangzhou.json', function (myJson){
	    echarts.registerMap('yangzhou', myJson) //注册
	    optionMap.geo.map = 'yangzhou';
	    myChart.setOption(optionMap);
	});

</script>
</body>
</html>

效果如下:
![Alt](https://avatar.csdn.net/7/7/B/1_ralf_hx163com.jpg在这里插入图片描述

function getGzMap(_data) { if (_chinaMap == undefined) { var dom = document.getElementById("container"); _chinaMap = echarts.init(dom); _chinaMap.on('click', function(params) { console.log(params); var _type = params.seriesType; if (_type == "map") { //window.parent.aaa('aa') //调用父页面方法 } else if (_type == "effectScatter") { window.parent.showMap(); } }) } var option = { backgroundColor: 'rgba(0,0,0,0)', visualMap: { type: 'piecewise', show: false, min: 0, max: 300, splitNumber: 3, itemWidth: 10, itemHeight: 10, itemGap: 5, seriesIndex: [1], pieces: [ { min: 0, max: 100, label: '优' }, { min: 101, max: 200, label: '良' }, { min: 201, max: 300, label: '高风险' } ], //color: ['#FA4D08', '#4BD94F', '#FBD32B'], //红、绿、黄 color: ['#F8DAE6', '#FEF9B5', '#B0D8B3'], //红、黄、绿 textStyle: { color: '#9EA8B1', fontSize: 10 } }, tooltip: { formatter: '{b}' }, geo: { map: 'guangdong', roam: true, aspectScale: 1, zoom: 1.5, layoutCenter: ['55%', '40%'], layoutSize: 500, label: { normal: { show: true }, emphasis: { show: true } }, itemStyle: { normal: { areaColor: '#323c48', borderColor: '#111', borderColor: '#3BB4DF', shadowColor: '#25A3FC', shadowBlur: 10 }, emphasis: { areaColor: '#ddb926' } } }, series: [{ type: 'effectScatter', coordinateSystem: 'geo', data: unitData, symbolSize: 10, symbol: 'image://../../../../Content/images/One/fire.png', //symbolRotate: 35, rippleEffect: { period: 4, scale: 5, brushType: 'fill', }, label: { normal: { formatter: '{b}', position: 'right', show: false }, emphasis: { show: false } }, itemStyle: { normal: { color: '#fff' } } }, { name: '', type: 'map', geoIndex: 0, mapType: 'guangdong', // 自定义扩展图表类型 label: { normal: { show: true, } }, itemStyle: { normal: { label: { show: true, fontSize: 10, color: '#111' }, shadowColor: '#ddb926', shadowBlur: 5, }, emphasis: { label: { show: true }, shadowColor: 'rgba(0, 0, 0, 0.5)', shadowBlur: 10 } }, data: _data }, { type: 'effectScatter', coordinateSystem: 'geo', data: windData, symbolSize: 10, symbol: 'image://../../../../Content/images/One/wind.png', //symbolRotate: 35, rippleEffect: { period: 4, scale: 5, brushType: 'fill', }, label: { normal: { formatter: '{b}', position: 'right', show: false }, emphasis: { show: false } }, itemStyle: { normal: { color: '#fff' } } }, ] }; $.getJSON('../../MapCN/guangdong.json', function(chinaJson) { echarts.registerMap('guangdong', chinaJson); _chinaMap.setOption(option, true); }); }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值