66 lines
2.6 KiB
HTML
66 lines
2.6 KiB
HTML
<!--
|
||
* @Descripttion:
|
||
* @version: 1.0
|
||
* @Author: zhangti
|
||
* @Date: 2019-11-20 17:51:52
|
||
* @LastEditors : sueRimn
|
||
* @LastEditTime : 2020-01-13 15:50:54
|
||
-->
|
||
<!--
|
||
Format:https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer/tile/{z}/{y}/{x}
|
||
At first, I use HttpDebugger find this server, because ArcGIS Earth use this elevation3d server
|
||
Although it is height map form, in China, it is not easy to visit STK Terrain, it is also an appropriate solution.
|
||
Then I watched the tile content and the header is "CntZImage" which is the arcgis/lerc compression
|
||
Eventually, I create the ArcGisImageServerTerrainProvider class, so we can load thise terrain server easily, and you can download this file in Source/Core freely.
|
||
Note: ArcGIS HeightMap Terrain Server is WebMercatorTilingScheme.
|
||
There is a bug but I could not fix it without modifying the source code. For example, in level 13, I found some tiles have no height data,
|
||
the data is always 0, you can still request this tile. So, the state is TerrainState.RECEIVED
|
||
-->
|
||
<!DOCTYPE html>
|
||
<head>
|
||
<title>三维模型</title>
|
||
<style>
|
||
html, body, #cesiumContainer {
|
||
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!--
|
||
æ<><C3A6>述:cesiumç<6D>ƒ
|
||
-->
|
||
<div id="cesiumContainer"></div>
|
||
<script type="module">
|
||
import {CV} from '../3d/CV.js';
|
||
new CV.load('A',()=>{
|
||
let earth = new CV.Earth("cesiumContainer",{
|
||
imageryProvider:CV.TAG.BASELAYER.GOOGLEIMAGERY(),
|
||
skyBox : CV.TAG.SKYBOX.customStyle(),
|
||
infoBox: true
|
||
});
|
||
//初始化
|
||
let entitys = new CV.Entitys(earth.core),
|
||
ModelManager = new CV.ModelManager(earth.core),
|
||
camera = new CV.Camera(earth.core),modu;
|
||
//默认
|
||
modu = entitys.add(ModelManager.createCar(Cesium.Cartesian3.fromDegrees(116.538799 ,39.9948,50)));
|
||
camera.aircraftView(modu);
|
||
//创建面板
|
||
let Options = function () {
|
||
this.message = 'Car';
|
||
}
|
||
let option = new Options();
|
||
let gui = new dat.GUI();
|
||
gui.add(option, 'message', ['Air','Car','WoodTower']).name("模型选择").onChange(function (value) {
|
||
entitys.remove(modu);
|
||
switch(value){
|
||
case "Air":modu = entitys.add(ModelManager.createAir(Cesium.Cartesian3.fromDegrees(116.538799 ,39.9948,50)));break;
|
||
case "Car":modu = entitys.add(ModelManager.createCar(Cesium.Cartesian3.fromDegrees(116.538799 ,39.9948,50)));break;
|
||
case "WoodTower":modu = entitys.add(ModelManager.createWoodTower(Cesium.Cartesian3.fromDegrees(116.538799 ,39.9948,50)));break;
|
||
}
|
||
camera.aircraftView(modu);
|
||
});
|
||
});
|
||
</script>
|
||
|
||
</body> |