加载地形

一、创建服务器(看第一篇笔记)

二、加载地形图数据

在Cesium中,地球影像数据跟地形数据是分开的,为了加载更快,Cesium默认加载的地形数据是非常模糊的,需要修改

 //加载在线地形图数据
 var worldTerrain = Cesium.createWorldTerrain({
 // required for water effects
 requestWaterMask : true, 
 // required for terrain lighting
 requestVertexNormals : true 
 });

这里有个坑是,版本的问题可能会导致createWorldTerrain()所封装的网址不一致,导致前面版本无法正常访问,我就是先用1.51版本写的代码,怎么都不报错,且不加载数据,更改1.57后正常

同时,如果地形数据无法正确访问,影像数据也加载不出来

三、挂载图层到div上

//Viewer第一个参数容器就是需要上面的div容器承载
var viewer = new Cesium.Viewer('cesiumContainer',{
// 将图层选择的控件关掉,才能添加其他影像数据
baselLayerPicker:false,
imageryProvider:Google,
terrainProvider: worldTerrain
});

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <script src="Build/Cesium/Cesium.js"></script>
        <link href="Build/Cesium/Widgets/widgets.css" rel="stylesheet">
        <style>
            body{
                border: 0px;
                margin: 0px;        
            }
            #cesiumContainer {
                width: 100%;
                height: 100%;
            }
        </style>
    </head>
    <body>
        <div id="cesiumContainer"></div>
        <script>
            //加载谷歌中国卫星影像,谷歌地球商业版,需要翻墙,报跨域资源请求错误
            var url = "http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali"; 
            var Google = new Cesium.UrlTemplateImageryProvider({url:url})
            
            //Viewer第一个参数容器就是需要上面的div容器承载
            var viewer = new Cesium.Viewer('cesiumContainer',{
              // 将图层选择的控件关掉,才能添加其他影像数据
              baselLayerPicker:false,
              imageryProvider:Google
            });

            viewer.camera.setView({
              // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
              // fromDegrees()方法,将经纬度和高程转换为世界坐标
              destination:Cesium.Cartesian3.fromDegrees(117.48,30.67,15000.0),
              orientation:{
                // 指向
                heading:Cesium.Math.toRadians(90,0),
                // 视角
                pitch:Cesium.Math.toRadians(-90),
                roll:0.0
              }
            });
            // 同理,想要标记某个位置和角度,下次直接进入,可以在选好的角度上按F12进入开发者工具
            // 输入viewer.camera.heading  viewer.camera.pitch  viewer.camera.position回车可以得到信息
        </script>
    </body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_42036616/article/details/90140622