(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);
|