arcgis js 4 使用d3.js 构建扩散圆
我们使用d3.js 与arcgis 构建扩散圆
首先还是先定义数据结构
-
let options = {
-
renderer: {
-
type: "simple",
-
symbol: {
-
r: 8,
-
color2: "#476db6",
-
color1: "#0f46ab",
-
width: "1.5",
-
time: "1200"
-
}
-
},
-
data: [
-
{
-
geometry: [12702451.34188237, 2577586.8581332113],
-
attributes: {
-
name: "1号发散圆"
-
}
-
},
-
{
-
geometry: [12649387.05306244, 2562350.409717491],
-
attributes: {
-
name: "2号发散圆"
-
}
-
}
-
]
-
};
我们构建全局变量存储svg的圆
-
this.graphics = new Array(); //存储外圆环
-
this.centerCircles = new Array(); //存储中心圆
-
this.expanCircles = new Array(); //存储五个扩散圆环
-
this.poitChangeSvg = new Array();
根据数据构建
- this.svg 是初始svg 全局容器 参考之前基础篇章
- toScreen方法 参考之前基础篇章
```javascript
let data = this.options.data;
for (let item of data) {
let svg = this.svg;
let symbol = this.options.renderer.symbol;
-
let r1 = symbol.r * 3; //外圆环真实的半径
-
let dis = r1/3; //扩散圆环半径差值
-
let data = [r1-dis,r1,r1+dis,r1+2*dis,r1+3*dis]; //构建扩散圆环半径数组
-
let max = Math.max(...data); //取得阈值
-
let scale = d3.scaleLinear()
-
.range([symbol.color2, symbol.color1]) //发散圆环颜色渐变范围
-
.domain([0, max]); //阈值,渐变消失的判断
-
//外圈的圆
-
let graphic = svg.append("circle");
-
graphic
-
.attr("r", r1)
-
.attr("fill", symbol.color1);
-
let r2 = r1 / 30 * 22;
-
//中心的圆
-
let centerCircle = svg.append("circle");
-
centerCircle
-
.attr("r", r2)
-
.attr("fill", symbol.color2);
-
//一组扩散圆环
-
let circles = svg.selectAll("body");
-
let expanCircle = circles.data(data)
-
.enter()
-
.append("circle")
-
//依次根据半径添加圆
-
.attr("r", function (d) {
-
return d;
-
})
-
.attr("fill", "none")
-
.style("stroke-width", symbol.width) //扩散圆环粗细
更多参考 https://xiaozhuanlan.com/topic/2451973608
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律