項目要求左右兩張地圖可以在鼠標懸浮的時候高亮部分聯動,曾嘗試了connect很差使,因此本身寫了這段代碼。代碼思路爲:數組
碰見的坑:echarts
tooltip[0].alwaysShowContent=true
和tooltip[0].triggerOn="none"
。官網要求使用dispatchAction引起showTip須要設置triggerOn="none",可是我試了有沒有都行,有alwaysShowContent=true
就行;函數只要傳進去echarts實例就行,代碼以下:ide
//前面的代碼省略直接調用,傳入echarts實例對象 connectMap(chart1,chart2); function connectMap(chart1,chart2){ //當鼠標移入左側的地圖上 chart1.on("mouseover",function(target){ var option=chart2.getOption(); option.tooltip[0].alwaysShowContent=true; option.tooltip[0].triggerOn="none"; chart2.setOption(option,true); chart2.dispatchAction({ type:'downplay', seriesName:'rightmap' }) chart2.dispatchAction({ type:'highlight', name:target.name, }) }) chart1.on("mousemove",function(target){ chart2.dispatchAction({ type:'showTip', name:target.name, x:target.event.offsetX, y:target.event.offsetY }) }) chart1.on("mouseout",function(){ var option=chart2.getOption(); option.tooltip[0].alwaysShowContent=false; option.tooltip[0].triggerOn="mousemove"; chart2.setOption(option,true); chart2.dispatchAction({ type:'hideTip' }) }) //當鼠標移到右邊的地圖 chart2.on("mouseover",function(target){ var option=chart1.getOption(); option.tooltip[0].alwaysShowContent=true; option.tooltip[0].triggerOn="none"; chart1.setOption(option,true); chart1.dispatchAction({ type:'downplay', seriesName:'rightmap' }) chart1.dispatchAction({ type:'highlight', name:target.name, }) }) chart2.on("mousemove",function(target){ chart1.dispatchAction({ type:'showTip', name:target.name, x:target.event.offsetX, y:target.event.offsetY }) }) chart2.on("mouseout",function(){ var option=chart1.getOption(); option.tooltip[0].alwaysShowContent=false; option.tooltip[0].triggerOn="mousemove"; chart1.setOption(option,true); chart1.dispatchAction({ type:'hideTip' }) }) }