美文网首页开源
cesium 添加wall

cesium 添加wall

作者: 宿州刘德华 | 来源:发表于2019-04-02 13:52 被阅读5次
viewer.entities.removeById("crossanalysis");
if (handler) {
    handler.destroy();
}
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
var positions = [];
var poly = undefined;
var wallPoly = (function () {
    function _(positions) {
        this.options = {
            id:"crossanalysis",
            type: "crossanalysis",
            wall: {
                positions: [],
                minimumHeights: [0.0, 0.0],
                material: Cesium.Color.BLACK.withAlpha(0.8)
            }
        };
        this.positions = positions;
        this._init();
    }
    _.prototype._init = function () {
        var _self = this;
        var _update = function () {
            var dp=[];
            for (var i = 0; i < _self.positions.length; i++) {
                var ellipsoid = viewer.scene.globe.ellipsoid;
                var cartesian3 = new Cesium.Cartesian3(positions[i].x, positions[i].y, positions[i].z);
                var cartographic = ellipsoid.cartesianToCartographic(cartesian3);
                var lat = Cesium.Math.toDegrees(cartographic.latitude);
                var lng = Cesium.Math.toDegrees(cartographic.longitude);
                var alt = cartographic.height;
                dp.push(lng); dp.push(lat); dp.push(200);
            }
            return Cesium.Cartesian3.fromDegreesArrayHeights(dp);//_self.positions;
        };
        this.options.wall.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 >=1) {
        if (!Cesium.defined(poly)) {
            poly = new wallPoly(positions);
        } else {
            positions.pop();
            positions.push(cartesian);
        }
    }
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

handler.setInputAction(function (movement) {
    handler.destroy();
    var polyli = viewer.entities.getById(poly.options.id);
    console.log(polyli);
}, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

相关文章

网友评论

    本文标题:cesium 添加wall

    本文链接:https://www.haomeiwen.com/subject/wwxgbqtx.html