Cesium开发学习笔记(六)---动态画线、画多边形(面积测量)、画圆、画矩形

参考这个大神:https://www.jianshu.com/p/416d432cd83b
Cesium划线,画矩形例子https://sandcastle.cesium.com/index.html?src=Drawing%20on%20Terrain.html

画线
function Moveline() {
   
    var PolyLinePrimitive = (function () {
   
        function _(positions) {
   
            this.options = {
   
                polyline: {
   
                    show: true,
                    positions: [],
                    material: Cesium.Color.cornflowerBlue,
                    width: 1,
                }
            };
            this.positions = positions;
            this._init();
        }
        _.prototype._init = function () {
   
            var _self = this;
            var _update = function () {
   
                return _self.positions;
            };
            //实时更新polyline.positions
            this.options.polyline.positions = new Cesium.CallbackProperty(_update, false);
            viewer.entities.add(this.options);
        };
        return _;
    })();
    var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
    var positions = [];
    var polyline= undefined;

    handler.setInputAction(function (movement) {
   
        var cartesian = viewer.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);
        if (positions.length == 0) {
   
            positions.push(cartesian.clone());
        }
        positions.push(cartesian);
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

    handler.setInputAction(function (movement) {
   
        var cartesian = viewer.camera.pickEllipsoid(movement.endPosition, viewer.scene.globe.ellipsoid);
        if (positions.length >= 2) {
   
            if (!Cesium.defined(polyline)) {
   
                polyline= new PolyLinePrimitive(positions);
            } else {
   
                if (!cartesian) {
   
                    positions.pop();
                    cartesian.y += (1 + Math.random());
                    positions.push(cartesian);
                }

            }
        }
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

    handler.setInputAction(function (movement) {
   
        handler.destroy();
    }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
}
画多边形
//  画多边形
function mouseMovepoly() {
   
 // 取消双击事件-追踪该位置
  viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
    var PolygonPrimitive = (function () {
   
        function _(positions) {
   
            this.options = {
   
                name: '多边形',
                polygon: {
   
                    hierarchy: [],
                    outline: false,
                    perPositionHeight: true, //允许三角形使用点的高度
                    material: Cesium.Color.RED.withAlpha(0.4),
                }
            };
            // 用来暂存数组,和hierarchys同级
            this.hierarchys = positions;
            this._init();
        }
        _.prototype._init = function () {
   
            var _self = this;
            var _update = function () {
   
                var list = [];
                list = _self.Cartesian3_to84(_self.hierarchys);
                return {
    positions: Cesium.Cartesian3.fromDegreesArray(list
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值