feat: 线效果功能新增

This commit is contained in:
kun 2023-11-03 17:16:28 +08:00
parent 62f5edeb92
commit 97ea7620e2
2 changed files with 112 additions and 21 deletions

View File

@ -464,8 +464,8 @@ const initMars3d = (option: any) => {
graphic.flyTo(); graphic.flyTo();
} }
if (props.type == "线效果") { if (props.type == "线效果") {
if (formData.value.type == "LineFlowColor") {
const arrData: any = []; const arrData: any = [];
if (formData.value.type == "LineFlowColor") {
for (let j = 0; j < 100; ++j) { for (let j = 0; j < 100; ++j) {
const startPt = randomPoint(); const startPt = randomPoint();
@ -486,18 +486,8 @@ const initMars3d = (option: any) => {
} }
} }
}); });
// 线
const graphic = new mars3d.graphic.PolylineCombine({
id: formData.value.id,
instances: arrData
});
console.log(graphic);
graphicLayer.addGraphic(graphic);
graphic.flyTo();
} }
} else { } else {
const arrData: any = [];
mars3d.Util.fetchJson({ url: JSON.parse(formData.value.jsonFile).url }).then(function (data) { mars3d.Util.fetchJson({ url: JSON.parse(formData.value.jsonFile).url }).then(function (data) {
const busLines: any = []; const busLines: any = [];
data.forEach(function (busLine: any, idx: any) { data.forEach(function (busLine: any, idx: any) {
@ -538,7 +528,9 @@ const initMars3d = (option: any) => {
attr: { index: index } attr: { index: index }
}); });
}); });
});
}
setTimeout(function () {
// 线 // 线
const graphic = new mars3d.graphic.PolylineCombine({ const graphic = new mars3d.graphic.PolylineCombine({
id: formData.value.id, id: formData.value.id,
@ -547,8 +539,7 @@ const initMars3d = (option: any) => {
console.log(graphic); console.log(graphic);
graphicLayer.addGraphic(graphic); graphicLayer.addGraphic(graphic);
graphic.flyTo(); graphic.flyTo();
}); }, 200);
}
} }
}; };
onMounted(async () => { onMounted(async () => {

View File

@ -245,7 +245,7 @@ import MapPrint from "./components/mapPrint.vue";
import FlyRoam from "./components/flyRoam.vue"; import FlyRoam from "./components/flyRoam.vue";
import MapMark from "./components/mapMark.vue"; import MapMark from "./components/mapMark.vue";
import RouteNavigation from "./components/routeNavigation.vue"; import RouteNavigation from "./components/routeNavigation.vue";
import { getSystemConfig, baseMapList, albugineaMapList, diffuseWallList } from "@/api/modules/mapCommon"; import { getSystemConfig, baseMapList, albugineaMapList, diffuseWallList, polylineCombineList } from "@/api/modules/mapCommon";
const configJson = ref<any>({}); const configJson = ref<any>({});
const screenComparisonShow = ref(false); // const screenComparisonShow = ref(false); //
const leftRollerList = ref<any>([]); const leftRollerList = ref<any>([]);
@ -794,6 +794,8 @@ const initMars3d = (option: any) => {
getBasicMaps(); getBasicMaps();
// //
getPointPosition(); getPointPosition();
// 线
getLineEffect();
// //
// addRandomGraphicByCount(graphicLayer, [117.080397, 31.656139, 33.3]); // addRandomGraphicByCount(graphicLayer, [117.080397, 31.656139, 33.3]);
// addRandomGraphicByCount(graphicLayer, [117.078006, 31.65649, 49.4]); // addRandomGraphicByCount(graphicLayer, [117.078006, 31.65649, 49.4]);
@ -844,6 +846,104 @@ const initMars3d = (option: any) => {
// map.addEffect(snowEffect); // map.addEffect(snowEffect);
// map.addEffect(snowCover); // map.addEffect(snowCover);
}; };
//
const randomPoint = () => {
const jd = random(117.208056 * 1000, 117.25548 * 1000) / 1000;
const wd = random(31.816617 * 1000, 31.855756 * 1000) / 1000;
return new mars3d.LngLatPoint(jd, wd, 100);
};
//
const random = (min: any, max: any) => {
return Math.floor(Math.random() * (max - min + 1) + min);
};
// 线
const getLineEffect = async () => {
const resLineEffect: any = await polylineCombineList({});
console.log(resLineEffect, "线效果666666");
if (resLineEffect.result && resLineEffect.result.length > 0) {
resLineEffect.result.map((item: any) => {
if (item.show) {
const arrData: any = [];
if (item.type == "LineFlowColor") {
for (let j = 0; j < 100; ++j) {
const startPt = randomPoint();
const endPt = startPt.clone();
endPt.alt = random(1000, 2000);
arrData.push({
positions: [startPt, endPt],
style: {
width: item.width,
materialType: mars3d.MaterialType.LineFlowColor,
materialOptions: {
color: item.color,
speed: item.speed,
startTime: random(1000, 3000),
percent: 0.1,
alpha: 0.01
}
}
});
}
} else {
mars3d.Util.fetchJson({ url: JSON.parse(item.jsonFile).url }).then(function (data) {
const busLines: any = [];
data.forEach(function (busLine: any, idx: any) {
let prevPt: any;
const points = [];
for (let i = 0; i < busLine.length; i += 2) {
let pt = [busLine[i], busLine[i + 1]];
if (i > 0) {
pt = [prevPt[0] + pt[0], prevPt[1] + pt[1]];
}
prevPt = pt;
const longitude = pt[0] / 1e4;
const latitude = pt[1] / 1e4;
const cart = Cesium.Cartesian3.fromDegrees(longitude, latitude, 100.0);
points.push(cart);
}
busLines.push({
positions: points,
color: item.color,
speed: 2 + 1.0 * Math.random(),
bgColor: item.bgColor
});
});
busLines.forEach(function (item2: any, index2: any) {
arrData.push({
positions: item2.positions,
style: {
width: item2.width,
materialType: mars3d.MaterialType.ODLine,
materialOptions: {
color: item2.color,
speed: item2.speed,
bgColor: item2.bgColor,
startTime: Math.random()
}
},
attr: { index: index2 }
});
});
});
}
setTimeout(function () {
// 线
const graphic = new mars3d.graphic.PolylineCombine({
id: item.id,
instances: arrData
});
console.log(graphic);
graphicLayer.addGraphic(graphic);
graphic.flyTo();
}, 100);
}
});
}
};
// //
const getPointPosition = async () => { const getPointPosition = async () => {
const resPointPosition: any = await diffuseWallList({}); const resPointPosition: any = await diffuseWallList({});