shuishen
2021-06-05 85bcf0300cfbdfbd518e380b8f8dc09445e0c1f8
widgets/Rolling/Widget.js
@@ -1,11 +1,11 @@
define([
    'dojo/_base/declare',
    'dojo/_base/lang',
    'dojo/_base/array',
    'dojo/_base/html',
    'dojo/topic',
    'jimu/BaseWidget',
],
        'dojo/_base/declare',
        'dojo/_base/lang',
        'dojo/_base/array',
        'dojo/_base/html',
        'dojo/topic',
        'jimu/BaseWidget',
    ],
    function (declare,
        lang,
        array,
@@ -37,12 +37,6 @@
                "tileMatrixSetID": "w",
                "maximumLevel": 17
            }],
            // 赣州地图
            imageryProviderArrUrl: [{
                "label": "赣州市离线影像",
                "type": "url",
                "url": "http://www.sw797.com:801/gzsw3D/v2/data/wp/{z}/{x}/{y}.png"
            }],
            // 天地图电子
            imageryProviderDian: [{
                "label": "天地图矢量",
@@ -67,57 +61,44 @@
            earthAtNightRight: '',
            zjLeft: 0,
            zjRight: '',
            tiandituLeft: '',
            tiandituZJLeft: '',
            tiandituRight: '',
            tiandituZJRight: '',
            ganZhouYinLeft: '',
            ganZhouYinRight: '',
            startup: function () {
                topic.subscribe("openRolling", lang.hitch(this, this.openRolling));
                var that = this;
                // 点击卷帘关闭面板
                $('.rollinng-table-hezi-xx').click(function () {
                    that.map.imageryLayers.remove(that.earthAtNightLeft);
                    that.map.imageryLayers.remove(that.earthAtNightRight);
                    that.map.imageryLayers.remove(that.zjLeft);
                    that.map.imageryLayers.remove(that.earthAtNightRight);
                    that.map.imageryLayers.remove(that.zjRight);
                    that.map.imageryLayers.remove(that.tiandituLeft);
                    that.map.imageryLayers.remove(that.tiandituZJLeft);
                    that.map.imageryLayers.remove(that.tiandituRight);
                    that.map.imageryLayers.remove(that.tiandituZJRight);
                    that.map.imageryLayers.remove(that.ganZhouYinLeft);
                    that.map.imageryLayers.remove(that.ganZhouYinRight);
                    $('.jimu-widget-Rolling').hide();
                    $('#hezi-selectLeft').val(2);
                    $('#hezi-selectRight').val(3);
                });
                // 加载左边图层
                $('#hezi-selectLeft').on('change', function () {
                    // 将滑块的位置与拆分位置同步
                    var slider = document.getElementById('slider');
                    that.map.scene.imagerySplitPosition = (slider.offsetLeft - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                    that.map.scene.imagerySplitPosition.x = (slider.offsetLeft - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                    if ($(this).val() == 2) {
                        // viewer.imageryLayers.remove(that.tiandituLeft);
                        // viewer.imageryLayers.remove(that.tiandituZJLeft);
                        viewer.imageryLayers.remove(that.ganZhouYinLeft);
                        loadMapTianLeft();
                    } else if ($(this).val() == 1) {
                        loadMapLeft();
                        that.earthAtNightLeft.splitDirection = Cesium.ImagerySplitDirection.LEFT;
                        that.zjLeft.splitDirection = Cesium.ImagerySplitDirection.LEFT;
                    }
                    else if ($(this).val() == 1) {
                        viewer.imageryLayers.remove(that.earthAtNightLeft);
                        viewer.imageryLayers.remove(that.zjLeft);
                        // viewer.imageryLayers.remove(that.tiandituLeft);
                        // viewer.imageryLayers.remove(that.tiandituZJLeft);
                        loadMapGzLeft();
                        that.ganZhouYinLeft.splitDirection = Cesium.ImagerySplitDirection.LEFT;
                    }
                    else {
                        viewer.imageryLayers.remove(that.earthAtNightLeft);
                        viewer.imageryLayers.remove(that.zjLeft);
                        viewer.imageryLayers.remove(that.ganZhouYinLeft);
                    }
                });
@@ -126,135 +107,115 @@
                    // debugger
                    // 将滑块的位置与拆分位置同步
                    var slider = document.getElementById('slider');
                    that.map.scene.imagerySplitPosition = (slider.offsetLeft - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                    that.map.scene.imagerySplitPosition.x = (slider.offsetLeft - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                    if ($(this).val() == 2) {
                        // loadMap(that.earthAtNightRight, that.zjRight);
                        viewer.imageryLayers.remove(that.tiandituRight);
                        viewer.imageryLayers.remove(that.tiandituZJRight);
                        loadMapRight();
                        that.earthAtNightRight.splitDirection = Cesium.ImagerySplitDirection.RIGHT;
                        that.zjRight.splitDirection = Cesium.ImagerySplitDirection.RIGHT;
                    }
                    else if ($(this).val() == 3) {
                        viewer.imageryLayers.remove(that.earthAtNightRight);
                        viewer.imageryLayers.remove(that.zjRight);
                    } else if ($(this).val() == 1) {
                        loadMapTianRight();
                        that.tiandituRight.splitDirection = Cesium.ImagerySplitDirection.RIGHT;
                        that.tiandituZJRight.splitDirection = Cesium.ImagerySplitDirection.RIGHT;
                    }
                    else {
                        viewer.imageryLayers.remove(that.earthAtNightRight);
                        viewer.imageryLayers.remove(that.zjRight);
                        loadMapGzRight();
                        that.ganZhouYinRight.splitDirection = Cesium.ImagerySplitDirection.RIGHT;
                        // viewer.imageryLayers.remove(that.tiandituRight);
                        // viewer.imageryLayers.remove(that.tiandituZJRight);
                    }
                    }
                });
                // 加载左边天地图影像图层方法
                function loadMapLeft() {
                    that.map.imageryLayers.remove(that.tiandituLeft);
                    that.map.imageryLayers.remove(that.tiandituZJLeft);
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = viewer.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中
                    that.earthAtNightLeft = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.earthAtNightLeft = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderAdd[0]
                    ));
                    that.zjLeft = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.zjLeft = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderAdd[1]
                    ));
                }
                // 加载左边赣州影像图层方法
                function loadMapGzLeft() {
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = viewer.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中  UrlTemplateImageryProvider
                    that.ganZhouYinLeft = layers.addImageryProvider(new Cesium.UrlTemplateImageryProvider(
                        that.imageryProviderArrUrl[0]
                    ));
                    that.earthAtNightLeft.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.LEFT, Cesium.ImagerySplitDirection.NONE);
                    that.zjLeft.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.LEFT, Cesium.ImagerySplitDirection.NONE);
                }
                // 加载左边天地图电子图层方法
                function loadMapTianLeft() {
                    that.map.imageryLayers.remove(that.earthAtNightLeft);
                    that.map.imageryLayers.remove(that.zjLeft);
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = viewer.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中
                    that.tiandituLeft = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.tiandituLeft = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderDian[0]
                    ));
                    that.tiandituZJLeft = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.tiandituZJLeft = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderDian[1]
                    ));
                    that.tiandituLeft.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.LEFT, Cesium.ImagerySplitDirection.NONE);
                    that.tiandituZJLeft.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.LEFT, Cesium.ImagerySplitDirection.NONE);
                }
                // 加载右边天地图影像图层方法
                function loadMapRight() {
                    that.map.imageryLayers.remove(that.tiandituRight);
                    that.map.imageryLayers.remove(that.tiandituZJRight);
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = viewer.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中
                    that.earthAtNightRight = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.earthAtNightRight = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderAdd[0]
                    ));
                    that.zjRight = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.zjRight = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderAdd[1]
                    ));
                    that.earthAtNightRight.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.RIGHT, Cesium.ImagerySplitDirection.NONE);
                    that.zjRight.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.RIGHT, Cesium.ImagerySplitDirection.NONE);
                }
                // 加载右边天地图电子图层方法
                function loadMapTianRight() {
                    that.map.imageryLayers.remove(that.earthAtNightRight);
                    that.map.imageryLayers.remove(that.zjRight);
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = viewer.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中
                    that.tiandituRight = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.tiandituRight = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderDian[0]
                    ));
                    that.tiandituZJRight = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.tiandituZJRight = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderDian[1]
                    ));
                    that.tiandituRight.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.RIGHT, Cesium.ImagerySplitDirection.NONE);
                    that.tiandituZJRight.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.RIGHT, Cesium.ImagerySplitDirection.NONE);
                }
                 // 加载右边赣州影像图层方法
                 function loadMapGzRight() {
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = viewer.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中  UrlTemplateImageryProvider
                    that.ganZhouYinRight = layers.addImageryProvider(new Cesium.UrlTemplateImageryProvider(
                        that.imageryProviderArrUrl[0]
                    ));
                }
                var handler = new Cesium.ScreenSpaceEventHandler(slider);
                var moveActive = false;
                function move(movement) {
                    if (!moveActive) {
                        return;
                    }
                    var relativeOffset = movement.endPosition.x;
                    // 将滑块的位置与拆分位置同步
                    viewer.scene.imagerySplitPosition = (slider.offsetLeft + relativeOffset - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                    slider.style.left = 100.0 * + (slider.offsetLeft + relativeOffset) / (slider.parentElement.offsetWidth) + '%';
                    that.map.scene.imagerySplitPosition.x = (slider.offsetLeft + relativeOffset - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                    slider.style.left = 100.0 * +(slider.offsetLeft + relativeOffset) / (slider.parentElement.offsetWidth) + '%';
                }
                handler.setInputAction(function () {
                    moveActive = true;
                }, Cesium.ScreenSpaceEventType.LEFT_DOWN);//左键按下事件
                }, Cesium.ScreenSpaceEventType.LEFT_DOWN); //左键按下事件
                handler.setInputAction(function () {
                    moveActive = true;
                }, Cesium.ScreenSpaceEventType.PINCH_START);//触摸表面上双指事件的开始
                }, Cesium.ScreenSpaceEventType.PINCH_START); //触摸表面上双指事件的开始
                handler.setInputAction(move, Cesium.ScreenSpaceEventType.MOUSE_MOVE);//鼠标移动事件
                handler.setInputAction(move, Cesium.ScreenSpaceEventType.PINCH_MOVE);//触摸表面上双指移动事件
                handler.setInputAction(move, Cesium.ScreenSpaceEventType.MOUSE_MOVE); //鼠标移动事件
                handler.setInputAction(move, Cesium.ScreenSpaceEventType.PINCH_MOVE); //触摸表面上双指移动事件
                handler.setInputAction(function () {
                    moveActive = false;
                }, Cesium.ScreenSpaceEventType.LEFT_UP);//鼠标左键抬起事件
                }, Cesium.ScreenSpaceEventType.LEFT_UP); //鼠标左键抬起事件
                handler.setInputAction(function () {
                    moveActive = false;
                }, Cesium.ScreenSpaceEventType.PINCH_END);//触摸表面上的双指事件的结束
                }, Cesium.ScreenSpaceEventType.PINCH_END); //触摸表面上的双指事件的结束
            },
            openRolling: function (item) {
@@ -268,23 +229,31 @@
                var that = this;
                if (this.flag != true) return;
                var slider = document.getElementById('slider');
                that.map.scene.imagerySplitPosition = (slider.offsetLeft - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                that.map.scene.imagerySplitPosition = 0.5;
                loadMapLeft();
                that.earthAtNightLeft.splitDirection = Cesium.ImagerySplitDirection.LEFT;
                that.zjLeft.splitDirection = Cesium.ImagerySplitDirection.LEFT;
                that.map.scene.imagerySplitPosition.x = (slider.offsetLeft - slider.parentElement.offsetWidth) / (slider.parentElement.offsetWidth);
                that.map.scene.imagerySplitPosition.x = 0.5;
                function loadMapLeft() {
                    //imageryLayers获取将在地球上渲染的图像图层的集合
                    var layers = that.map.imageryLayers;
                    //addImageryProvider使用给定的ImageryProvider创建一个新层,并将其添加到集合中
                    that.earthAtNightLeft = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderAdd[0]
                    ));
                    that.zjLeft = layers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                        that.imageryProviderAdd[1]
                    ));
                }
                that.earthAtNightLeft = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.imageryProviderAdd[0]
                ));
                that.zjLeft = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.imageryProviderAdd[1]
                ));
                that.earthAtNightLeft.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.LEFT, Cesium.ImagerySplitDirection.NONE);
                that.zjLeft.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.LEFT, Cesium.ImagerySplitDirection.NONE);
                that.tiandituRight = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.imageryProviderDian[0]
                ));
                that.tiandituZJRight = that.map.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider(
                    that.imageryProviderDian[1]
                ));
                that.tiandituRight.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.RIGHT, Cesium.ImagerySplitDirection.NONE);
                that.tiandituZJRight.splitDirection = new Cesium.Cartesian2(Cesium.ImagerySplitDirection.RIGHT, Cesium.ImagerySplitDirection.NONE);
            },