菜鸟新手刚入cesium的坑,在理论研究了很久之后基于现有的需求要对进行相关的优化。
1、在比较了现有的基于cesium的开发平台,感觉性能还是有瓶颈,尤其是对于加载大规模的模型,速度暂时没有找到很好的优化方法。
2、在基于cesium的研发中,现尝试主要有两种类型的数据,一种为基于3Dmax模型数据,一种为基于倾斜摄影数据。但是在城市级模型的加载中,h5框架总是对大量模型的加载支持力度不够,会出现浏览器报错等现像。
基于此情况直接用geojson加载,并用层高模拟建筑物高度。代码为官方范例,主要基于GeoJsonDataSource类。
var promise=Cesium.GeoJsonDataSource.load('./futian.geojson');
promise.then(function(dataSource) {
viewer.dataSources.add(dataSource);
var entities = dataSource.entities.values;
var colorHash = {};
for (var i = 0; i < entities.length; i++) {
var entity = entities[i];
entity.polygon.material = Cesium.Color.WHITE;
entity.polygon.outline = false;
//建筑物高度 entity.polygon.extrudedHeight =entity.properties.UP_BLDG_FL*3; } });
其中遇到的几个问题也记录一下:
1、由于很多实例都是基于viewer来编写,但是由于我们采用了ol3-cesium库,此库中都是采用scene的,把viewer已经阉割掉了的。但其实GeoJsonDataSource 可以基于scene加载的。
2、注意坐标系,由于我们实际需求中坐标系比较复杂,在转换的情况出现很多问题。最后转换成为了WGS84后加载比较成功。
3、现有的加载还是没有全市一起加载,仅仅加载福田区域,后续还需要优化加载策略。比如地图缩放到多少级可以显示建筑物,只是视野范围中建筑物显示等。