ansel0926
2022-05-15 ebc4c778854c8d2666b1bbaf3dcba2ba00f08453
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
(function (window) {
    'use strict';
 
    function define_CesiumRadar() {
        //Main object
        var CesiumRadar = {};
        var CesiumRadarArr = [];
 
        CesiumRadar.create = function (options) {
            CesiumRadarArr.push(options.viewer.entities.add({
                id: options.id,
                position: options.position,
                orientation: Cesium.Transforms.headingPitchRollQuaternion(options.position,
                    new Cesium.HeadingPitchRoll(
                        Cesium.Math.toRadians(options.heading),
                        Cesium.Math.toRadians(options.pitch),
                        options.roll)
                ),
                ellipsoid: {
                    radii: new Cesium.Cartesian3(options.far, options.far, options.far),
                    innerRadii: new Cesium.Cartesian3(options.near, options.near, options.near),
                    minimumClock: Cesium.Math.toRadians(options.heading - options.angle / 2),
                    maximumClock: Cesium.Math.toRadians(options.heading + options.angle / 2),
                    minimumCone: Cesium.Math.toRadians(90 - options.cone),
                    maximumCone: Cesium.Math.toRadians(95),
                    stackPartitions: 32,
                    slicePartitions: 32,
                    material: options.color,
                    outline: true,
                    outlineColor: options.outColor
                }
            }));
        };
 
        var drawHandler;
        CesiumRadar.createByMousePick = function (options) {
            drawHandler = drawHandler && drawHandler.destroy();
            drawHandler = new Cesium.ScreenSpaceEventHandler(options.viewer.scene.canvas);
            drawHandler.setInputAction(function (movement) {
                var previousPosition = options.viewer.scene.pickPosition(movement.position);
                var cartographic = Cesium.Cartographic.fromCartesian(previousPosition);
                var height = cartographic.height;//模型高度
                if (Number(height) < 0) {
                    var ray = options.viewer.camera.getPickRay(movement.position);
                    previousPosition = options.viewer.scene.globe.pick(ray, options.viewer.scene);
                }
                options.position = previousPosition.clone();
                drawHandler = drawHandler && drawHandler.destroy();
                CesiumRadar.create(options);
            }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        };
 
        CesiumRadar.remove = function (viewer, id) {
            if (viewer.entities.getById(id)) {
                viewer.entities.removeById(id);
            }
        };
 
        CesiumRadar.clear = function (viewer) {
            for (var i = 0; i < CesiumRadarArr.length; i++) {
                viewer.entities.remove(CesiumRadarArr[i]);
            }
            CesiumRadarArr = [];
        }
 
        return CesiumRadar;
    }
 
    if (typeof (CesiumRadar) === 'undefined') {
        window.CesiumRadar = define_CesiumRadar();
    } else {
        console.log("CesiumRadar already defined.");
    }
})(window);