leaflet与ECharts的统计图表

看了网站一位大神的自己复写了一下

ECharts的写法我就不赘述了 主要实现三种图表展现形式,如下图所示 为三种样式的demo

 

1、Leaflet Control

主要就是初始一个control,并在并给其中的容器DIV附上class和id,id用于创建图表时能找到该容器,class用于控制control的样式

class样式

.chart{
    width: 600px;
    height: 300px;
    background-color: #fff;
}

js代码

var chartCtr=L.control({position: 'bottomright'});
    chartCtr.onAdd=function (map) {
        var div=L.DomUtil.create('div','info chart');
        div.id='chartControl';
        return div;
    }
    chartCtr.addTo(map);

    var barChart = echarts.init(document.getElementById('chartControl'));
var barOption={
    //图表option
    ......
}

barChart.setOption(barOption);

2、Leaflet Marker

通过marker的divIcon来实现,这里特别提一点,其实通过divicon可以实现任意样式的marker

var cMark1=L.marker([30.66,120.77],
                    {icon:L.divIcon({
                        className:'leaflet-echart-icon',
                        iconSize:[160,160],
                        html:'<div id="cm1" style="width:160px;height:160px;position:relative;background-color:transparent;">asd</div>'
                    })}).addTo(map);

var Chart1=echarts.init(document.getElementById('cm1'));
var cmOption1={
      //图表option
      ......
}
Chart1.setOption(cmOption1);

3、Leaflet Popup

通过弹出窗口实现Leaflet,这里做了一点修改,原本只要给popup里面的div赋予ID就能找到,但是这里做出了一点修改,在popup的popupopen事件触发时重载echarts,可以看到初始动画

var popChartMarker1=L.marker([30.76,120.91]).addTo(map);

//配置弹出框
var content1='<div style="width:260px;height:220px" id="mark1"></div>';
popChartMarker1.bindPopup(content1,{});
popChartMarker1.on('popupopen',function(e){
    var myChart=echarts.init(document.getElementById('mark1'));
    var option={
              //option样式
        }
    myChart.setOption(option);
});

 

posted @ 2017-12-11 19:31  咖啡漩涡  阅读(3146)  评论(0编辑  收藏  举报