chart 完成拓扑图单节点拖拽不影响其他节点位置

2024-06-24 13:08

本文主要是介绍chart 完成拓扑图单节点拖拽不影响其他节点位置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述就是做这种的功能,箭头原本是可以动态重复移动的,但不知道哪里问题导致没箭头了,然后补了个edgeSymbol: ['','arrow'], 字段,才增加了箭头。

拖拽某个节点,只有关联到的线条会跟着变动其他的节点位置不变。
参考
https://gallery.echartsjs.com/editor.html?c=x8Fgri22P9
https://echarts.baidu.com/examples/editor.html?c=line-draggable&qq-pf-to=pcqq.group
这两篇文章结合,然后再自己调试出来的。

如果需要在画布上画区域的话,建议用markArea不要用markline。这样一个域可以省两个坐标点绘制,而且域也不会像markline那样因为坐标超出画布就不显示连接的线了。

我这是在用vue项目调试的,所以demo是一个vue文件,echat版本应该是4.2的,不过只要版本不是太低应该都没啥问题

贴下主要的代码:

var option = {title: {text: '网络拓扑图'},backgroundColor: "#F5F5F5",xAxis: {min: 0,max: 12,show: false,type: 'value'},yAxis: {min: 0,max: 12,show: false,type: 'value'},series: [{type: 'graph',layout: 'none',id:'a',// coordinateSystem: 'cartesian2d',coordinateSystem: 'cartesian2d',edgeSymbol: ['','arrow'],// symbolSize: 20,
//                force: {
//                  repulsion: 1000,
//                  edgeLength: [150, 200],
//                  layoutAnimation: false
//                },label: {normal: {show: true,position: 'bottom',color: '#12b5d0'}},lineStyle: {normal: {width: 2,shadowColor: 'none'}},xAxis: {min: 0,max: 12,show: false,type: 'value'},yAxis: {min: 0,max: 12,show: false,type: 'value'},// edgeSymbolSize: 8,draggable:true,data: charts.nodes,links: charts.links,itemStyle: {normal: {label: {show: true,formatter: function(item) {return item.data.name}}}}}, {name: 'A',type: 'lines',coordinateSystem: 'cartesian2d',edgeSymbol: ['circle', 'arrow'],effect: {show: true,trailLength: 0,// constantSpeed: 30,symbol: 'arrow',// color: '#12b5d0',color:'#FF0000',symbolSize: 22},data: charts.linesData}]};myChart.setOption(option);// setTimeout(function () {// Add shadow circles (which is not visible) to enable drag.myChart.setOption({graphic: echarts.util.map(charts.nodes, function (item, dataIndex) {return {type: 'circle',position: myChart.convertToPixel('grid', item.value),shape: {cx: 5,cy: 5,r: 20},invisible: true,draggable: true,ondrag: echarts.util.curry(onPointDragging, dataIndex),onmousemove: echarts.util.curry(showTooltip, dataIndex),onmouseout: echarts.util.curry(hideTooltip, dataIndex),z: 100};})});function onPointDragging(dataIndex, dx, dy) {var tempV = myChart.convertFromPixel('grid', this.position);charts.nodes[dataIndex].value = [tempV[0],tempV[1]];// Update datamyChart.setOption({series: [{id: 'a',data: charts.nodes}]});}function showTooltip(dataIndex) {myChart.dispatchAction({type: 'showTip',seriesIndex: 0,dataIndex: dataIndex});}function hideTooltip(dataIndex) {myChart.dispatchAction({type: 'hideTip'});}// }, 50);window.addEventListener('resize',function(){myChart.resize();myChart.setOption({series: [{id: 'a',data: charts.nodes}]});
});

还有的节点以及连线的代码参考第一篇文章,我这边的节点图片需要更换下自己项目中对应的图片地址,最好是在src外面层的其他目录下,比如外建一个static目录存放图片

最后附上demo文件下载地址:(原本是想把下载积分改为1最低的,但是现在上传资源时没得设置了,默认为5积分)
https://download.csdn.net/download/u012138137/11136186
这个是后续做了点优化卡顿的问题,增加异常设备闪动的效果(demo中的图片路径需要自己更换成本地的图标)。
https://download.csdn.net/download/u012138137/11191900

这篇关于chart 完成拓扑图单节点拖拽不影响其他节点位置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090237

相关文章

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者