基于cesium加载geojson(通过矢量数据模拟建筑物)

       菜鸟新手刚入cesium的坑,在理论研究了很久之后基于现有的需求要对进行相关的优化。

1、在比较了现有的基于cesium的开发平台,感觉性能还是有瓶颈,尤其是对于加载大规模的模型,速度暂时没有找到很好的优化方法。

2、在基于cesium的研发中,现尝试主要有两种类型的数据,一种为基于3Dmax模型数据,一种为基于倾斜摄影数据。但是在城市级模型的加载中,h5框架总是对大量模型的加载支持力度不够,会出现浏览器报错等现像。

基于cesium加载geojson(通过矢量数据模拟建筑物)_第1张图片

基于此情况直接用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、现有的加载还是没有全市一起加载,仅仅加载福田区域,后续还需要优化加载策略。比如地图缩放到多少级可以显示建筑物,只是视野范围中建筑物显示等。


你可能感兴趣的:(javascript,cesium)