cesium 添加ployline方法

2019-03-26  本文已影响0人  宿州德华
//添加polyline
function addPolyLine(){
    //初始化
    var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
    var positions = [];
    var poly = undefined;

    //封装polyline对象
    var PolyLinePrimitive = (function(){
        function _(positions){
            this.options = {
                polyline : {
                    show : true,
                    positions : [],
                    material : Cesium.Color.CORNFLOWERBLUE,
                    width : 5
                }
            };
            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 _;
    })();

    handler.setInputAction(function(movement){
        var cartesian = scene.camera.pickEllipsoid(movement.position,scene.globe.ellipsoid);
        if(positions.length == 0) {
            positions.push(cartesian.clone());
        }
        positions.push(cartesian);
    },Cesium.ScreenSpaceEventType.LEFT_CLICK);
    
    handler.setInputAction(function(movement){
        var cartesian = scene.camera.pickEllipsoid(movement.endPosition,scene.globe.ellipsoid);
        if(positions.length >= 2){
            if (!Cesium.defined(poly)) {
                poly = new PolyLinePrimitive(positions);
            }else{
                positions.pop();
                cartesian.y += (1 + Math.random());
                positions.push(cartesian);
            }
        }
    },Cesium.ScreenSpaceEventType.MOUSE_MOVE);
    
    handler.setInputAction(function(movement){
        handler.destroy();
    },Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

}
上一篇 下一篇

猜你喜欢

热点阅读