需求:获取echarts当前点击城市名称
bug:Echarts地图区域点击事件无效,添加.getZr()
后又无法获取到地图当前点击城市。
一些资料说是版本问题,然鹅我下了几个最新echarts版本都无效。怀疑是我加了自定义区域让它点不中了?
解决:
//添加.getZr()之后,又获取不到params中当前点击城市
let self=this;
this.chart.getZr().on('click', function (params) {
console.log('好的终于点击到了,但是点整个画布都能触发');
//判断点击的是地图区域 而非空画布
//通过判断鼠标在子元素上指针样式是否为pointer
if(self.$refs.ele.childNodes[0].style.cursor=='pointer'){
//self.city我在地图配置项emphasis.formatter中有存(附代码)
console.log(self.city);
}
}
//this.chart.setOption({})配置项中获取的city
emphasis: { //当鼠标放上去 地区区域是否显示名称
label: {
show: true,
formatter: function (params) {
this.city=params.name;//存取当前鼠标滑过城市
return params.name;
},
},
}
这个问题官网应该已经修复了,如果你的echarts还是旧版本的话
找到(全局搜)源码echarts.js文件的getFormattedLabel: function (name, status)
方法
跟着官网改一下就好
status = status || 'normal';
var regionModel = this.getRegionModel(name);
//删除
// var formatter = regionModel.get(
// 'label'
// + (status === 'normal' ? '.' : status + '.')
//+ 'formatter'
//);
//删除
//改为
var formatter = regionModel.get((status === 'normal' ? '' : status + '.') + 'label.formatter');
//改为
var params = {
name: name
};
Component series.lines not exists. Load it first.
出现在我想使用echarts地图延长线的时候,解决:
echarts引入是不要引入压缩文件就ok了
//改为