viewer_s3m.vue 3.55 KB
<!--
 * 1、加载倾斜摄影模块
 * 2、加载一个矢量面对象并将其设置为水面效果
 * @Author: jiangbotao
 * @Date: 2019-12-03 22:52:56
 * @LastEditors: jiangbotao
 * @LastEditTime: 2019-12-04 22:23:44
 * @FilePath: \superglobevue\src\components\viewer.vue
 -->
<template>
    <div>
		<div id="cesiumContainer" v-bind:style="styleObject"></div>
		<div id='loadingbar' class="spinner">
			<div class="spinner-container container1">
				<div class="circle1"></div>
				<div class="circle2"></div>
				<div class="circle3"></div>
				<div class="circle4"></div>
			</div>
			<div class="spinner-container container2">
				<div class="circle1"></div>
				<div class="circle2"></div>
				<div class="circle3"></div>
				<div class="circle4"></div>
			</div>
			<div class="spinner-container container3">
				<div class="circle1"></div>
				<div class="circle2"></div>
				<div class="circle3"></div>
				<div class="circle4"></div>
			</div>
		</div>
	</div>
</template>

<script>
import URL_CONFIG from "./../config/urlConfig.vue";
const Cesium = window.Cesium;
export default {
    data: function() {
        return {
            styleObject: {
                width: "100%",
                position: "absolute",
                top: "0px",
                bottom: "0px",
                left: "0px",
                backgroundColor: "#000000"
            },
            smviewer: {}
        };
    },
    mounted: function() {
        this.viewer = new Cesium.Viewer("cesiumContainer", {});
        // 隐藏logo
        $(".cesium-widget-credits")[0].style.visibility = "hidden";
        // 隐藏导航工具
        // $(".cesium-viewer-navigationContainer")[0].style.visibility="hidden";

        // 添加OSM地图
        let osm = Cesium.createOpenStreetMapImageryProvider({
            url: "https://tile-a.openstreetmap.fr/hot",
            fileExtension:"png"
        });
        this.viewer.imageryLayers.addImageryProvider(osm);

        var scene = this.viewer.scene;
        var widget = this.viewer.cesiumWidget;
        try {
            // 添加倾斜摄影模型图层
            var promise = scene.open(URL_CONFIG.SCENE_SRSB);
            Cesium.when(promise, function(layers) {
                //查找水面图层
                var waterLayer = scene.layers.find('水面@vector');
                var style = new Cesium.Style3D();
                style.bottomAltitude = 5;
                //设置水面图层的底部高程,确保水面与模型贴合
                waterLayer.style3D = style;
                //设置风格后需刷新
                waterLayer.refresh();
                scene.camera.setView({
                    destination : Cesium.Cartesian3.fromDegrees(13.0353, 47.8084, 100.0),
                    orientation:{
                        heading:0.7272,
                        pitch:-0.2672,
                        roll:0
                    }
                });
            }, function() {
                var title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?';
                widget.showErrorPanel(title, undefined, e);
            });
        } catch (e) {
            if (widget._showRenderLoopErrors) {
                var title = '渲染时发生错误,已停止渲染。';
                widget.showErrorPanel(title, undefined, e);
            }
        }

        $("#loadingbar").remove();
    }
};
</script>

<style>
.sm-compass {
    pointer-events: auto;
    position: absolute;
    right: 10px;
    top: 10px;
    width: 128px;
    height: 128px;
    overflow: hidden;
}
.sm-zoom {
	top: 130px;
}
</style>