Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CameraOption.js 3.6KB

il y a 4 ans
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /**
  2. * @Author: Caven
  3. * @Date: 2020-01-21 15:33:52
  4. */
  5. import { Cesium } from '@dc-modules/namespace'
  6. import MouseMode from './MouseMode'
  7. class CameraOption {
  8. constructor(viewer) {
  9. this._viewer = viewer
  10. this._mouseMode = 0
  11. }
  12. /**
  13. * @param min
  14. * @param max
  15. */
  16. setPitchRange(min, max) {
  17. let handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas)
  18. if (this._viewer.scene.mode === Cesium.SceneMode.SCENE3D) {
  19. handler.setInputAction(
  20. movement => {
  21. handler.setInputAction(movement => {
  22. let enableTilt = true
  23. let isUp = movement.endPosition.y < movement.startPosition.y
  24. if (
  25. isUp &&
  26. this._viewer.camera.pitch > Cesium.Math.toRadians(max)
  27. ) {
  28. enableTilt = false
  29. } else if (
  30. !isUp &&
  31. this._viewer.camera.pitch < Cesium.Math.toRadians(min)
  32. ) {
  33. enableTilt = false
  34. } else {
  35. enableTilt = true
  36. }
  37. this._viewer.scene.screenSpaceCameraController.enableTilt = enableTilt
  38. }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
  39. },
  40. this._mouseMode === MouseMode.LEFT_MIDDLE
  41. ? Cesium.ScreenSpaceEventType.MIDDLE_DOWN
  42. : Cesium.ScreenSpaceEventType.RIGHT_DOWN
  43. )
  44. handler.setInputAction(
  45. movement => {
  46. this._viewer.scene.screenSpaceCameraController.enableTilt = true
  47. handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
  48. },
  49. this._mouseMode === MouseMode.LEFT_MIDDLE
  50. ? Cesium.ScreenSpaceEventType.MIDDLE_UP
  51. : Cesium.ScreenSpaceEventType.RIGHT_UP
  52. )
  53. }
  54. }
  55. /**
  56. *
  57. */
  58. limitCameraToGround() {
  59. this._viewer.camera.changed.addEventListener(frameState => {
  60. if (
  61. this._viewer.camera._suspendTerrainAdjustment &&
  62. this._viewer.scene.mode === Cesium.SceneMode.SCENE3D
  63. ) {
  64. this._viewer.camera._suspendTerrainAdjustment = false
  65. this._viewer.camera._adjustOrthographicFrustum(true)
  66. }
  67. })
  68. }
  69. /**
  70. * @param west
  71. * @param south
  72. * @param east
  73. * @param north
  74. */
  75. setBounds(west, south, east, north) {}
  76. /**
  77. *
  78. * @param mouseMode
  79. */
  80. changeMouseMode(mouseMode) {
  81. this._mouseMode = mouseMode || MouseMode.LEFT_MIDDLE
  82. if (mouseMode === MouseMode.LEFT_MIDDLE) {
  83. this._viewer.scene.screenSpaceCameraController.tiltEventTypes = [
  84. Cesium.CameraEventType.MIDDLE_DRAG,
  85. Cesium.CameraEventType.PINCH,
  86. {
  87. eventType: Cesium.CameraEventType.LEFT_DRAG,
  88. modifier: Cesium.KeyboardEventModifier.CTRL
  89. },
  90. {
  91. eventType: Cesium.CameraEventType.RIGHT_DRAG,
  92. modifier: Cesium.KeyboardEventModifier.CTRL
  93. }
  94. ]
  95. this._viewer.scene.screenSpaceCameraController.zoomEventTypes = [
  96. Cesium.CameraEventType.RIGHT_DRAG,
  97. Cesium.CameraEventType.WHEEL,
  98. Cesium.CameraEventType.PINCH
  99. ]
  100. } else if (mouseMode === MouseMode.LEFT_RIGHT) {
  101. this._viewer.scene.screenSpaceCameraController.tiltEventTypes = [
  102. Cesium.CameraEventType.RIGHT_DRAG,
  103. Cesium.CameraEventType.PINCH,
  104. {
  105. eventType: Cesium.CameraEventType.LEFT_DRAG,
  106. modifier: Cesium.KeyboardEventModifier.CTRL
  107. },
  108. {
  109. eventType: Cesium.CameraEventType.RIGHT_DRAG,
  110. modifier: Cesium.KeyboardEventModifier.CTRL
  111. }
  112. ]
  113. this._viewer.scene.screenSpaceCameraController.zoomEventTypes = [
  114. Cesium.CameraEventType.WHEEL,
  115. Cesium.CameraEventType.PINCH
  116. ]
  117. }
  118. }
  119. }
  120. export default CameraOption