document.write('<script src="../js/datalayer_service.js"></script>');
|
var datalayerTreeObjList = null;
|
function createDatalayerTree(data){
|
//Y 属性定义 checkbox 被勾选后的情况;
|
//N 属性定义 checkbox 取消勾选后的情况;
|
//"p" 表示操作会影响父级节点;
|
//"s" 表示操作会影响子级节点。
|
var setting = {
|
check : {
|
enable : true,
|
chkboxType : { "Y" : "s", "N" : "s" }
|
},
|
data : {
|
simpleData : {
|
enable : true
|
}
|
},
|
callback : {
|
onCheck : zTreeOnCheck_class,
|
},
|
view : {
|
showIcon : showIconForTree
|
}
|
};
|
var treeListArray = [
|
{"id":"0","pId":"","name":"专题数据图层","nocheck":true, icon:"../images/treeicon/subject.png"},
|
];
|
for (var i = 0; i < data.length; i++) {
|
var j = {};
|
j.id = data[i].layerId;
|
j.name = data[i].layerName;
|
j.pId = "0";
|
j.layerType = data[i].layerType;
|
j.layerPath = data[i].layerPath;
|
j.layerAlpha = data[i].layerPid;
|
treeListArray.push(j);
|
}
|
datalayerTreeObjList = $.fn.zTree.init($("#dataLayerTree"), setting, treeListArray);
|
datalayerTreeObjList.expandAll(true);
|
//父节点显示图标
|
function showIconForTree(treeId, treeNode) {
|
return treeNode.isParent == true;
|
}
|
function zTreeOnCheck_class(event, treeId, treeNode) {
|
var changedNodes = datalayerTreeObjList.getChangeCheckedNodes();
|
for ( var i=0 ; i < changedNodes.length ; i++ ){
|
if(changedNodes[i].checked){
|
adddatalayer(changedNodes[i]);
|
}else{
|
removedatalayer(changedNodes[i]);
|
}
|
}
|
clearCheckedOldNodes();
|
}
|
function clearCheckedOldNodes(){
|
var nodes = datalayerTreeObjList.getChangeCheckedNodes();
|
for (var i = 0; i < nodes.length; i++) {
|
nodes[i].checkedOld = nodes[i].checked;
|
}
|
}
|
}
|
var imageryArr = [];
|
var kmllayerArr = [];
|
function adddatalayer(node){
|
if(node.layerType=="瓦片"){
|
var layerProvider = new Cesium.TileMapServiceImageryProvider({
|
url : Cesium.buildModuleUrl(serverIP + node.layerPath)
|
});
|
var datalayer = new Cesium.ImageryLayer(layerProvider, {alpha : Number(node.layerAlpha)});
|
viewer.imageryLayers.add(datalayer);
|
var datalayerObj = {"id":node.id,"img":datalayer};
|
imageryArr.push(datalayerObj);
|
sliderLayer = datalayer;
|
}else if(node.layerType=="arcgis"){
|
var arcgislayerProvider = new Cesium.ArcGisMapServerImageryProvider({
|
url : Cesium.buildModuleUrl(node.layerPath)
|
});
|
var datalayer = new Cesium.ImageryLayer(arcgislayerProvider, {alpha : Number(node.layerAlpha)});
|
viewer.imageryLayers.add(datalayer);
|
var datalayerObj = {"id":node.id,"img":datalayer};
|
imageryArr.push(datalayerObj);
|
sliderLayer = datalayer;
|
}else{
|
var kmllayer = Cesium.KmlDataSource.load(node.layerPath,{clampToGround:true});
|
kmllayer.then(function(dataSource) {
|
viewer.dataSources.add(dataSource);
|
var kmlobj = {"id":node.id,"kml":dataSource};
|
kmllayerArr.push(kmlobj);
|
});
|
}
|
}
|
function removedatalayer(node){
|
if(node.layerType=="瓦片"||node.layerType=="arcgis"){
|
for (var i = 0; i < imageryArr.length; i++) {
|
if(imageryArr[i].id == node.id){
|
viewer.imageryLayers.remove(imageryArr[i].img);
|
}
|
}
|
}else{
|
for (var i = 0; i < kmllayerArr.length; i++) {
|
if(kmllayerArr[i].id == node.id){
|
viewer.dataSources.remove(kmllayerArr[i].kml,true);
|
}
|
}
|
}
|
sliderLayer = undefined;
|
}
|
function cleardatalayer(){
|
for (var i = 0; i < imageryArr.length; i++) {
|
viewer.imageryLayers.remove(imageryArr[i].img);
|
}
|
for (var i = 0; i < kmllayerArr.length; i++) {
|
viewer.dataSources.remove(kmllayerArr[i].kml,true);
|
}
|
imageryArr = [];
|
kmllayerArr = [];
|
}
|
var sliderhandler;
|
var sliderLayer;
|
function startSlider(){
|
if(sliderLayer){
|
$("#slider").show();
|
sliderLayer.splitDirection = Cesium.ImagerySplitDirection.LEFT;
|
var slider = document.getElementById('slider');
|
viewer.scene.imagerySplitPosition = (slider.offsetLeft) / slider.parentElement.offsetWidth;
|
|
sliderhandler = sliderhandler && sliderhandler.destroy();
|
sliderhandler = new Cesium.ScreenSpaceEventHandler(slider);
|
var moveActive = false;
|
function move(movement) {
|
if(!moveActive) {
|
return;
|
}
|
var relativeOffset = movement.endPosition.x;
|
var splitPosition = (slider.offsetLeft + relativeOffset) / slider.parentElement.offsetWidth;
|
slider.style.left = 100.0 * splitPosition + '%';
|
viewer.scene.imagerySplitPosition = splitPosition;
|
}
|
|
sliderhandler.setInputAction(function() {
|
moveActive = true;
|
}, Cesium.ScreenSpaceEventType.LEFT_DOWN);
|
sliderhandler.setInputAction(function() {
|
moveActive = true;
|
}, Cesium.ScreenSpaceEventType.PINCH_START);
|
|
sliderhandler.setInputAction(move, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
sliderhandler.setInputAction(move, Cesium.ScreenSpaceEventType.PINCH_MOVE);
|
|
sliderhandler.setInputAction(function() {
|
moveActive = false;
|
}, Cesium.ScreenSpaceEventType.LEFT_UP);
|
sliderhandler.setInputAction(function() {
|
moveActive = false;
|
}, Cesium.ScreenSpaceEventType.PINCH_END);
|
}else{
|
swal("请先选择图层,目前只有瓦片图层才能有卷帘分析效果!","请重试!","error");
|
ctrlSlider();
|
}
|
}
|
function stopSlider(){
|
$("#slider").hide();
|
sliderhandler = sliderhandler && sliderhandler.destroy();
|
viewer.scene.imagerySplitPosition = 1;
|
}
|