一、创建服务器(看第一篇笔记)
二、加载地形图数据
在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>