Lin_Ye_Fang_Huo/public/widgets/roamChars/view.js

206 lines
4.8 KiB
JavaScript
Raw Normal View History

2023-07-18 09:04:15 +08:00
"use script"; //开发环境建议开启严格模式
2023-07-08 15:37:34 +08:00
//对应widget.js中MyWidget实例化后的对象
2023-07-18 09:04:15 +08:00
var thisWidget;
var myChart1; //图表
2023-07-08 15:37:34 +08:00
//当前页面业务
function initWidgetView(_thisWidget) {
2023-07-18 09:04:15 +08:00
thisWidget = _thisWidget;
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
myChart1 = echarts.init(document.getElementById("echartsView1"), "dark");
setEchartsData(thisWidget.data);
2023-07-08 15:37:34 +08:00
setInterval(function () {
2023-07-18 09:04:15 +08:00
updateFlyOk(thisWidget.data);
}, 800);
2023-07-08 15:37:34 +08:00
}
function updateFlyOk(charsData) {
2023-07-18 09:04:15 +08:00
if (!charsData) {
return;
}
var thislen = charsData.thislen || 0;
var arrFlyOk = []; //已漫游
2023-07-08 15:37:34 +08:00
for (var i = 0; i < charsData.arrFxgd.length; i++) {
if (charsData.arrLength[i] <= thislen) {
2023-07-18 09:04:15 +08:00
arrFlyOk.push(charsData.arrFxgd[i]);
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
break;
2023-07-08 15:37:34 +08:00
}
}
// 填入数据,根据名字对应到相应的系列
myChart1.setOption({
2023-07-18 09:04:15 +08:00
series: [{ name: "已漫游", data: arrFlyOk }],
});
2023-07-08 15:37:34 +08:00
}
//飞行漫游 图表
function setEchartsData(charsData) {
if (charsData == null || myChart1 == null) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
var option = {
legend: {
2023-07-18 09:04:15 +08:00
data: ["地面海拔", "漫游海拔", "已漫游"],
2023-07-08 15:37:34 +08:00
},
grid: {
left: 10,
right: 10,
bottom: 10,
containLabel: true,
},
dataZoom: [
{
2023-07-18 09:04:15 +08:00
type: "inside",
2023-07-08 15:37:34 +08:00
throttle: 50,
},
],
tooltip: {
2023-07-18 09:04:15 +08:00
trigger: "axis",
2023-07-08 15:37:34 +08:00
//position: function (point, params, dom, rect, size) {
// return [10, 20];
//},
formatter: function (params) {
2023-07-18 09:04:15 +08:00
var inhtml = "";
2023-07-08 15:37:34 +08:00
if (params.length < 2) {
2023-07-18 09:04:15 +08:00
return inhtml;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var hbgd = params[0].value; //海拔高度
var fxgd = params[1].value; //漫游海拔
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
var point = charsData.arrPoint[params[0].dataIndex]; //所在经纬度
2023-07-08 15:37:34 +08:00
inhtml +=
2023-07-18 09:04:15 +08:00
"所在位置&nbsp;" +
2023-07-08 15:37:34 +08:00
point.lng +
2023-07-18 09:04:15 +08:00
"," +
2023-07-08 15:37:34 +08:00
point.lat +
2023-07-18 09:04:15 +08:00
"<br />" +
2023-07-08 15:37:34 +08:00
params[1].seriesName +
"&nbsp;<label style='color:" +
params[1].color +
";'>" +
params[1].value +
2023-07-18 09:04:15 +08:00
"</label>&nbsp;米<br />";
2023-07-08 15:37:34 +08:00
if (hbgd != 0) {
2023-07-18 09:04:15 +08:00
inhtml += params[0].seriesName + "&nbsp;<label style='color:" + params[0].color + ";'>" + params[0].value + "</label>&nbsp;米<br />";
var ldgd = fxgd - hbgd; //离地高度
inhtml += "距离地面&nbsp;<label>" + ldgd.toFixed(1) + "</label>&nbsp;米";
2023-07-08 15:37:34 +08:00
// if (charsData.arrBjgd) {
// var bjgd = charsData.arrBjgd[params[0].dataIndex];
// if (bjgd > fxgd)
// inhtml += "(低于报警<label style='color:red;'>&nbsp;" + (bjgd - ldgd).toFixed(1) + "</label>&nbsp;米)";
// }
}
2023-07-18 09:04:15 +08:00
return inhtml;
2023-07-08 15:37:34 +08:00
},
},
xAxis: [
{
2023-07-18 09:04:15 +08:00
name: "行程",
type: "category",
2023-07-08 15:37:34 +08:00
boundaryGap: false,
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
data: charsData.arrLength,
},
],
yAxis: [
{
//name: '高度',
2023-07-18 09:04:15 +08:00
type: "value",
2023-07-08 15:37:34 +08:00
axisLabel: {
rotate: 60,
2023-07-18 09:04:15 +08:00
formatter: "{value} 米",
2023-07-08 15:37:34 +08:00
},
},
],
series: [
{
2023-07-18 09:04:15 +08:00
name: "地面海拔",
type: "line",
2023-07-08 15:37:34 +08:00
smooth: true,
2023-07-18 09:04:15 +08:00
symbol: "none",
sampling: "average",
2023-07-08 15:37:34 +08:00
itemStyle: {
normal: {
2023-07-18 09:04:15 +08:00
color: "rgb(255, 70, 131)",
2023-07-08 15:37:34 +08:00
},
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
2023-07-18 09:04:15 +08:00
color: "rgb(255, 158, 68)",
2023-07-08 15:37:34 +08:00
},
{
offset: 1,
2023-07-18 09:04:15 +08:00
color: "rgb(255, 70, 131)",
2023-07-08 15:37:34 +08:00
},
]),
},
},
data: charsData.arrHbgd,
},
{
2023-07-18 09:04:15 +08:00
name: "漫游海拔",
type: "line",
2023-07-08 15:37:34 +08:00
smooth: false,
2023-07-18 09:04:15 +08:00
symbol: "none",
2023-07-08 15:37:34 +08:00
data: charsData.arrFxgd,
},
{
2023-07-18 09:04:15 +08:00
name: "已漫游",
type: "line",
2023-07-08 15:37:34 +08:00
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
2023-07-18 09:04:15 +08:00
color: "rgb(255, 255, 0)",
2023-07-08 15:37:34 +08:00
},
{
offset: 1,
2023-07-18 09:04:15 +08:00
color: "rgb(255, 255, 131)",
2023-07-08 15:37:34 +08:00
},
]),
},
},
data: [],
},
],
2023-07-18 09:04:15 +08:00
};
2023-07-08 15:37:34 +08:00
// if (charsData.arrBjgd) {
// option.legend.data.push('报警高度');
// option.series.push({
// name: '报警高度',
// type: 'line',
// smooth: false,
// symbol: 'none',
// lineStyle: {
// normal: {
// width: 2,
// type: 'dotted',
// opacity: 1,
// }
// },
// data: charsData.arrBjgd
// });
// }
2023-07-18 09:04:15 +08:00
myChart1.setOption(option);
2023-07-08 15:37:34 +08:00
}