Echarts,一个效果很是棒的可视化库,能够生产各类图表,动态展现,附上官方网址:http://www.echartsjs.com/index.htmlhtml
以前带本科实习时有同窗用过,狗哥的博客也用这个展现他的旅游足迹,因此在此次山西项目里我也拿来试了一下。相似于echarts这种库,最好的学习方法就是按照官网的demo来作,因此我先找了一个符合我要求的demo将其实现,而后再分别掌握其中的重要属性,最后按照本身的需求进行改动。git
1、地图展现github
我看的主要是如下两种:都在series里,位置在侧栏标出来了数组
2、属性设置echarts
属性是以键值对的形式调用的,大部分都很简单,和样式有关,一看就知道是干什么的,须要重点关注的是如下几个:学习
tooltip:浮动提示框组件测试
legend:图例spa
series:系列列表,每一个系列经过 type
决定本身的图表类型3d
其中,series里的label和tooltrip中都含有formatter属性,这两个是调整地图所展现的点信息的关键,必定要理清楚formatter属性中的参数含义 ,具体参见官方文档的详细介绍。注意分清 系列名 / 数据名 / 数据值 这三者对应的内容code
这是我调整以后的效果:左边是label,右边是tooltip,其余的内容写在代码的注释里了,能够往下看
有不会的必定记得查阅官方文档,里面有不一样属性很是详细的介绍
内容我已经上传到github了,欢迎你们查看和下载,以为不错的话能够关注我~
地址:https://github.com/santana2000/sxWebGIS/tree/master/poi
3、代码实现
var myChart = echarts.init(document.getElementById('sxmap')); // 注意引入版本 // 注意不一样版本使用差异 var data = [ //元素为对象的数组 {name: '长治', value: 41}, {name: '大同', value: 58}, {name: '临汾', value: 47}, {name: '太原', value: 39}, {name: '阳泉', value: 31}, {name: '晋城', value: 70}, {name: '平遥', value: 20}, {name: '吕梁', value: 10}, ]; var geoCoordMap = { //对象 '阳泉':[113.57,37.85], '大同':[113.3,40.12], '长治':[113.08,36.18], '临汾':[111.5,36.08], '太原':[112.53,37.87], '晋城':[112.43,36.87], '平遥':[112.03,37.37], '吕梁':[112.53,37.37], } var convertData = function (data) { var res = []; for (var i = 0; i < data.length; i++) { var geoCoord = geoCoordMap[data[i].name]; if (geoCoord) { res.push({ name: data[i].name, value: geoCoord.concat(data[i].value) //新值= 坐标+旧值; }); } } return res; // [113.57, 37.85, 31] }; option = { backgroundColor: '#404a59', title: { text: '矿山灾害点危险性展现', left: 'center', textStyle: { color: '#fff', fontSize:25 } }, tooltip: { //提示框组件 trigger: 'item', formatter:'{b} <br/> ', //{c@[2]} show:false }, legend: { //图例 orient: 'vertical', y: 'bottom', x: 'right', data: ['危害性'], textStyle: { color: '#fff' } }, geo: { map: "china", label: { emphasis: { show: false } }, roam: true, center:[112.38,37.67], zoom:7, itemStyle: { normal: { areaColor: "#323c48", borderColor: "#000000" }, emphasis: { areaColor: "#2a333d" } } }, series: [{ name: '危险指数:', type: 'effectScatter', coordinateSystem: 'geo', data: convertData(data.sort(function (a, b) { return b.value - a.value; }).slice(0, 8)), //选取从 start 到数组结尾的全部元素,该方法并不会修改数组,而是返回一个子数组 symbolSize: function (val) { return val[2] / 2; //res数组中的第三个元素 }, showEffectOn: 'render', rippleEffect: { brushType: 'stroke' }, hoverAnimation: true, label: { normal: { formatter: '{b}:{@2}', position: 'right', show: false }, emphasis: { show: true } }, itemStyle: { normal: { color: '#f4e925', shadowBlur: 10, shadowColor: '#333' } }, zlevel: 1 } ] }; myChart.setOption(option); /* a(); 执行一次绘制地图 $(window).resize(function() { 窗口缩放一次 map.resize(); 地图画布缩放一次 a() 地图再绘制一次 */
最后说两个要注意的点:
1. 看清楚当前的版本,如今更新到了4.x,有一些属性在以前的版本上作了改动
2. 引用时注意版本,能够看到bootcdn里可选的不少,本身测试时建议选完整版的