Cesium引入wms服务,并实现不同图层的切换调用,及轮流播放

来源:互联网 发布:java邮件服务器搭建 编辑:程序博客网 时间:2024/05/08 23:13

<!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="Add imagery from a Web Map Service (WMS) server.">

    <meta name="cesium-sandcastle-labels"content="Beginner">

    <title>Cesium Demo</title>

    <link rel="stylesheet"href="test.css">

    <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"src="jquery-3.1.0.min.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);

</style>

<div id="cesiumContainer"class="fullSize">

<button onclick="changeScene1()" >二维</button>  //点击按钮,三维地球切换二维地图

<button onclick="changeScene2()" >三维</button>

<div id="1"><img src="img/play.png" onclick="playEarth()"style="width:30px;position:absolute; bottom:0px;margin-left:160px;z-index:1000; "></div>

  <divstyle="position:absolute;bottom:0;margin-left:200px;z-index: 1000;">

<listyle="float:left;list-style: none;">

<p>1996</p>

<divstyle="position:relative;">

<divid="container1996"><imgsrc="img/site.png" style="z-index:1100; width:10px;position:absolute;bottom: -5px;left:40%;" ></div>

<imgsrc="img/first.png" onclick="showEarth(1996)"style="width:50px;height:10px;">//onclick 给showEarth传值,获取不同图层

</div>

</li>

<listyle="float:left;list-style:none;">

<p>1997</p>

<divstyle="position:relative;">

<divid="container1997"></div>

<imgsrc="img/2.png" onclick="showEarth(1997)"style="width:50px;height:10px;"> 

</div>

</li>

<listyle="float:left;list-style: none;">

<p>1998</p>

<divstyle="position:relative;">

<divid="container1998"></div>

<imgsrc="img/3.png" onclick="showEarth(1998)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>1999</p>

<divstyle="position:relative;">

<divid="container1999"></div>

<imgsrc="img/4.png" onclick="showEarth(1999)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;height:10px;">

<p>2000</p>

<divstyle="position:relative;">

<divid="container2000"></div>

<imgsrc="img/5.png" onclick="showEarth(2000)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2001</p>

<divstyle="position:relative;">

<divid="container2001"></div>

<imgsrc="img/1.png" onclick="showEarth(2001)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2002</p>

<divstyle="position:relative;">

<divid="container2002"></div>

<imgsrc="img/2.png" onclick="showEarth(2002)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none; ">

<p>2003</p>

<divstyle="position:relative;">

<divid="container2003"></div>

<imgsrc="img/3.png"  onclick="showEarth(2003)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2004</p>

<divstyle="position:relative;">

<divid="container2004"></div>

<imgsrc="img/4.png" onclick="showEarth(2004)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2005</p>

<divstyle="position:relative;">

<divid="container2005"></div>

<imgsrc="img/5.png" onclick="showEarth(2005)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2006</p>

<divstyle="position:relative;">

<divid="container2006"></div>

<imgsrc="img/1.png" onclick="showEarth(2006)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2007</p>

<divstyle="position:relative;">

<divid="container2007"></div>

<imgsrc="img/2.png" onclick="showEarth(2007)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2008</p>

<divstyle="position:relative;">

<divid="container2008"></div>

<imgsrc="img/3.png" onclick="showEarth(2008)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2009</p>

<divstyle="position:relative;">

<divid="container2009"></div>

<imgsrc="img/4.png" onclick="showEarth(2009)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2010</p>

<divstyle="position:relative;">

<divid="container2010"></div>

<imgsrc="img/5.png" onclick="showEarth(2010)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2011</p>

<divstyle="position:relative;">

<divid="container2011"></div>

<imgsrc="img/1.png" onclick="showEarth(2011)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2012</p>

<divstyle="position:relative;">

<divid="container2012"></div>

<imgsrc="img/2.png" onclick="showEarth(2012)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2013</p>

<divstyle="position:relative;">

<divid="container2013"></div>

<imgsrc="img/3.png" onclick="showEarth(2013)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2014</p>

<divstyle="position:relative;">

<divid="container2014"></div>

<imgsrc="img/4.png" onclick="showEarth(2014)"style="width:50px;height:10px;">

</div>

</li>

<listyle="float:left;list-style: none;">

<p>2015</p>

<divstyle="position:relative;">

<divid="container2015"></div>

<imgsrc="img/6.png" onclick="showEarth(2015)"style="width:50px;height:10px;">

</div>

</li>

</ul>  //列出1996年到2015年共二十年的轮播条

</div>

</div>

<div id="loadingOverlay"><h1>Loading...</h1></div>

<div id="toolbar"></div>

<script id="cesium_sandcastle_script">

time = 1996;

function startup(Cesium) {

    widget = new Cesium.CesiumWidget('cesiumContainer');  //定义一个地球容器

    url='http://115.28.101.41:8088/geoserver/cite/wms';//Geoserver URL //wms引用的地址,可以在wms服务打开的页面的源代码中找到

    layers = widget.scene.globe.imageryLayers

    layers.removeAll();

  var blackMarble = layers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({ //加载一个wms服务的图层覆盖到地球上

        url : url,        

        layers: 'cite:'+time,// Here just give layer name  //通过onclick=“showEarth(year)”获取year的值传进来,从而得到不同年份的图层

        version:'1.1.0'  //wms服务版本号

   }));

  

    // Start off looking at Australia.

widget.camera.setView({

    destination: Cesium.Rectangle.fromDegrees(-100,0,310,80)// 定义地图显示的初始位置

});

//Sandcastle_End

    Sandcastle.finishedLoading();  //加载地图

}

 

 function changeScene1(){  //点击切换二维地图

function startup(Cesium) {

widget.destroy();

widget = new Cesium.CesiumWidget('cesiumContainer', {sceneMode:Cesium.SceneMode.SCENE2D });  //将sceneMode定义为二维地图

url='http://115.28.101.41:8088/geoserver/cite/wms';//Geoserver URL

    layers = widget.scene.globe.imageryLayers;

    layers.removeAll();

   // alert(layer);

  var blackMarble = layers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({

        url : url,        

        layers: 'cite:'+time,// Here just give layer name

        version:'1.1.0'

   }));

   // Start off looking at Australia.

widget.camera.setView({

    destination: Cesium.Rectangle.fromDegrees(-100,0,310,80)

});

//Sandcastle_End

    Sandcastle.finishedLoading();

 }

 if (typeof Cesium!== "undefined") {

    startup(Cesium);

} else if (typeof require === "function") {

    require(["Cesium"], startup);

    

   

}

}


function changeScene2(){  //点击按钮切换三维地球

function startup(Cesium) {

widget.destroy();

widget = new Cesium.CesiumWidget('cesiumContainer'); //默认为sceneMode为三维地球

url='http://115.28.101.41:8088/geoserver/cite/wms';//Geoserver URL

    layers = widget.scene.globe.imageryLayers;

    layers.removeAll();

  var blackMarble = layers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({

        url : url,        

        layers: 'cite:'+time,// Here just give layer name

        version:'1.1.0'

   }));

   // Start off looking at Australia.

widget.camera.setView({

    destination: Cesium.Rectangle.fromDegrees(-100,0,310,80)

});

//Sandcastle_End

    Sandcastle.finishedLoading();

 }

 if (typeof Cesium!== "undefined") {

    startup(Cesium);

} else if (typeof require === "function") {

    require(["Cesium"], startup);

    

   

}

}

 

 function showEarth(year){  //通过此函数,实现点击不同年份的轮播条,切换不同年份的图层显示出来

  time = year;

  //alert(year);

  html = new Array('','','','','','','','','','','','','','','','','','','','');  //定义一个数组,把指针图片写进去,实现指针图片在不同年份的轮播条上显示

  html[year-1996]='<img src="img/site.png" style="z-index: 1100; width:10px;position:absolute; bottom: -5px;left:40%;" >';

var layer = 'cite:'+year;

function startup(Cesium) {

    'use strict';

//Sandcastle_Begin

    layers.removeAll();

   var blackMarble= layers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({

        url : url,        

        layers: layer,// Here just give layer name

        version:'1.1.0'

   }));

   


    // Start off looking at Australia.

widget.camera.setView({

    destination: Cesium.Rectangle.fromDegrees(-100,0,310,80)

});

//Sandcastle_End

    Sandcastle.finishedLoading();}

    if (typeof Cesium!== "undefined") {

    startup(Cesium);

} else if (typeof require === "function") {

    require(["Cesium"], startup);

    

   for(i=1996;i<=2015;i++){  //实现除了当前年份的轮播条上有指针外,其他轮播条上没有

var id='#container'+i;

$(id).html(html[i-1996]);

//alert(id); }

}

}

}

//var stop=0;

function playEarth(){  //实现自动轮播切换图层

stop=0;

html1='';

html1='<img src="img/stop.jpg" onclick="stopEarth()" style="width:30px; position:absolute; bottom:0px; margin-left:160px;z-index: 1000; ">';

$("#1").html(html1);

timename= new Array();

for(j=1;j<21;j++){

//a=year-1995;

a=j%20;

switch(a){

case 1

timename[0]=setTimeout("if(!stop){showEarth(1996);}else{}",0);//用setTimeout来实现轮播有时间间隔的加载

break;

case 2

//showEarth(1997);

timename[1]=setTimeout("if(!stop){showEarth(1997);}",5000);

break;

case 3

//showEarth(1998);

timename[2]=setTimeout("if(!stop){showEarth(1998);}",10000);

break;

case 4

//showEarth(1999);

timename[3]=setTimeout("if(!stop){showEarth(1999);}",15000);

break;

case 5

//showEarth(2000);

timename[4]=setTimeout("if(!stop){showEarth(2000);}",20000);

break;

case 6

//showEarth(2001);

timename[5]=setTimeout("if(!stop){showEarth(2001);}",25000);

break;

case 7

//showEarth(2002);

timename[6]=setTimeout("if(!stop){showEarth(2002);}",30000);

break;

case 8:

// showEarth(2003);

timename[7]=setTimeout("if(!stop){showEarth(2003);}",35000);

break;

case 9

//showEarth(2004);

timename[8]=setTimeout("if(!stop){showEarth(2004);}",40000);

break;

case 10

//showEarth(2005);

timename[9]=setTimeout("if(!stop){showEarth(2005);}",45000);

break;

case 11:

// showEarth(2006);

timename[10]=setTimeout("if(!stop){showEarth(2006);}",50000);

break;

case 12:

// showEarth(2007);

timename[11]=setTimeout("if(!stop){showEarth(2007);}",55000);

break;

case 13

//showEarth(2008);

timename[12]=setTimeout("if(!stop){showEarth(2008);}",60000);

break;

case 14

//showEarth(2009);

timename[13]=setTimeout("if(!stop){showEarth(2009);}",65000);

break;

case 15

//showEarth(2010);

timename[14]=setTimeout("if(!stop){showEarth(2010);}",70000);

break;

case 16

//showEarth(2011);

timename[15]=setTimeout("if(!stop){showEarth(2011);}",75000);

break;

case 17:

// showEarth(2012);

timename[16]=setTimeout("if(!stop){showEarth(2012);}",80000);

break;

case 18

//showEarth(2013);

timename[17]=setTimeout("if(!stop){showEarth(2013);}",85000);

break;

case 19

//showEarth(2014);

timename[18]=setTimeout("if(!stop){showEarth(2014);}",90000);

break;

case 0

//showEarth(2015);

timename[19]=setTimeout("if(!stop){showEarth(2015);}",95000);

break;

default:break;

}

}

//alert(j);

}   


function stopEarth(){

html1='';

html1='<img src="img/play.png" onclick="playEarth()" style="width:30px; position:absolute; bottom:0px; margin-left:160px;z-index: 1000; ">';

    $("#1").html(html1);

    stop=1;

   //clearTimeout(timename[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]);

   clearTimeout(timename[0]);  //当点停止时,清除所有的setTimeout

   clearTimeout(timename[1]);

   clearTimeout(timename[2]);

   clearTimeout(timename[3]);

   clearTimeout(timename[4]);

   clearTimeout(timename[5]);

   clearTimeout(timename[6]);

   clearTimeout(timename[7]);

   clearTimeout(timename[8]);

   clearTimeout(timename[9]);

   clearTimeout(timename[10]);

   clearTimeout(timename[11]);

   clearTimeout(timename[12]);

   clearTimeout(timename[13]);

   clearTimeout(timename[14]);

   clearTimeout(timename[15]);

   clearTimeout(timename[16]);

   clearTimeout(timename[17]);

   clearTimeout(timename[18]);

   clearTimeout(timename[19]);



    //return false;

    

}

if (typeof Cesium !== "undefined") {

    startup(Cesium);

} else if (typeof require === "function") {

    require(["Cesium"], startup);

    

   

}



</script>

</body>

</html>


效果图片:



0 0