UNPKG

earthtrek-core

Version:

Global Nominee NASA Space Apps Challenge 2017 Buenos Aires - Global Finalist (Best Use of Data) NASA Space Apps Challenge 2017 - 1D, 2D, 3D, Go! Challenge

156 lines (141 loc) 5.07 kB
/** * @class EarthTrekLayer * @module EarthTrek * @author SATrek * @author Alejandro Sanchez <alejandro.sanchez.trek@gmail.com> * @description EarthTrek - NASA Space Apps 2017 - 25 MAY 2017 */ import ImageryLayer from 'cesium/Source/Scene/ImageryLayer'; import earthTrekProvider from './earthtrek-provider'; import {earthTrekInstance} from './earthtrek-core'; /** * @deprecated */ class earthTrekLayer { /** * * @param today * @param layer * @param dontHide * @returns {ImageryLayer} */ static addLayer(today, layer, dontHide) { if (dontHide === undefined) { earthTrekLayer.hideBaseLayer(layer); } let maximumLevel = (layer.format == 'image/png') ? 2 : 8; if (layer.maximumLevel) { maximumLevel = layer.maximumLevel; } const newLayerProvider = earthTrekProvider.getProvider({ id: layer.id, time: today, format: layer.format, tileMatrixSetID: "epsg4326", resolution: layer.resolution, maximumLevel: maximumLevel }); if (earthTrekInstance().getViewer().scene.imageryLayers._layers[0].format == 'image/jpeg') { earthTrekInstance().getViewer().scene.imageryLayers._layers[0].show = false; // that.viewer.scene.imageryLayers.lowerToBottom(that.viewer.scene.imageryLayers._layers[0].show = false); } const addedLayer = earthTrekInstance().getViewer().scene.imageryLayers.addImageryProvider(newLayerProvider); let layers = earthTrekInstance().getLayers(); layers.push({layer: layer, cesiumLayer: addedLayer}); layers.forEach( (objLayer) => { if (objLayer.layer.top != undefined && objLayer.layer.top == true) { earthTrekInstance().getViewer().scene.imageryLayers.raiseToTop(objLayer.cesiumLayer); } }); return addedLayer; /* if (layer.format == 'image/jpeg') { this.layerViewer.scene.imageryLayers.lowerToBottom(addedLayer); }*/ } /** * Get Imagery Layers * @returns {imageryLayers|{get}|*|ImageryLayerCollection} */ static getImageryLayers() { return earthTrekInstance().getViewer().scene.imageryLayers; } /** * Remove Layer * @param object layer * @returns {boolean} */ static searchLayer (layer, callback) { const imageryLayers = earthTrekLayer.getImageryLayers(); if (layer instanceof ImageryLayer) { callback(layer); return true; } for (var i = 0; i <= imageryLayers.length - 1; i++) { let imageryLayer = imageryLayers.get(i); if (imageryLayer.imageryProvider._layer == layer.id) { callback(imageryLayer); return true; } } return false; } /** * Hide Layer * @param object layer */ static hideLayer (layer) { earthTrekLayer.searchLayer (layer, (imageryLayer) => { imageryLayer.show = false; earthTrekInstance().raise('layer-hidden', {'imageryLayer': imageryLayer}); }); } /** * Hide Layer * @param object layer */ static removeLayer (layer) { earthTrekLayer.searchLayer (layer, (imageryLayer) => { earthTrekLayer.getImageryLayers().remove(imageryLayer); earthTrekInstance().raise('layer-removed', {'imageryLayer': imageryLayer}); }); } /** * Hide Layer * @param object layer */ static hideBaseLayer (layer) { const imageryLayers = earthTrekLayer.getImageryLayers(); for (var i = 0; i <= imageryLayers.length - 1; i++) { let imageryLayer = imageryLayers.get(i); if (layer.format == 'image/jpeg' && imageryLayer.imageryProvider.format == 'image/jpeg') { imageryLayer.show = false; } } } /** * Toggle Layer By Id * @param layerId * @param callback */ static toggleLayerById (layerId, callback) { const imageryLayers = earthTrekLayer.getImageryLayers(); for (var i = 0; i <= imageryLayers.length - 1; i++) { let imageryLayer = imageryLayers.get(i); if (imageryLayer.imageryProvider._layer == layerId) { imageryLayer.show = !imageryLayer.show; callback(imageryLayer.show); } } } /** * Raise to Top Layer * @param object plainLayer * @param ImageryLayer layer */ static raiseToTop(plainLayer, layer) { if (plainLayer.top != undefined && plainLayer.top == true && earthTrekLayer.getImageryLayers().contains(layer)) { earthTrekInstance().getViewer().scene.imageryLayers.raiseToTop(layer); } } } module.exports = earthTrekLayer;