{"version":3,"file":"use-drawing-segment.mjs","sources":["../../../../../packages/composables/use-drawing/use-drawing-segment.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-22 14:09:42\n * @LastEditTime: 2023-05-23 10:31:50\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\composables\\use-drawing\\use-drawing-segment.ts\n */\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcLabelProps, VcPolygon } from '@vue-cesium/components/primitive-collections'\nimport { VcPrimitive, VcPrimitiveGroundPolyline, VcViewshed } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryGroundPolyline } from '@vue-cesium/components/geometries'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport {\n  calculateAreaByPostions,\n  getGeodesicDistance,\n  getPolylineSegmentHeading,\n  getHeadingPitchRoll,\n  getPolylineSegmentEndpoint,\n  getPolylineSegmentPitch,\n  makeCartesian2,\n  makeCartesian3Array,\n  getFirstIntersection\n} from '@vue-cesium/utils/cesium-helpers'\nimport { VcSegmentDrawing } from '@vue-cesium/utils/drawing-types'\nimport type { VcComponentInternalInstance, VcDrawingProvider, VcReadyObject } from '@vue-cesium/utils/types'\nimport { isUndefined } from '@vue-cesium/utils/util'\nimport { reactive, VNode } from 'vue'\nimport { computed, getCurrentInstance, h, nextTick, ref } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from '@vue-cesium/components'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport default function (props, ctx, cmpName: string) {\n  const instance = getCurrentInstance() as VcComponentInternalInstance\n\n  const commonState = useCommon(props, ctx, instance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { t } = useLocale()\n  const $services = commonState.$services as VcDrawingProvider\n  const { emit } = ctx\n\n  const {\n    drawingType,\n    drawTip,\n    drawTipOpts,\n    drawStatus,\n    canShowDrawTip,\n    drawTipPosition,\n    showEditor,\n    editorPosition,\n    mouseoverPoint,\n    editingPoint,\n    primitiveCollectionRef,\n    editorType,\n    onMouseoverPoints,\n    onMouseoutPoints,\n    onMouseenterEditor,\n    onMouseleaveEditor,\n    onPrimitiveCollectionReady,\n    onVcCollectionPointReady,\n    onVcCollectionLabelReady,\n    onVcPrimitiveReady\n  } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n  const renderDatas = ref<Array<VcSegmentDrawing>>([])\n  if (props.preRenderDatas && props.preRenderDatas.length) {\n    props.preRenderDatas.forEach(preRenderData => {\n      const segmentDrawing: VcSegmentDrawing = {\n        positions: makeCartesian3Array(preRenderData) as Array<Cesium.Cartesian3>,\n        show: true,\n        drawStatus: DrawStatus.AfterDraw,\n        distance: 0,\n        labels: [],\n\n        pointOpts: {},\n        labelOpts: {},\n        labelsOpts: {},\n        polylineOpts: {},\n        primitiveOpts: {},\n        polygonOpts: {}\n      }\n\n      cmpName === 'VcMeasurementVertical' &&\n        Object.assign(segmentDrawing, {\n          draggingPlane: new Cesium.Plane(Cesium.Cartesian3.UNIT_X, 0),\n          surfaceNormal: new Cesium.Cartesian3()\n        })\n\n      renderDatas.value.push(segmentDrawing)\n    })\n  }\n  let restorePosition\n  const computedRenderDatas = computed<Array<VcSegmentDrawing>>(() => {\n    const polylines: Array<VcSegmentDrawing> = []\n    const { Cartesian3, Cartographic, Rectangle, createGuid, defined, Math: CesiumMath, Ray } = Cesium\n    const { viewer } = $services\n\n    renderDatas.value.forEach(polylineSegment => {\n      const startPosition = polylineSegment.positions[0]\n      const endPosition = polylineSegment.positions[1]\n\n      if (Cartesian3.equals(startPosition, endPosition)) {\n        return\n      }\n\n      const labels = reactive<Array<VcLabelProps>>([])\n      const distances: number[] = []\n      const angles: number[] = []\n\n      const distance =\n        props.polylineOpts?.arcType === 0\n          ? Cartesian3.distance(startPosition, endPosition)\n          : getGeodesicDistance(startPosition, endPosition, $services.viewer.scene.globe.ellipsoid)\n      const labelPosition = Cartesian3.midpoint(startPosition, endPosition, {} as any)\n\n      const heading = getPolylineSegmentHeading(startPosition, endPosition)\n      const pitch = getPolylineSegmentPitch(startPosition, endPosition)\n\n      polylineSegment.points = polylineSegment.positions.map(v => {\n        return {\n          position: v\n        }\n      })\n\n      const polyline = {\n        ...polylineSegment,\n        distance,\n        heading,\n        pitch\n      } as VcSegmentDrawing\n\n      const labelOpts = Object.assign({}, props.labelOpts, polyline.labelOpts)\n\n      if (cmpName === 'VcDrawingRectangle' || cmpName === 'VcMeasurementRectangle') {\n        const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n        const endCartographic = Cartographic.fromCartesian(endPosition, viewer.scene.globe.ellipsoid)\n        const height = startCartographic.height\n        !props.clampToGround && (endCartographic.height = height)\n\n        const rectangle = Rectangle.fromCartesianArray(polylineSegment.positions, viewer.scene.globe.ellipsoid)\n        const rectangleArr = [\n          rectangle.west,\n          rectangle.north,\n          height,\n          rectangle.east,\n          rectangle.north,\n          height,\n          rectangle.east,\n          rectangle.south,\n          height,\n          rectangle.west,\n          rectangle.south,\n          height,\n          rectangle.west,\n          rectangle.north,\n          height\n        ]\n        const polygonPositions = Cartesian3.fromRadiansArrayHeights(rectangleArr, viewer.scene.globe.ellipsoid)\n        Object.assign(polyline, {\n          polygonPositions,\n          height\n        })\n      } else if (cmpName === 'VcDrawingRegular' || cmpName === 'VcMeasurementRegular') {\n        const startPosition = polylineSegment.positions[0]\n        const endPosition = polylineSegment.positions[1]\n\n        const hpr = getHeadingPitchRoll(startPosition, endPosition, viewer.scene)\n        if (!isUndefined(hpr) && defined(hpr)) {\n          const polygonPositions: Array<Cesium.Cartesian3> = []\n          const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n          const endCartographic = Cartographic.fromCartesian(endPosition, viewer.scene.globe.ellipsoid)\n\n          !props.clampToGround && (endCartographic.height = startCartographic.height)\n          polygonPositions.push(Cartographic.toCartesian(endCartographic, viewer.scene.globe.ellipsoid))\n          for (let i = 0; i < (props.edge || 4) - 1; i++) {\n            const position = getPolylineSegmentEndpoint(\n              startPosition,\n              (hpr.heading += (Math.PI * 2) / (props.edge || 4)),\n              distance,\n              viewer.scene.globe.ellipsoid\n            )\n            polygonPositions.push(position)\n          }\n\n          Object.assign(polyline, {\n            polygonPositions,\n            height: startCartographic.height\n          })\n        }\n      } else if (cmpName === 'VcAnalysisViewshed') {\n        // updateViewshed\n        Object.assign(polyline.viewshedOpts, { startPosition, endPosition })\n      } else if (cmpName === 'VcAnalysisSightline') {\n        if (props.sightlineType === 'segment') {\n          const positionsNew: Array<Cesium.Cartesian3> = []\n          positionsNew.push(startPosition)\n          const objectsToExclude = []\n          const primitiveCollection: Array<Cesium.PrimitiveCollection> = (primitiveCollectionRef.value.cesiumObject as any)._primitives\n          primitiveCollection.forEach(primitive => {\n            if (primitive instanceof Cesium.PointPrimitiveCollection) {\n              objectsToExclude.push(...primitive._pointPrimitives)\n            }\n            if (primitive instanceof Cesium.Primitive) {\n              objectsToExclude.push(primitive)\n            }\n          })\n          const intersection = getFirstIntersection(startPosition, endPosition, $services.viewer, objectsToExclude)\n          if (defined(intersection)) {\n            positionsNew.push(intersection)\n          }\n          positionsNew.push(endPosition)\n          let distance = 0\n          const distances = []\n          for (let i = 0; i < positionsNew.length - 1; i++) {\n            const s = Cartesian3.distance(positionsNew[i], positionsNew[i + 1])\n            distances.push(s)\n            distance = distance + s\n          }\n          Object.assign(polyline, {\n            positions: positionsNew,\n            distance\n          })\n        } else if (props.sightlineType === 'circle') {\n          // Todo\n        }\n      } else {\n        labels.push({\n          position: labelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(distance, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...labelOpts\n        })\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length) {\n        const labelsOpts = Object.assign({}, props.labelsOpts, polyline.labelsOpts)\n        const positions = polyline.polygonPositions.slice()\n        props.loop && positions.length > 2 && positions.push(positions[0])\n        for (let i = 0; i < positions.length - 1; i++) {\n          let s = 0\n          if (props.polylineOpts?.arcType === 0) {\n            s = getGeodesicDistance(positions[i], positions[i + 1], $services.viewer.scene.globe.ellipsoid)\n          } else {\n            s = Cartesian3.distance(positions[i], positions[i + 1])\n          }\n          distances.push(s)\n          if (s > 0 && positions.length > 2 && props.showDistanceLabel) {\n            labels.push({\n              text: MeasureUnits.distanceToString(s, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n              position: Cartesian3.midpoint(positions[i], positions[i + 1], {} as any),\n              id: createGuid(),\n              ...labelsOpts\n            })\n          }\n          if (positions.length > 2 && props.showAngleLabel) {\n            if (i > 0 || props.loop) {\n              const point0 = positions[i === 0 ? positions.length - 2 : i - 1]\n              const point1 = positions[i]\n              const point2 = positions[i + 1]\n              const diffrence1 = Cartesian3.subtract(point0, point1, {} as any)\n              const diffrence2 = Cartesian3.subtract(point2, point1, {} as any)\n              let angle = 0\n              if (!(Cartesian3.ZERO.equals(diffrence1) || Cartesian3.ZERO.equals(diffrence2))) {\n                angle = Cartesian3.angleBetween(diffrence1, diffrence2)\n              }\n              angles.push(angle)\n              labels.push({\n                text: MeasureUnits.angleToString(angle, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n                position: point1,\n                id: createGuid(),\n                ...labelsOpts\n              })\n            }\n          }\n        }\n\n        const area = calculateAreaByPostions(positions)\n        props.showLabel &&\n          labels.push({\n            text: MeasureUnits.areaToString(area, props.measureUnits?.areaUnits, props.locale, props.decimals?.area),\n            position: polylineSegment.positions[0],\n            id: createGuid(),\n            ...labelOpts\n          })\n      }\n\n      if (props.showComponentLines) {\n        Object.assign(polyline, {\n          xyPolylinePositions: [new Cartesian3(), new Cartesian3(), new Cartesian3()],\n          xyBoxPositions: [new Cartesian3(), new Cartesian3(), new Cartesian3()],\n          xDistance: 0,\n          yDistance: 0,\n          xAngle: 0,\n          yAngle: 0\n        })\n        updateComponents(polyline)\n\n        labels.push({\n          position: polyline.xLabelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(polyline.xDistance || 0, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.xLabelOpts\n        })\n\n        labels.push({\n          position: polyline.yLabelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(polyline.yDistance || 0, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.yLabelOpts\n        })\n\n        labels.push({\n          position: polyline.xAnglePosition,\n          id: createGuid(),\n          text: MeasureUnits.angleToString(polyline.xAngle || 0, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n          ...props.xAngleLabelOpts\n        })\n\n        labels.push({\n          position: polyline.yAnglePosition,\n          id: createGuid(),\n          text: MeasureUnits.angleToString(polyline.yAngle || 0, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n          ...props.yAngleLabelOpts\n        })\n      }\n\n      Object.assign(polyline, {\n        labels\n      })\n      polyline.positionsDegreesArray = polyline.positions.map(v => {\n        const cart = Cesium.Cartographic.fromCartesian(v, viewer.scene.globe.ellipsoid)\n        return [CesiumMath.toDegrees(cart.longitude), CesiumMath.toDegrees(cart.latitude), cart.height]\n      })\n      polyline?.polygonPositions?.length &&\n        (polyline.polygonPositionsDegreesArray = polyline.polygonPositions.map(v => {\n          const cart = Cesium.Cartographic.fromCartesian(v, viewer.scene.globe.ellipsoid)\n          return [CesiumMath.toDegrees(cart.longitude), CesiumMath.toDegrees(cart.latitude), cart.height]\n        }))\n\n      polylines.push(polyline)\n    })\n    return polylines\n  })\n\n  // methods\n  instance.createCesiumObject = async () => {\n    return primitiveCollectionRef\n  }\n\n  instance.mount = async () => {\n    const { viewer } = $services\n    if (props.autoUpdateLabelPosition) {\n      cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.addEventListener(updateLabelPosition)\n      ;(cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcDrawingRectangle') &&\n        viewer.scene.preRender.addEventListener(updateLabelPositionPolygon)\n    }\n\n    return true\n  }\n\n  instance.unmount = async () => {\n    const { viewer } = $services\n    if (props.autoUpdateLabelPosition) {\n      cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.removeEventListener(updateLabelPosition)\n      ;(cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcDrawingRectangle') &&\n        viewer.scene.preRender.removeEventListener(updateLabelPositionPolygon)\n    }\n\n    return true\n  }\n\n  const getHeightPosition = (polyline: VcSegmentDrawing, movement: Cesium.Cartesian2) => {\n    const { defined, SceneMode, Cartesian3, IntersectionTests, Plane, SceneTransforms, Ray } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const camera = scene.camera\n    const direction = camera.direction\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const positions = polyline.positions\n    const p1 = positions[0]\n    let startPoint = p1\n    let endPoint = positions[1]\n    let draggingPlane = polyline.draggingPlane\n    let surfaceNormal = polyline.surfaceNormal\n    let normal = surfaceNormal\n\n    if (scene.mode === SceneMode.COLUMBUS_VIEW) {\n      normal = Cartesian3.UNIT_X\n      const startPointCartographic = ellipsoid.cartesianToCartographic(p1, {} as any)\n      startPoint = scene.mapProjection.project(startPointCartographic, {} as any)\n      Cartesian3.fromElements(startPoint.z, startPoint.x, startPoint.y, startPoint)\n    }\n\n    let forward = Cartesian3.cross(normal, direction, {} as any) // m\n    forward = Cartesian3.cross(normal, forward, forward)\n    forward = Cartesian3.normalize(forward, forward)\n    draggingPlane = Plane.fromPointNormal(startPoint, forward, draggingPlane)\n    const ray = camera.getPickRay(movement, new Ray())\n    endPoint = IntersectionTests.rayPlane(ray, draggingPlane, {} as any)\n    if (defined(endPoint)) {\n      if (scene.mode === SceneMode.COLUMBUS_VIEW) {\n        endPoint = Cartesian3.fromElements(endPoint.y, endPoint.z, endPoint.x, endPoint)\n        const endPointCartographic = scene.mapProjection.unproject(endPoint, {} as any)\n        endPoint = ellipsoid.cartographicToCartesian(endPointCartographic, endPoint)\n      }\n\n      if (SceneTransforms.wgs84ToWindowCoordinates(scene, positions[0], {} as any).y < movement.y) {\n        surfaceNormal = Cartesian3.negate(surfaceNormal, {} as any)\n      }\n      let diffrence = Cartesian3.subtract(endPoint, p1, {} as any)\n      diffrence = Cartesian3.projectVector(diffrence, surfaceNormal, diffrence)\n      endPoint = Cartesian3.add(p1, diffrence, endPoint)\n      return endPoint\n    }\n  }\n\n  const updateComponents = (polyline: VcSegmentDrawing) => {\n    const { Cartesian3, Math: CesiumMath, defined } = Cesium\n    const { viewer } = $services\n    const ellipsoid = viewer.scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const startPosition = polyline.positions[0]\n    const endPosition = polyline.positions[1]\n    const startCartographic = ellipsoid.cartesianToCartographic(startPosition, {} as any)\n\n    if (!defined(startCartographic)) {\n      return\n    }\n    const endCartographic = ellipsoid.cartesianToCartographic(endPosition, {} as any)\n\n    const startHeight = startCartographic.height\n    const endHeight = endCartographic.height\n\n    let startPoint, endPoint, height1, height2\n\n    if (startHeight < endHeight) {\n      startPoint = startPosition\n      endPoint = endPosition\n      height2 = endHeight\n      height1 = startHeight\n    } else {\n      startPoint = endPosition\n      endPoint = startPosition\n      height2 = startHeight\n      height1 = endHeight\n    }\n\n    const xyPolylinePositions = polyline.xyPolylinePositions\n    if (xyPolylinePositions === undefined) {\n      return\n    }\n    xyPolylinePositions[0] = startPoint\n    xyPolylinePositions[2] = endPoint\n    let normal = ellipsoid.geodeticSurfaceNormal(startPoint, {} as any)\n    normal = Cartesian3.multiplyByScalar(normal, height2 - height1, normal)\n    const xyPoint = Cartesian3.add(startPoint, normal, xyPolylinePositions[1])\n    if (!(Cartesian3.equalsEpsilon(xyPoint, endPoint, CesiumMath.EPSILON10) && Cartesian3.equalsEpsilon(xyPoint, startPoint, CesiumMath.EPSILON10))) {\n      let diffrenceX = Cartesian3.subtract(endPoint, xyPoint, {} as any)\n      let diffrenceY = Cartesian3.subtract(startPoint, xyPoint, {} as any)\n      const distanceMin = Math.min(Cartesian3.magnitude(diffrenceX), Cartesian3.magnitude(diffrenceY))\n      const factor = 15 < distanceMin ? 0.15 * distanceMin : 0.25 * distanceMin\n      diffrenceX = Cartesian3.normalize(diffrenceX, diffrenceX)\n      diffrenceY = Cartesian3.normalize(diffrenceY, diffrenceY)\n      diffrenceX = Cartesian3.multiplyByScalar(diffrenceX, factor, diffrenceX)\n      diffrenceY = Cartesian3.multiplyByScalar(diffrenceY, factor, diffrenceY)\n      const xyBoxPositions = polyline.xyBoxPositions\n      if (xyBoxPositions === undefined) {\n        return\n      }\n      Cartesian3.add(xyPoint, diffrenceX, xyBoxPositions[0])\n      Cartesian3.add(xyBoxPositions[0], diffrenceY, xyBoxPositions[1])\n      Cartesian3.add(xyPoint, diffrenceY, xyBoxPositions[2])\n\n      polyline.xLabelPosition = Cartesian3.midpoint(xyPoint, endPoint, {} as any)\n      polyline.yLabelPosition = Cartesian3.midpoint(startPoint, xyPoint, {} as any)\n      polyline.xAnglePosition = endPoint\n      polyline.yAnglePosition = startPoint\n      const diffrence1 = Cartesian3.subtract(xyPoint, endPoint, {} as any)\n      const diffrence2 = Cartesian3.subtract(xyPoint, startPoint, {} as any)\n      let diffrence3 = Cartesian3.subtract(endPoint, startPoint, {} as any)\n      polyline.yAngle = Cartesian3.angleBetween(diffrence2, diffrence3)\n      diffrence3 = Cartesian3.negate(diffrence3, diffrence3)\n      polyline.xAngle = Cartesian3.angleBetween(diffrence1, diffrence3)\n      polyline.xDistance = Cartesian3.magnitude(diffrence1)\n      polyline.yDistance = Cartesian3.magnitude(diffrence2)\n    }\n  }\n\n  const updateLabelPositionPolygon = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const positions = polyline.polygonPositions!\n      if (!(positions.length < 2)) {\n        const { defined, SceneTransforms, Cartesian2, HorizontalOrigin } = Cesium\n        const { viewer } = $services\n        const scene = viewer.scene\n\n        let startPosition = polyline.positions[0]\n        const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n\n        let startPositionWindow = defined(positionWindow)\n          ? Cartesian2.clone(positionWindow, {} as any)\n          : Cartesian2.fromElements(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, {} as any)\n        let startY = startPositionWindow.y\n        const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        const labels = labelCollection[index]._labels\n        const labelTotalLength = labels[labels.length - 1]\n\n        if (!labelTotalLength) return\n        for (let i = 1; i < positions.length; i++) {\n          const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, positions[i], {} as any)\n          if (defined(positionWindow)) {\n            const l = (startPositionWindow.y - positionWindow.y) / (positionWindow.x - startPositionWindow.x)\n            const label = labels[i - 1]\n            if (label && label !== labelTotalLength) {\n              label.horizontalOrigin = 0 < l ? HorizontalOrigin.LEFT : HorizontalOrigin.RIGHT\n            }\n\n            if (positionWindow.y < startY) {\n              startY = positionWindow.y\n              startPosition = positions[i]\n            }\n\n            startPositionWindow = Cartesian2.clone(positionWindow, startPositionWindow)\n          }\n\n          polyline.drawStatus === DrawStatus.AfterDraw && (labelTotalLength.position = startPosition)\n        }\n      }\n    })\n  }\n\n  const updateLabelPosition = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const { defined, SceneTransforms, HorizontalOrigin } = Cesium\n      const { viewer } = $services\n      const scene = viewer.scene\n      const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n      const positions = polyline.positions\n      const startPosition = positions[0]\n      const endPosition = positions[1]\n      const startPositionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n      const endPositionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, endPosition, {} as any)\n      if (defined(startPositionWindow) && defined(endPositionWindow)) {\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        if (labelCollection.length) {\n          const label = labelCollection[index].get(0)\n          let yLabel: Cesium.Label | undefined,\n            xAngleLabel: Cesium.Label | undefined,\n            yPixelOffset: Cesium.Cartesian2 | undefined,\n            xPixelOffset: Cesium.Cartesian2 | undefined\n          if (props.showComponentLines) {\n            yLabel = labelCollection[index].get(2)\n            xAngleLabel = labelCollection[index].get(3)\n            yPixelOffset = makeCartesian2(props.yLabelOpts?.pixelOffset) as Cesium.Cartesian2\n            xPixelOffset = makeCartesian2(props.xAngleLabelOpts?.pixelOffset) as Cesium.Cartesian2\n          }\n\n          if ((startPositionWindow.y - endPositionWindow.y) / (endPositionWindow.x - startPositionWindow.x) > 0) {\n            if (!isUndefined(yLabel) && !isUndefined(yPixelOffset)) {\n              yPixelOffset.x = -9\n              yLabel.pixelOffset = yPixelOffset\n              yLabel.horizontalOrigin = HorizontalOrigin.RIGHT\n            }\n\n            if (!isUndefined(xAngleLabel) && !isUndefined(xPixelOffset)) {\n              xPixelOffset.x = 12\n              xAngleLabel.pixelOffset = xPixelOffset\n              xAngleLabel.horizontalOrigin = HorizontalOrigin.LEFT\n            }\n\n            label.horizontalOrigin = HorizontalOrigin.LEFT\n          } else {\n            if (!isUndefined(yLabel) && !isUndefined(yPixelOffset)) {\n              yPixelOffset.x = 9\n              yLabel.pixelOffset = yPixelOffset\n              yLabel.horizontalOrigin = HorizontalOrigin.LEFT\n            }\n\n            if (!isUndefined(xAngleLabel) && !isUndefined(xPixelOffset)) {\n              xPixelOffset.x = -12\n              xAngleLabel.pixelOffset = xPixelOffset\n              xAngleLabel.horizontalOrigin = HorizontalOrigin.RIGHT\n            }\n\n            label.horizontalOrigin = HorizontalOrigin.RIGHT\n          }\n        }\n      }\n    })\n  }\n\n  const makeHeightPositions = (polyline: VcSegmentDrawing, position: Cesium.Cartesian3) => {\n    const { defined, defaultValue, Cartesian3 } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const positions = polyline.positions\n    positions[0] = position\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const postionCartographic = ellipsoid.cartesianToCartographic(position, {} as any)\n    const globe = scene.globe\n    postionCartographic.height = defined(globe) ? defaultValue(globe.getHeight(postionCartographic), 0) : 0\n    positions[1] = ellipsoid.cartographicToCartesian(postionCartographic, {} as any)\n    polyline.distance = Cartesian3.distance(positions[0], positions[1])\n    polyline.labelPosition = Cartesian3.midpoint(positions[0], positions[1], {} as any)\n  }\n\n  const startNew = () => {\n    const { Cartesian3, Plane } = Cesium\n    const polyline: VcSegmentDrawing = {\n      positions: [new Cartesian3(), new Cartesian3()],\n      show: false,\n      drawStatus: DrawStatus.BeforeDraw,\n      distance: 0,\n      labels: [],\n\n      pointOpts: {},\n      labelOpts: {},\n      labelsOpts: {},\n      polylineOpts: {},\n      primitiveOpts: {},\n      polygonOpts: {}\n    }\n\n    cmpName === 'VcMeasurementVertical' &&\n      Object.assign(polyline, {\n        draggingPlane: new Plane(Cartesian3.UNIT_X, 0),\n        surfaceNormal: new Cartesian3()\n      })\n\n    renderDatas.value.push(polyline)\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = true\n    drawTip.value = drawTipOpts.value.drawingTipStart\n  }\n\n  const stop = (removeLatest = true) => {\n    if (removeLatest && drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline = renderDatas.value[index] as VcSegmentDrawing\n    if (polyline) {\n      polyline.drawStatus = DrawStatus.AfterDraw\n    }\n\n    drawStatus.value = DrawStatus.AfterDraw\n    canShowDrawTip.value = false\n    drawTipPosition.value = [0, 0, 0]\n  }\n\n  const handleMouseClick = (movement: Cesium.Cartesian2, options?) => {\n    const { viewer, drawingFabInstance, selectedDrawingActionInstance, getWorldPosition } = $services\n    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (options.button === 2 && options.ctrl) {\n      // 取消绘制\n      const drawingsOption = drawingFabInstanceVm.getDrawingActionInstance(drawingType)\n      drawingFabInstanceVm.toggleAction(drawingsOption)\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    if (drawStatus.value === DrawStatus.AfterDraw) {\n      startNew()\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline = renderDatas.value[index] as VcSegmentDrawing\n    const positions = polyline.positions\n    const pointIndex = editingPoint.value ? editingPoint.value._index : polyline.positions.length - 1\n\n    if (options.button === 2 && editingPoint.value) {\n      // 放弃编辑\n      drawingFabInstanceVm.editingActionName = undefined\n      polyline.positions[editingPoint.value._index] = restorePosition\n      drawStatus.value = DrawStatus.AfterDraw\n      polyline.drawStatus = DrawStatus.AfterDraw\n      editingPoint.value = undefined\n      drawTip.value = drawTipOpts.value.drawingTipStart\n      if (cmpName === 'VcMeasurementHeight') {\n        makeHeightPositions(polyline, restorePosition)\n      }\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          Object.assign(\n            {\n              name: drawingType,\n              index,\n              pointIndex,\n              renderDatas,\n              finished: true,\n              windowPoistion: movement,\n              type: 'cancel'\n            },\n            computedRenderDatas.value[index]\n          ),\n          viewer\n        )\n      })\n      return\n    }\n\n    if (options.button !== 0) {\n      return\n    }\n\n    const { defined } = Cesium\n    let type = 'new'\n    let emitPosition\n    let finished = false\n    const scene = viewer.scene\n\n    if (drawStatus.value === DrawStatus.BeforeDraw) {\n      const position = getWorldPosition(scene, movement, {} as any)\n\n      if (!defined(position)) {\n        return\n      }\n      positions[0] = position\n      positions[1] = position\n      polyline.show = true\n      drawStatus.value = DrawStatus.Drawing\n      polyline.drawStatus = DrawStatus.Drawing\n      drawTip.value = drawTipOpts.value.drawingTipEnd\n      emitPosition = position\n      finished = false\n\n      if (cmpName === 'VcMeasurementVertical') {\n        const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n        polyline.surfaceNormal = ellipsoid.geodeticSurfaceNormal(position, polyline.surfaceNormal)\n      }\n\n      if (cmpName === 'VcMeasurementHeight') {\n        makeHeightPositions(polyline, position)\n        finished = true\n\n        polyline.drawStatus = DrawStatus.AfterDraw\n        drawStatus.value = DrawStatus.AfterDraw\n        drawTip.value = drawTipOpts.value.drawingTipStart\n\n        if (props.mode === 1) {\n          drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n        }\n      }\n\n      if (cmpName === 'VcAnalysisViewshed') {\n        polyline.viewshedOpts = {\n          ...props.viewshedOpts\n        }\n      }\n    } else {\n      // if (cmpName !== 'VcMeasurementHeight') {\n\n      // }\n      polyline.drawStatus = DrawStatus.AfterDraw\n      drawStatus.value = DrawStatus.AfterDraw\n\n      if (editingPoint.value) {\n        if (platform().hasTouch === true) {\n          const position = getWorldPosition(scene, movement, {} as any)\n          if (defined(position)) {\n            const positions = polyline.positions\n            positions.splice(editingPoint.value._index, 1, position)\n            editingPoint.value.pixelSize = props.pointOpts?.pixelSize * 1.0\n          }\n        }\n\n        editingPoint.value = undefined\n        drawingFabInstanceVm.editingActionName = undefined\n        canShowDrawTip.value = false\n        drawTipPosition.value = [0, 0, 0]\n        type = editorType.value\n\n        if (selectedDrawingActionInstance) {\n          drawTip.value = drawTipOpts.value.drawingTipStart\n          canShowDrawTip.value = true\n        }\n      } else {\n        if (cmpName !== 'VcMeasurementVertical') {\n          if (platform().hasTouch === true) {\n            const position = getWorldPosition(scene, movement, {} as any)\n            if (defined(position)) {\n              const positions = polyline.positions\n              positions[1] = position\n            }\n          }\n        }\n\n        if (props.mode === 1) {\n          drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n        }\n      }\n\n      finished = true\n      emitPosition = polyline.positions[1]\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            pointIndex,\n            renderDatas,\n            name: drawingType,\n            finished,\n            position: emitPosition,\n            windowPoistion: movement,\n            type\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const handleMouseMove = movement => {\n    const { viewer, getWorldPosition } = $services\n    const scene = viewer.scene\n    const position = getWorldPosition(scene, movement, {} as any)\n    const { defined, Cartographic } = Cesium\n    if (!defined(position)) {\n      return\n    }\n\n    drawTipPosition.value = position\n\n    if (drawStatus.value !== DrawStatus.Drawing) {\n      return\n    }\n\n    if (cmpName === 'VcMeasurementVertical' && scene.mode === Cesium.SceneMode.SCENE2D) {\n      return\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline = renderDatas.value[index] as VcSegmentDrawing\n    const pointIndex = editingPoint.value ? editingPoint.value._index : polyline.positions.length - 1\n\n    if (cmpName === 'VcMeasurementVertical') {\n      const heightPostion = getHeightPosition(polyline, movement)\n\n      if (!isUndefined(heightPostion)) {\n        const positions = polyline.positions.slice()\n        positions[editingPoint.value ? editingPoint.value._index : 1] = heightPostion\n        polyline.positions = positions\n      }\n    } else if (cmpName === 'VcMeasurementHeight') {\n      makeHeightPositions(polyline, position)\n    } else if (\n      cmpName === 'VcDrawingRectangle' ||\n      cmpName === 'VcDrawingRegular' ||\n      cmpName === 'VcMeasurementRegular' ||\n      cmpName === 'VcMeasurementRectangle'\n    ) {\n      const positions = polyline.positions\n      const startPosition = positions[0]\n      const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n      const endCartographic = Cartographic.fromCartesian(position, viewer.scene.globe.ellipsoid)\n      !props.clampToGround && (endCartographic.height = startCartographic.height)\n      positions[editingPoint.value ? editingPoint.value._index : 1] = Cartographic.toCartesian(endCartographic, viewer.scene.globe.ellipsoid)\n    } else if (cmpName === 'VcAnalysisSightline') {\n      // if (props.sightlineType === 'segment') {\n\n      // }\n      const positions = polyline.positions\n      if (editingPoint.value) {\n        const index = editingPoint.value._index > 0 ? 1 : 0\n        positions[index] = position\n      } else {\n        positions[1] = position\n      }\n    } else {\n      const positions = polyline.positions.slice()\n      positions[editingPoint.value ? editingPoint.value._index : 1] = position\n      polyline.positions = positions\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            pointIndex,\n            renderDatas,\n            name: drawingType,\n            finished: false,\n            position: polyline.positions[1],\n            windowPoistion: movement,\n            type: editingPoint.value ? editorType : 'new'\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const onEditorClick = e => {\n    editorPosition.value = [0, 0, 0]\n    showEditor.value = false\n\n    if (!props.editable) {\n      return\n    }\n\n    editorType.value = e\n\n    const { viewer, drawingFabInstance } = $services\n    if (e === 'move') {\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      drawStatus.value = DrawStatus.Drawing\n      editingPoint.value = mouseoverPoint.value\n      restorePosition = renderDatas.value[editingPoint.value._vcPolylineIndx].positions[editingPoint.value._index]\n      canShowDrawTip.value = true\n      const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n      drawingFabInstanceVm.editingActionName = drawingType\n    } else if (e === 'remove') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      polyline.positions.splice(mouseoverPoint.value._index, 1)\n    } else if (e === 'removeAll') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      renderDatas.value.splice(index, 1)\n    } else {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      props.editorOpts?.[e]?.callback?.(index, polyline)\n    }\n\n    emit(\n      'editorEvt',\n      {\n        type: e,\n        renderDatas,\n        name: drawingType,\n        index: mouseoverPoint.value._vcPolylineIndx,\n        pointIndex: mouseoverPoint.value._index,\n        point: mouseoverPoint.value\n      },\n      viewer\n    )\n  }\n\n  const clear = () => {\n    renderDatas.value = []\n    stop()\n  }\n\n  // expose public methods\n  const publicMethods = { computedRenderDatas, renderDatas, startNew, stop, clear, handleMouseClick, handleMouseMove }\n  Object.assign(instance.proxy, publicMethods)\n\n  return () => {\n    const { createGuid } = Cesium\n\n    const children: Array<VNode> = []\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const isRegular =\n        cmpName === 'VcDrawingRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle'\n      const positions = isRegular ? polyline.polygonPositions?.slice() : polyline.positions\n      isRegular && positions?.push(positions[0])\n      const polylineOpts = Object.assign({}, props.polylineOpts, polyline.polylineOpts)\n      props.clampToGround && delete polylineOpts.arcType\n      const primitiveOpts = Object.assign({}, props.primitiveOpts, polyline.primitiveOpts)\n      if (positions?.length && positions?.length > 1) {\n        // polyline\n        children.push(\n          h(\n            props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n            {\n              ...primitiveOpts,\n              show: (polyline.show && primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              onReady: (readyObject: VcReadyObject) => {\n                primitiveOpts?.onReady?.(readyObject)\n                ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n              }\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(props.clampToGround ? VcGeometryGroundPolyline : VcGeometryPolyline, {\n                    positions: positions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n\n        // viewshed\n        if (cmpName === 'VcAnalysisViewshed') {\n          children.push(h(VcViewshed, { ...polyline.viewshedOpts }))\n        }\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length > 2) {\n        const polygonOpts = Object.assign({}, props?.polygonOpts, polyline?.polygonOpts)\n        polygonOpts.clampToGround = props.clampToGround\n        // polygon\n        children.push(\n          h(VcPolygon, {\n            positions: positions,\n            show: polyline.show && polygonOpts?.show,\n            ...polygonOpts,\n            onReady: (readyObject: VcReadyObject) => {\n              onVcPrimitiveReady(readyObject)\n              polygonOpts?.onReady?.(readyObject)\n              ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n            }\n          })\n        )\n      }\n      if (polyline.xyPolylinePositions && polyline.xyPolylinePositions.length > 1) {\n        // xyPolyline\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              show: (polyline.show && primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              ...primitiveOpts,\n              onReady: (readyObject: VcReadyObject) => {\n                primitiveOpts?.onReady?.(readyObject)\n                ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n              }\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: polyline.xyPolylinePositions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      if (polyline.xyBoxPositions && polyline.xyBoxPositions.length > 1) {\n        // xyBox\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              show: (polyline.show && primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              ...primitiveOpts\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: polyline.xyBoxPositions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      // points\n      const polylinePointOpts = Object.assign({}, props.pointOpts, polyline.pointOpts)\n      children.push(\n        h(VcCollectionPoint, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          points: polyline.points.map((point, subIndex) => {\n            const position = point.position as Cesium.Cartesian3\n            const pointOpts = Object.assign({}, polylinePointOpts, point)\n            return {\n              position,\n              id: createGuid(),\n              _vcPolylineIndx: index, // for editor\n              ...pointOpts,\n              show:\n                (pointOpts?.show || props.editable || polyline.drawStatus === DrawStatus.Drawing) &&\n                (cmpName === 'VcAnalysisSightline' && polyline.positions.length === 3 ? subIndex !== 1 : true)\n            }\n          }),\n          onMouseover: onMouseoverPoints,\n          onMouseout: onMouseoutPoints,\n          onReady: onVcCollectionPointReady\n        })\n      )\n\n      // labels\n      children.push(\n        h(VcCollectionLabel, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          labels: polyline.labels,\n          onReady: onVcCollectionLabelReady\n        })\n      )\n    })\n\n    if (props.drawtip?.show && canShowDrawTip.value) {\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: drawTipPosition.value,\n            pixelOffset: props.drawtip?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            }\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-drawtip vc-tooltip--style'\n              },\n              drawTip.value\n            )\n        )\n      )\n    }\n\n    if (showEditor.value) {\n      const buttons: Array<VNode> = []\n      if (mouseoverPoint.value) {\n        const editorOpts = props.editorOpts\n        for (const key in editorOpts) {\n          if (!Array.isArray(editorOpts[key]) && typeof editorOpts[key] !== 'number') {\n            const opts = {\n              ...editorOpts[key]\n            }\n            delete opts.color\n\n            buttons.push(\n              h(\n                VcBtn,\n                {\n                  style: { color: editorOpts[key].color, background: editorOpts[key].background },\n                  ...opts,\n                  onclick: onEditorClick.bind(undefined, key)\n                },\n                () =>\n                  h(\n                    VcTooltip,\n                    {\n                      ...editorOpts[key].tooltip\n                    },\n                    () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.measurement.editor.${key}`))\n                  )\n              )\n            )\n          }\n        }\n      }\n\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: editorPosition.value,\n            pixelOffset: props.editorOpts?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            },\n            onMouseenter: onMouseenterEditor,\n            onMouseleave: onMouseleaveEditor\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-editor'\n              },\n              buttons\n            )\n        )\n      )\n    }\n    return h(\n      VcCollectionPrimitive,\n      {\n        ref: primitiveCollectionRef,\n        show: props.show,\n        onReady: onPrimitiveCollectionReady\n      },\n      () => children\n    )\n  }\n}\n"],"names":["startPosition","endPosition","distance","distances","positionWindow","positions","index","_a"],"mappings":"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"}