利用geo3d地图数据画地图上面的柱子

利用geo3d地图数据画地图上面的柱子

 

import 'echarts-gl'
import echarts from 'echarts'
import '../../../../map-json/jiangmen'

const data = [{
    name: '蓬江区',
    value: [113.00859, 22.81677, 10],

},
{
    name: '江海区',
    value: [113.119978, 22.567851, 20]
},

{
    name: '新会区',
    value: [113.047065, 22.324486, 60]
},
{
    name: '台山市',
    value: [112.614703, 22.002776, 80]
},
{
    name: '开平市',
    value: [112.597861, 22.390725, 30]
},
{
    name: '鹤山市',
    value: [112.785845, 22.767248, 40]
},
{
    name: '恩平市',
    value: [112.221539, 22.096532, 55]
},
{
    name: '恩平市',
    value: [112.221539, 22.096532, 20]
},
{
    name: '恩平市',
    value: [112.121539, 22.096532, 90]
},

]

class ChartMap extends PureComponent {
    constructor(props) {
        super(props)
        this.state = {
        }
        this.myChart = null
    }

    componentDidMount(){
        this.initEcharts()
    }

    initEcharts = () => {
        this.myChart = echarts.init(this.el, null, {
            renderer: 'canvas',
            height: '800px'
        })
        const option = {
            geo3D: {
                map: '江门',
                show: true,
                zlevel: -10,
                
                boxWidth: 110,
                boxHeight: 30, // 4:没有bar. 30:有bar,bar最高度30,按比例分配高度
                regionHeight: 3,
                shading: 'lambert',
                label: { // 标签的相关设置
                    show: true, // (地图上的城市名称)是否显示标签 [ default: false ]
                    // distance: 50, // 标签距离图形的距离,在三维的散点图中这个距离是屏幕空间的像素值,其它图中这个距离是相对的三维距离
                    // formatter:, // 标签内容格式器
                    textStyle: { // 标签的字体样式
                        color: '#fff', // 地图初始化区域字体颜色
                        fontSize: 12, // 字体大小
                        opacity: 1, // 字体透明度
                        backgroundColor: 'transparent' // 字体背景色
                    },
                },
                itemStyle: {
                    color: '#0396E8',
                    opacity: 0.5,
                    borderWidth: 2,
                    borderColor: '#67C1FF'
                },
                emphasis: {
                    label: {
                        show: true,
                        textStyle: {
                            color: '#fff',
                            fontSize: 14,
                            backgroundColor: 'transparent' // 字体背景色
                        }
                    },
                    borderColor: '#ADDEFF',
                    borderWidth: 2,
                    itemStyle: {
                        color: '#38D2FF',
                    }
                },
                light: {
                    main: {
                        shadow: true,
                        shadowQuality: 'ultra',
                        intensity: 1,
                        alpha: 40,
                        beta: 300
                    },
        
                },
        
                viewControl: {
                    projection: 'perspective',
                    autoRotate: false,
                    // damping: 0,
                    rotateSensitivity: 1, // 旋转操作的灵敏度
                    rotateMouseButton: 'left', // 旋转操作使用的鼠标按键
                    zoomSensitivity: 1, // 缩放操作的灵敏度
                    panSensitivity: 1, // 平移操作的灵敏度
                    // panMouseButton: 'right', // 平移操作使用的鼠标按键
                    
                    distance: 150, // 默认视角距离主体的距离
                    center: [0, 0, 0],
                   
                    // animation: false,
                    // animationDurationUpdate: 1000,
                    // animationEasingUpdate: 'cubicInOut'
                },
        
            },
            
            series: [
                // bar
                {
                    type: 'bar3D',
                    coordinateSystem: 'geo3D',
                    zlevel: 3,
                    barSize: 3, // 柱子粗细
                    shading: 'lambert',
                    itemStyle: {
                        color: '#67ebc0'
                    },
                    label: {
                        show: true,
                        position: 'top',
                        textStyle: {
                            color: '#fff',
                            backgroundColor: 'transparent'
                        },
                        formatter(params) {
                            return params.value[2]
                        }
                    },
                    data
                }
              
            ]
        }
        
        // 绘制图表
        this.myChart.setOption(option)
    }
    
    render() {
        return (
            <div className="chart-map" ref={el => { this.el = el }} id="chart-bar-geo" />
        )
    }
}
ChartMap.defaultProps = {
}

ChartMap.propTypes = {
}

export default ChartMap

 

posted @ 2021-02-02 14:08  蒋涂涂  Views(1832)  Comments(0Edit  收藏  举报