echarts自定义map背景,以及自定义标注效果

在这里插入图片描述

实现思路

  1. 设置DIV的背景图,为自定义彩图;
  2. 绘制echarts地图,默认情况下区域颜色透明,没有边框;
  3. 通过设置aspectScale(宽高比)、center(中心坐标)、zoom(缩放大小)来控制echarts和彩图的重叠效果;
  4. 设置鼠标浮动到的区域效果,渐变色、背景等等。

实现代码

js代码

const json = require('@/assets/data/guizhou.json')
echarts.registerMap('贵州省', json)
this.centerMapChart = echarts.init(document.getElementById('center-map'))
this.centerMapChart.setOption({
    geo: {
        type: 'map',
        map: '贵州省',
        aspectScale: 1.5,
        center: [106.602177096, 27.0449067414],
        zoom: 1,
        roam: false,
        label: {
            normal: {
                show: false
            },
            emphasis: {
                show: false,
                textStyle: {
                    color: '#fff',
                    fontSize: 10
                }
            }
        },
        itemStyle: {
            normal: {
                borderWidth: 0,
                areaColor: 'rgba(0, 0, 0, 0)'
            },
            emphasis: {
                borderColor: '#34C6D3',
                borderWidth: 2,
                shadowColor: 'rgba(0, 0, 0, 0.3)',
                shadowBlur: 5, 
                areaColor: {
                    type: 'linear',
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [{
                        offset: 0, color: '#2C8CC1' // 0% 处的颜色
                    }, {
                        offset: 1, color: '#57B5C2' // 100% 处的颜色
                    }],
                }
            }
        }
    },
    series: {
        type: 'map',
        geoIndex: 0,
        markPoint: {
            silent: false,
            animation: 'BMAP_ANIMATION_BOUNCE',
            symbolSize: [50, 60],
            symbol: 'image://' + require('@/assets/imgs/info-no.png'),
            label: {
                show: true,
                position: 'bottom',
                distance: 3,
                color: '#fff',
                fontSize: 12,
                formatter: '{b}',
            },
            data: this.mapData.map(item => {
                const opt = {
                    name: item.orgName,
                    coord: item.position,
                    orgCode: item.orgCode
                }
                if (item.orgCode === this.loanEnterpriseInfo.orgCode) {
                    opt.symbol = 'image://' + require('@/assets/imgs/info-al.png')
                }
                return opt
            })
        }
    }
})

HTML代码

<div class="main-center-map" id="center-map"></div>

CSS代码

.main-center-map{
    width: 78.5rem;
    height: 48.8rem;
    background-image:url('~@/assets/imgs/map.png');
    background-size:cover;
    position: absolute;
    left: 1rem;
    bottom: 0rem;
}
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要在 echarts 地图中添加自定义图标并为其添加点击事件,可以按照以下步骤进行操作: 1. 在地图上添加自定义图标 使用 echarts 提供的 `graphic` 组件,可以在地图上添加自定义图标。例如,要在地图上添加一个名为 `myIcon` 的自定义图标,可以使用以下代码: ``` option = { series: [{ type: 'map', map: 'china', ... // 其他配置项 graphic: [{ type: 'image', id: 'myIcon', z: 10, left: 100, top: 100, bounding: 'raw', style: { image: 'path/to/myIcon.png', width: 50, height: 50, }, onclick: function () { // 处理自定义图标的点击事件 } }] }] } ``` 在这段代码中,我们使用 `graphic` 组件的 `image` 类型来添加自定义图标,其中 `id` 属性为 `myIcon`,表示该图标的唯一标识符;`z` 属性为 10,表示该图标的层级为 10,即位于所有地图元素的上层;`left` 和 `top` 属性表示该图标的位置;`style` 属性指定了该图标的样式,包括图片路径、宽度和高度;`onclick` 属性为该图标添加了点击事件。 2. 处理自定义图标的点击事件 当用户点击自定义图标时,我们需要处理该图标的点击事件。在上面的代码中,我们已经为自定义图标添加了 `onclick` 属性,该属性指定了点击事件的处理函数。在处理函数中,可以编写自己的业务逻辑,例如弹出一个提示框、展示相关数据等。 例如,以下代码展示了一个简单的处理函数,当用户点击自定义图标时,弹出一个提示框: ``` onclick: function () { alert('您点击了自定义图标!'); } ``` 注意,在处理自定义图标的点击事件时,需要注意以下几点: - 点击事件处理函数中的 `this` 关键字指向的是自定义图标的 `graphic` 对象,而不是 echarts 实例或其它对象。 - 如果需要在点击事件处理函数中获取到 echarts 实例或其它对象,可以使用 `myChart` 或 `echarts` 全局变量来访问它们。例如,要获取 echarts 实例,可以使用以下代码: ``` var myChart = echarts.init(document.getElementById('myChart')); myChart.on('click', 'graphic', function (params) { var echartsInstance = myChart.getEchartsInstance(); // ... }); ``` 在上面的代码中,我们使用 `echarts.init` 方法创建了一个 echarts 实例,并将其挂载到一个 HTML 元素上;然后使用 `myChart.on` 方法为该 echarts 实例添加了一个 `click` 事件的监听器,当用户点击地图上的任何元素时,都会触发该监听器;在监听器的处理函数中,我们可以使用 `myChart.getEchartsInstance` 方法获取到 echarts 实例,并对其进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值