你好 我想咨询下你个问题 就是我在做点聚合时他们之间的连线怎么隐藏,点分散时连线在显示出来
https://csdnimg.cn/release/notification/test3dcce575-0674-46f0-8f1a-d7b340b92797.jpg
https://csdnimg.cn/release/notification/test68c66293-e4e0-4b77-9df6-61437713f552.jpg
我提供一个js实现方式 还可以用css实现
<!-- JavaScript 代码 -->
<script>
// 连线数据
const linesData = [
{ x1: 10, y1: 10, x2: 100, y2: 100 },
{ x1: 50, y1: 50, x2: 200, y2: 200 }
];
// 创建连线元素
function createLines() {
const svg = document.querySelector('svg');
linesData.forEach(lineData => {
const { x1, y1, x2, y2 } = lineData;
const line = document.createElementNS('http://www.w3.org/2000/svg', 'line');
line.setAttribute('x1', x1);
line.setAttribute('y1', y1);
line.setAttribute('x2', x2);
line.setAttribute('y2', y2);
line.setAttribute('stroke', 'black');
line.setAttribute('stroke-width', '2');
svg.appendChild(line);
});
}
// 删除所有连线元素
function deleteLines() {
const svg = document.querySelector('svg');
const lines = document.querySelectorAll('line');
lines.forEach(line => {
svg.removeChild(line);
});
}
// 点聚合时创建连线
function onCluster() {
createLines();
}
// 点分散时删除连线
function onDisperse() {
deleteLines();
}
</script>
实现这个效果可以通过CSS的伪元素和display属性来控制。
/* 聚合的点样式 */
.cluster {
position: relative;
background-color: blue;
width: 20px;
height: 20px;
}
/* 隐藏连线的伪元素 */
.cluster:before {
display: none;
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 2px;
height: 2px;
background-color: black;
}
/* 分散的点样式 */
.disperse {
position: relative;
background-color: green;
width: 20px;
height: 20px;
}
/* 显示连线的伪元素 */
.disperse:before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 2px;
height: 2px;
background-color: black;
}
在使用这些样式时,只需将点的元素添加对应的类名即可。
<!-- 隐藏连线的点 -->
<div class="cluster"></div>
<!-- 显示连线的点 -->
<div class="disperse"></div>
希望以上解决方案对您有所帮助,如果您有任何问题,请随时提问。
用什么实现的呢?ol?高德地图?