| | |
| | | } |
| | | |
| | | start() { |
| | | if (!this.tooltip) { |
| | | this.tooltip = new MapTooltip(this.viewer) |
| | | } |
| | | this.dataSource = new Cesium.CustomDataSource('draw-polygon') |
| | | this.viewer.dataSources.add(this.dataSource) |
| | | this.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas) |
| | |
| | | if (!this.isDrawing) return |
| | | const tipText = this.getTipText() |
| | | if (!this.tooltip?.isVisible) { |
| | | this.tooltip.show(tipText, movement.endPosition) |
| | | this.tooltip?.show(tipText, movement.endPosition) |
| | | } else { |
| | | this.tooltip.show(tipText) |
| | | this.tooltip.move(movement.endPosition) |
| | | this.tooltip?.show(tipText) |
| | | this.tooltip?.move(movement.endPosition) |
| | | } |
| | | if (this.positions.length === 0) return |
| | | const position = this.getPositionFromScreen(movement.endPosition) |
| | |
| | | this.floatPosition = null |
| | | this.isIntersecting = false |
| | | this.notify('getPolygonPositions', this.positions) |
| | | this.tooltip.hide() |
| | | this.tooltip?.hide() |
| | | this.clearPreviewEntities() |
| | | } |
| | | |
| | |
| | | |
| | | getPositionFromScreen(screenPosition) { |
| | | const scene = this.viewer.scene |
| | | const cartesian = scene.pickPosition(screenPosition) |
| | | const ray = scene.camera.getPickRay(screenPosition) |
| | | const cartesian = ray ? scene.globe.pick(ray, scene) : null |
| | | if (cartesian) return cartesian |
| | | return scene.camera.pickEllipsoid(screenPosition, scene.globe.ellipsoid) |
| | | } |