@undefined233 #2楼 你这个问题其实和cesium没关系,我记得百度地图有一个地方可以自己配置。天地图的话我知道的是:可以选择电子地图、卫星图这种。
建议用PolylineVolumeGeometry,不要直接用entity的PolylineVolumeGraphics
大范围的管网仿真情况下,需要用primitive的geometryinstance优化
地形文件你用cesium1.49版本
在线的用这个函数: viewer.terrainProvider=Cesium.createWorldTerrain();
var viewer = new Cesium.Viewer("cesiumContainer", {
animation: false, //是否显示动画控件
baseLayerPicker: false, //是否显示图层选择控件
geocoder: true, //是否显示地名查找控件
timeline: false, //是否显示时间线控件
sceneModePicker: true, //是否显示投影方式控件
navigationHelpButton: false, //是否显示帮助信息控件
infoBox: true, //是否显示点击要素之后显示的信息
imageryProvider : new Cesium.WebMapTileServiceImageryProvider({
url: "http://t0.tianditu.com/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles",
layer: "tdtVecBasicLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
show: false
})
});
自己写的可视域分析,效率比不上超图的,为什么超图的可视域分析计算那么快?是怎么实现的
大概有5秒的延时 要看地形数据范围和切分精细度
步骤是这样:1、视点为圆心画圆,圆周平分360份获取坐标 2 连接视点和圆周切分点 3、判断各个视线上切分线段的可视性 4 线段组成可视域
优化:
所有点的高程是一次性求 你把所有线段合起来求高程 完了再拆开 会变快很多
var ellipsoidTerrainProvider = new Cesium.EllipsoidTerrainProvider();
terrainProvider 设成ellipsoidTerrainProvider
scene.postRender.addEventListener(function() {
var heading = scene.camera.heading;
var x = -Cesium.Math.toDegrees(heading);
var degrees = "rotate(" + x + "deg)";
$("#compass").css("transform", degrees);
});
两种方法:
直接扔tomcat下,然后用xyz加载
瓦片都是小文件,如果瓦片很多,大约在几十万以上的,建议使用sqlite数据库保存瓦片,按zxy建索引,可以大大提高访问速度。因为小文件太多,操作系统的文件系统是个很大的瓶颈。