-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetupWorldView.js
72 lines (61 loc) · 2.46 KB
/
setupWorldView.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class WorldWindowWrapper {
constructor(wwd) {
this.wwd = wwd;
this.layers = {};
this.satellitePositions = {};
this.satelliteIds = [];
this.timePercent = 0;
}
addLayer(layer) {
this.layers[layer.displayName] = layer;
return this.wwd.addLayer(layer);
}
addSatelliteData(satelliteId, time, coordinates) {
if (!this.satellitePositions[satelliteId]) {
this.satellitePositions[satelliteId] = {};
}
this.satellitePositions[satelliteId][time] = coordinates;
}
setupWorldView() {
let layers = [
new WorldWind.BMNGOneImageLayer(),
new WorldWind.BMNGLandsatLayer(),
];
for (let layer of layers) {
this.addLayer(layer);
};
this.addLayer(new WorldWind.CoordinatesDisplayLayer(this.wwd));
this.addLayer(new WorldWind.ViewControlsLayer(this.wwd));
}
replaceSatellites() {
this.placeSatellites(this.satelliteIds);
}
placeSatellites(ids) {
let modelLayer = new WorldWind.RenderableLayer('Satellite Layer');
this.addLayer(modelLayer);
console.log(WorldWind.configuration.baseUrl + 'examples/collada_models/duck/');
var config = { dirPath: WorldWind.configuration.baseUrl + 'examples/collada_models/duck/' };
for (let satelliteId of ids) {
if (this.satellitePositions[satelliteId]) {
let times = Object.keys(this.satellitePositions[satelliteId])
if (times) {
let timeIdx = Math.round(this.timePercent / times.length)
let time = times[timeIdx]
let coordinates = this.satellitePositions[satelliteId][time];
console.log(this.satellitePositions[satelliteId])
let position = new WorldWind.Position(
coordinates[0], coordinates[1], coordinates[2]
);
let colladaLoader = new WorldWind.ColladaLoader(position, config);
// REVISIT - use Aura_27.dae and then eventually pull correct models per
// satellite
colladaLoader.load("duck.dae", (colladaModel) => {
colladaModel.scale = 4000;
this.layers['Satellite Layer'].addRenderable(colladaModel);
});
}
}
}
}
}
module.exports = WorldWindowWrapper;