Cesium编程入门2

1.相机控制

1.1 参数

Roll是围绕X轴旋转,

Pitch是围绕Y轴旋转,

Heading是围绕Z轴旋转。

1.2setView

Cartesian3计算视角

view.camera.setView({

  destination : Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0), // 设置位置



  orientation: {

    heading : Cesium.Math.toRadians(20.0), // 方向

    pitch : Cesium.Math.toRadians(-90.0),// 倾斜角度

    roll : 0

  }

});

1.3 flyto

view.camera.flyTo({

  destination :Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0), // 设置位置

  orientation: {

    heading :Cesium.Math.toRadians(20.0), // 方向

    pitch :Cesium.Math.toRadians(-90.0),// 倾斜角度

    roll :0

  },

  duration:5, // 设置飞行持续时间,默认会根据距离来计算

  complete:function () {

  // 到达位置后执行的回调函数

  },

  cancle:function () {

  // 如果取消飞行则会调用此函数

  },

  pitchAdjustHeight:-90, // 如果摄像机飞越高于该值,则调整俯仰俯仰的俯仰角度,并将地球保持在视口中。

  maximumHeight:5000, // 相机最大飞行高度

  flyOverLongitude:100, // 如果到达目的地有2种方式,设置具体值后会强制选择方向飞过这个经度(这个,很好用)

});

1.4 lookAt

var center = Cesium.Cartesian3.fromDegrees(114.44455, 22.0444);//camera视野的中心点坐标

var heading = Cesium.Math.toRadians(50.0);

var pitch = Cesium.Math.toRadians(-20.0);

var range = 5000.0;

view.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, range));

2.加载geojson

GeoJSON是—种用于编码各种地理数据结构的格式官网,满足JSON语法格式。

viewer.dataSources.add(Cesium.GeoJsonDataSource.load('../../SampleData/ne_10m_us_states.topojson', {

        stroke: Cesium.Color.HOTPINK,

        fill: Cesium.Color.PINK.withAlpha(0.5),

        strokeWidth: 3

    }));

3.polyline

// Example 1: Draw a red polyline on the globe surface



scene.primitives.add(new Cesium.Primitive({

    geometryInstances : new Cesium.GeometryInstance({

        geometry : new Cesium.PolylineGeometry({

            positions : Cesium.Cartesian3.fromDegreesArray([

                -124.0, 40.0,

                -80.0, 40.0

            ]),

            width : 5.0,

            vertexFormat : Cesium.PolylineColorAppearance.VERTEX_FORMAT

        }),

        attributes: {

            color: Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 0.0, 0.0, 0.8))

        }

    }),

    appearance : new Cesium.PolylineColorAppearance()

}));



// Example 2: Draw a straight blue polyline



// Setting the arcType option to ArcType.NONE will allow

// you to draw a straight polyline.  Otherwise, it will

// curve to the globe surface.

scene.primitives.add(new Cesium.Primitive({

    geometryInstances : new Cesium.GeometryInstance({

        geometry : new Cesium.PolylineGeometry({

            positions : Cesium.Cartesian3.fromDegreesArrayHeights([

                -84.0, 50.0, 0.0,

                -100.0, 30.0, 1000000.0

            ]),

            width : 5.0,

            vertexFormat : Cesium.PolylineColorAppearance.VERTEX_FORMAT,

            arcType: Cesium.ArcType.NONE //这里控制着画出来的是直线,而不是贴地的弧线

        }),

        attributes: {

            color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.BLUE)

        }

    }),

    appearance : new Cesium.PolylineColorAppearance()

}));

//Sandcastle_End

    Sandcastle.finishedLoading();

3.1 空间直线

Cesium.ArcType.NONE

两点之间没有弧度,与球面是二维还是三维没有关系。

3.2 球面线段

Cesium.ArcType.GEODESIC

球面距离是球面上两点之间的最短连线的长度,就是经过这两点的大圆在这两点间的一段劣弧的长度。(大圆就是经过球心的平面截球面所得的圆)。

3.3 恒向线

Cesium.ArcType.RHUMB

在墨卡托投影图上显示为直线,与每—子午线相交成同—角度。

你可能感兴趣的:(javascript)