实现功能:特定的距离,如100-10000米范围显示所创建要素,其他距离隐藏。
var viewer = new Cesium.Viewer("cesiumContainer",{ baseLayerPicker:false, imageryProvider:goo,//goo为地图底层url terrainProvider:new Cesium.createWorldTerrain() });
//#创建geometryInstance实例 var instance = new Cesium.GeometryInstance({ geometry:new Cesium.BoxGeometry({
//根据需要选择BoxGeometry类的创建方法,cesium提供了非常多的实用方法供选择 minimum:new Cesium.Cartesian3(0,0,0), maximum:new Cesium.Cartesian3(100000,100000,100000),
//顶点构成方式,几何还没有回去看书,现在只能照搬,暂时是这么理解:
//ALL方式: 用全部属性构建with well-known attributes: position, normal, st, tangent, and bitangent.
//DEFAULT:用这些属性构建position, normal, and st attributes
//POSITION_ONLY:只用点属性
//这里用的POSITION_AND_NORMAL,因为api这么说兼容PerInstanceColorAppearance
vertexFormat:Cesium.VertexFormat.POSITION_AND_NORMAL }),
//#模型转换矩阵,直白说就是将模型转至真实空间的转换,这是见到的最容易使用的Matix4,将模型转到相应的经纬度和高
//属性{1、颜色要用ColorGeometryInstanceAttribute几何图形实例,这里是几何图形了
// 2、distanceDisplayCondition:距离显示条件,英文命名很容易理解
modelMatrix : Cesium.Matrix4.multiplyByTranslation(Cesium.Transforms.eastNorthUpToFixedFrame( Cesium.Cartesian3.fromDegrees(111, 33.03883)), new Cesium.Cartesian3(0.0, 0.0, 0), new Cesium.Matrix4()), id:"modelbox",
} attributes:{
color:Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED), distanceDisplayCondition : new Cesium.DistanceDisplayConditionGeometryInstanceAttribute(100, 100000.0) } });
//#添加到viewer.scene.primitives中,进入viewer.scene就能显示 var box_primitive = viewer.scene.primitives.add(new Cesium.Primitive({ geometryInstances:instance, appearance:new Cesium.PerInstanceColorAppearance({ //外形使用perInstanceColorAppearance方式,应该要主要与vertexFormat兼容,今后使用时要注意 translucent:false, closed:true })})); alert(box_primitive);//#提醒object说明创建成功,如果看不见,那么这个问题不会很大,在材料,位置,颜色等上找
原文:https://www.cnblogs.com/xiaoguniang0204/p/11747881.html