Angularjs 查看器时钟和时间线显示不佳
以下是我正在使用的部分:Angular 1.5.8、Bootstrap 3.3.7、Cesium 1.27.0、Firefox 49(我还没有在其他浏览器中测试过) 我试图在一个角度1应用中使用铯。问题是: 铯渲染的时钟占据了整个屏幕的下半部分。时间线也没有出现。在我的SPA中,查看器似乎第一次正确地显示了时钟和时间线。但是,当我切换到另一个“页面”,然后返回到我的铯元素页面时,显示会变得混乱,并一直保持这种状态,直到我关闭浏览器选项卡并重新开始。 以下是我所拥有的: 模块A.控制器:Angularjs 查看器时钟和时间线显示不佳,angularjs,firefox,twitter-bootstrap-3,cesium,Angularjs,Firefox,Twitter Bootstrap 3,Cesium,以下是我正在使用的部分:Angular 1.5.8、Bootstrap 3.3.7、Cesium 1.27.0、Firefox 49(我还没有在其他浏览器中测试过) 我试图在一个角度1应用中使用铯。问题是: 铯渲染的时钟占据了整个屏幕的下半部分。时间线也没有出现。在我的SPA中,查看器似乎第一次正确地显示了时钟和时间线。但是,当我切换到另一个“页面”,然后返回到我的铯元素页面时,显示会变得混乱,并一直保持这种状态,直到我关闭浏览器选项卡并重新开始。 以下是我所拥有的: 模块A.控制器: vm.v
vm.viewer = new Cesium.Viewer(elem, {
terrainProvider : new Cesium.CesiumTerrainProvider({
url : 'https://assets.agi.com/stk-terrain/world'
}),
baseLayerPicker: false,
clock: CesiumClockService.get()
});
vm.viewer.scene.globe.enableLighting = false;
CesiumLockService
位于另一个模块中,该模块是ModuleA的依赖项之一。该服务只是创建一个铯时钟,并提供一个get/set方法。其想法是使用Angular的单例服务为任何客户机模块提供相同的铯时钟,以使所有客户机模块彼此保持同步
模块A.指令:
var dir = {
restrict: 'E',
controller: 'ModuleAController',
bindToController: true,
link: linkFunction
};
return dir;
function linkFunction(scope, element, attr, ctrl){
ctrl.setCesiumElem(element[0]);
}
它所在的HTML:
<body>
<div style="height: 100%;width: 100%;padding-top: 48px;padding-bottom: 48px;margin-bottom: 30px;">
<div class="container-fluid">
<div id="main-container">
<div class="row">
<div class="col-xs-12">
<module-A-directive></module-A-directive>
</div>
</div>
</div>
</div>
</div>
</body>
在我的ModuleDirective中,我将以下内容添加到我的linkFunction中:
function linkFunction(scope, element, attr, ctrl){
var raw = element[0];
raw.className = "cesium-viewer";
ctrl.setCesiumElem(raw);
}
显然,铯查看器非常喜欢铯查看器类,以使其外观美观。铯查看器需要放置在大小可控的
div
中,例如设置显示:块的div;位置:相对位置;宽度:100%;高度:100%
,或与之类似的CSS
正如您所发现的,向div添加cesium viewer
类是解决此问题的有效方法,因为该类包含所需的样式。如果你这么想,你也可以自己做一个类,例如,如果你想让铯最终进入一个容器,而不是width:100%;高度:100%
,但仍然是一个受控大小,而不是要求浏览器允许根据内容调整大小