1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- var selector;
- var firstPointSet = false;
- var mouseDown = false;
- var camera
- export function drawRectangle(Cesium, viewer, screenSpaceEventHandler,cb) {
- if (camera) {
- return
- }
- var rectangleSelector = new Cesium.Rectangle();
- var screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
- var cartesian = new Cesium.Cartesian3();
- var tempCartographic = new Cesium.Cartographic();
- var center = new Cesium.Cartographic();
- var firstPoint = new Cesium.Cartographic();
- camera = viewer.camera;
- screenSpaceEventHandler.setInputAction(function drawSelector(movement) {
- if (!mouseDown) {
- return;
- }
- cartesian = camera.pickEllipsoid(movement.endPosition, viewer.scene.globe.ellipsoid, cartesian);
- if (cartesian) {
- //mouse cartographic
- tempCartographic = Cesium.Cartographic.fromCartesian(cartesian, Cesium.Ellipsoid.WGS84, tempCartographic);
- if (!firstPointSet) {
- Cesium.Cartographic.clone(tempCartographic, firstPoint);
- firstPointSet = true;
- } else {
- rectangleSelector.east = Math.max(tempCartographic.longitude, firstPoint.longitude);
- rectangleSelector.west = Math.min(tempCartographic.longitude, firstPoint.longitude);
- rectangleSelector.north = Math.max(tempCartographic.latitude, firstPoint.latitude);
- rectangleSelector.south = Math.min(tempCartographic.latitude, firstPoint.latitude);
- selector.show = true;
- }
- }
- }, Cesium.ScreenSpaceEventType.MOUSE_MOVE, Cesium.KeyboardEventModifier.SHIFT);
- var getSelectorLocation = new Cesium.CallbackProperty(function getSelectorLocation(time, result) {
- return Cesium.Rectangle.clone(rectangleSelector, result);
- }, false);
- screenSpaceEventHandler.setInputAction(function startClickShift() {
- mouseDown = true;
- selector.rectangle.coordinates = getSelectorLocation;
- }, Cesium.ScreenSpaceEventType.LEFT_DOWN, Cesium.KeyboardEventModifier.SHIFT);
- screenSpaceEventHandler.setInputAction(function endClickShift() {
- mouseDown = false;
- firstPointSet = false;
- selector.rectangle.coordinates = rectangleSelector;
- cb && cb(rectangleSelector)
- }, Cesium.ScreenSpaceEventType.LEFT_UP, Cesium.KeyboardEventModifier.SHIFT);
- //Hide the selector by clicking anywhere
- screenSpaceEventHandler.setInputAction(function hideSelector() {
- selector.show = false;
- }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
- selector = viewer.entities.add({
- selectable: false,
- show: false,
- rectangle: {
- coordinates: getSelectorLocation,
- material: Cesium.Color.RED.withAlpha(0.5)
- }
- });
- }
|