# Cesium 局部代码 > 初始显示的是中国 Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(73.0, 3.0, 135.0, 53.0); viewer.camera.flyHome(5); > 相机进入地下问题 ***scene下的ScreenSpaceCameraController代码 function pickGlobe(controller, mousePosition, result) { var scene = controller._scene; var globe = controller._globe; var camera = scene.camera; if (!defined(globe)) { return undefined; } var depthIntersection; if (scene.pickPositionSupported) { depthIntersection = scene.pickPositionWorldCoordinates(mousePosition, scratchDepthIntersection); } var ray = camera.getPickRay(mousePosition, pickGlobeScratchRay); var rayIntersection = globe.pick(ray, scene, scratchRayIntersection); var pickDistance = defined(depthIntersection) ? Cartesian3.distance(depthIntersection, camera.positionWC) : Number.POSITIVE_INFINITY; var rayDistance = defined(rayIntersection) ? Cartesian3.distance(rayIntersection, camera.positionWC) : Number.POSITIVE_INFINITY; if (pickDistance < rayDistance) { return Cartesian3.clone(depthIntersection, result); } return Cartesian3.clone(rayIntersection, result); } > 调整3DTiles的整体高度 function(height) { height = Number(height); if (isNaN(height)) { return; } var cartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center); var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, height); var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()); tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); } > 根据坐标获取3D Tiles的高度 Scene.clampToHeight(cartesian, objectsToExclude, width, result) → Cartesian3 Scene.clampToHeightMostDetailed(cartesians, objectsToExclude, width) → Promise.<Array.<Cartesian3>> *** objectsToExclude ----> A list of primitives, entities, or 3D Tiles features to not clamp to. > entity贴对象 var route = viewer.entities.add({ polyline : { positions : [.....] clampToGround : true, classificationType: Cesium.ClassificationType.CESIUM_3D_TILE } }); > 获取起点和终点之间的表面距离,表面插值 var geodesic = new Cesium.EllipsoidGeodesic(start, end, ellipsoid); geodesic.setEndPoints(startCartographic, endCartographic); geodesic.interpolateUsingFraction(fraction, result) → Cartographic geodesic.interpolateUsingSurfaceDistance(distance, result) → Cartographic > 模型建组(图层集合) var spheres = entities.add(new Cesium.Entity()); // 图层 entities.add({ parent : boxes, // 父容器 position : Cesium.Cartesian3.fromDegrees(-106.0, 45.0, height), box : { dimensions : new Cesium.Cartesian3(90000.0, 90000.0, 90000.0), material : Cesium.Color.fromRandom({alpha : 1.0}) } }); spheres.show = !spheres.show; // 显示/隐藏 > 计算点距离某一个平面的距离 Cesium.Plane.getPointDistance(plane, point) → Number 计算点到平面的最短距离。距离决定了该点所在平面的哪一侧。如果距离为正,则该点位于法线方向的半空间中; 如果为负,则该点位于与正常相反的半空间中; 如果为零,则该点在平面上。 Cesium.Plane.projectPointOntoPlane(plane, point, result) → Cartesian3 计算点在平面上的投影点 > 对数深度 我们封装的属性叫 earth.terrainEffect.logDepth cesium对应的属性 scene.logarithmicDepthBuffer