极海SDK开发 | OD线
极海云平台提供很多即拿即用的工具,比如数据上图、数据编辑、数据探索、模型计算、数据大屏等,通过这些工具我们可以快速的处理分析数据,制作酷炫的可视化效果。
但是也有很多的功能和效果是现成的工具还没有提供的,这个时候有开发能力的小伙伴就可以用极海提供的SDK来试试。极海SDK开发系列主要介绍在实际应用过程中,针对不同的应用场景,如何使用极海的SDK。
本期主要介绍OD线的两个展示效果是如何实现的。
OD线越重叠的地方亮度越高
效果
实现
let series = [];
data.forEach((el, i) => {
series.push({
color: "#58B3CC",
width: 1,
opacity: 0.2,
curveness: 0.1,
data: data[i],
blendMode: "lighter"
});
});
let odLayer = new G.Layer.OD({
type: "solid",
series: series
});
odLayer.addTo(map)
重点的参数是bendMode,指定新的绘制内容与画布当前已有内容的重叠方式,可选"source-over"(在已有图像上显示新图像)、"destination-over"(在新图像上显示已有图像)、"lighter"(二者叠加显示),"lighter"可以实现OD线越重叠的地方亮度越高。
动态OD效果
效果
实现
let odLayer = new G.Layer.Graphic().addTo(map);
let option_line = {
curvature: 0.3,
curvePosition: 0.5,
direction: "left",
lineWidth: 1,
lineOpacity: 0.7,
lineColor: "#58B3CC"
};
let option_anim = {
curvature: 0.3,
curvePosition: 0.5,
direction: "left",
symbol: "point",
symbolOnly: true,
lineWidth: 2,
lineOpacity: 0.9,
lineColor: "#58B3CC",
duration: 6,
repeatCount: -1
};
data.forEach(el => {
//line
let line = new G.Graphic.OD(el, {}, option_line);
line.addTo(odLayer);
//animLine
let animLine = new G.Graphic.AnimOD(el, {}, option_anim);
animLine.addTo(odLayer);
animLine.play();
});
主要的思路是构建一个AnimOD对象,将symbol设置为point,symbolOnly设置为true,通过lineWidth来改变symbol的大小;起点和终点还可以绘制一个Point的Graphic对象。