<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> <meta name="description" content="Adjust brightness, contrast, hue, saturation, and gamma of an imagery layer."> <meta name="cesium-sandcastle-labels" content="Showcases"> <title>Imagery Adjustment</title> <script type="text/javascript" src="../Sandcastle-header.js"></script> <script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script> <script type="text/javascript"> require.config({ baseUrl : '../../../Source', waitSeconds : 60 }); </script> </head> <body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html"> <style> @import url(../templates/bucket.css); #toolbar { background: rgba(100, 100, 100, 0.8); padding: 4px; border-radius: 4px; } #toolbar input { vertical-align: middle; padding-top: 2px; padding-bottom: 2px; } </style> <div id="cesiumContainer" class="fullSize"></div> <div id="loadingOverlay"><h1>Loading...</h1></div> <div id="toolbar"> <table> <tbody> <tr> <td>亮度</td> <td> <input type="range" min="0" max="3" step="0.02" data-bind="value: brightness, valueUpdate: 'input'"> <input type="text" size="5" data-bind="value: brightness"> </td> </tr> <tr> <td>对比度</td> <td> <input type="range" min="0" max="3" step="0.02" data-bind="value: contrast, valueUpdate: 'input'"> <input type="text" size="5" data-bind="value: contrast"> </td> </tr> <tr> <td>色调</td> <td> <input type="range" min="0" max="3" step="0.02" data-bind="value: hue, valueUpdate: 'input'"> <input type="text" size="5" data-bind="value: hue"> </td> </tr> <tr> <td>饱和度</td> <td> <input type="range" min="0" max="3" step="0.02" data-bind="value: saturation, valueUpdate: 'input'"> <input type="text" size="5" data-bind="value: saturation"> </td> </tr> <tr> <td>伽马</td> <td> <input type="range" min="0" max="3" step="0.02" data-bind="value: gamma, valueUpdate: 'input'"> <input type="text" size="5" data-bind="value: gamma"> </td> </tr> </tbody> </table> </div> <script id="cesium_sandcastle_script"> function startup(Cesium) { 'use strict'; //Sandcastle_Begin Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNDhhYmQxOC1mYzMwLTRhYmEtOTI5Ny1iNGExNTQ3ZTZhODkiLCJpZCI6NTQ1NCwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0MzM3Mzc0NH0.RU6ynAZcwQvdfygt_N_j2rb2lpsuyyROzdaLQg0emAg'; var viewer = new Cesium.Viewer('cesiumContainer'); var imageryLayers = viewer.imageryLayers; // 视图模型跟踪我们的迷你应用程序的状态。 var viewModel = { brightness: 0, contrast: 0, hue: 0, saturation: 0, gamma: 0 }; // 将视图模型成员转换为剔除的可观测值。 Cesium.knockout.track(viewModel); // 将视图模型绑定到调用它的UI的dom元素。 var toolbar = document.getElementById('toolbar'); Cesium.knockout.applyBindings(viewModel, toolbar); // 使活动图像层成为视图模型的订阅者。 function subscribeLayerParameter(name) { Cesium.knockout.getObservable(viewModel, name).subscribe( function(newValue) { if (imageryLayers.length > 0) { var layer = imageryLayers.get(0); layer[name] = newValue; } } ); } subscribeLayerParameter('brightness'); subscribeLayerParameter('contrast'); subscribeLayerParameter('hue'); subscribeLayerParameter('saturation'); subscribeLayerParameter('gamma'); // 使视图模型对底层更改做出反应。 function updateViewModel() { if (imageryLayers.length > 0) { var layer = imageryLayers.get(0); viewModel.brightness = layer.brightness; viewModel.contrast = layer.contrast; viewModel.hue = layer.hue; viewModel.saturation = layer.saturation; viewModel.gamma = layer.gamma; } } imageryLayers.layerAdded.addEventListener(updateViewModel); imageryLayers.layerRemoved.addEventListener(updateViewModel); imageryLayers.layerMoved.addEventListener(updateViewModel); updateViewModel(); //Sandcastle_End Sandcastle.finishedLoading(); } if (typeof Cesium !== 'undefined') { startup(Cesium); } else if (typeof require === 'function') { require(['Cesium'], startup); } </script> </body> </html>
Imagery Adjustment_viewModel.html
猜你喜欢
转载自blog.csdn.net/weixin_42193179/article/details/87466217
今日推荐
周排行