vue-cesium-jyt
Version:
Vue 3.x components for CesiumJS.
1 lines • 65.9 kB
Source Map (JSON)
{"version":3,"file":"use-drawing-polyline.mjs","sources":["../../../../../packages/composables/use-drawing/use-drawing-polyline.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-21 10:43:32\n * @LastEditTime: 2022-02-18 20:39:09\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-polyline.ts\n */\nimport { VcPrimitive, VcPrimitiveGroundPolyline } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryGroundPolyline, VcGeometryPolylineProps } from '@vue-cesium/components/geometries'\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcLabelProps, VcPolygon } from '@vue-cesium/components/primitive-collections'\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport { calculateAreaByPostions, getFirstIntersection, getGeodesicDistance, makeCartesian3Array } from '@vue-cesium/utils/cesium-helpers'\nimport type { VcPolylineDrawing } from '@vue-cesium/utils/drawing-types'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport type { VNode } from 'vue'\nimport { computed, getCurrentInstance, nextTick, ref, h } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\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\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 let lastClickPosition: Cesium.Cartesian2\n let restorePosition\n const mouseDelta = 10\n\n const renderDatas = ref<Array<VcPolylineDrawing>>([])\n\n if (props.preRenderDatas && props.preRenderDatas.length) {\n props.preRenderDatas.forEach(preRenderData => {\n const polylineDrawing: VcPolylineDrawing = {\n show: true,\n positions: makeCartesian3Array(preRenderData) as Array<Cesium.Cartesian3>,\n tempPositions: [],\n drawStatus: DrawStatus.AfterDraw,\n loop: props.loop,\n distance: 0,\n area: 0,\n distances: [],\n labels: [],\n angles: []\n }\n\n renderDatas.value.push(polylineDrawing)\n })\n }\n\n const computedRenderDatas = computed<Array<VcPolylineDrawing>>(() => {\n const { Cartesian3, createGuid, defined } = Cesium\n const polylines: Array<VcPolylineDrawing> = []\n renderDatas.value.forEach((polyline, index) => {\n const labels: Array<VcLabelProps> = []\n const distances: number[] = []\n const angles: number[] = []\n let distance = 0\n const dashedLines: Array<{\n positions: Array<Cesium.Cartesian3>\n }> = []\n const positions = polyline.positions.slice()\n if (cmpName === 'VcAnalysisSightline') {\n const observationPoint = positions.shift()\n const destinationPoints = positions\n observationPoint &&\n destinationPoints.forEach(destinationPoint => {\n const positionsNew: Array<Cesium.Cartesian3> = []\n positionsNew.push(observationPoint)\n\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(observationPoint, destinationPoint, $services.viewer, objectsToExclude)\n if (defined(intersection)) {\n positionsNew.push(intersection)\n }\n positionsNew.push(destinationPoint)\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 polylines.push({\n ...polyline,\n positions: positionsNew,\n distance,\n distances\n })\n })\n } else {\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 distance = distance + 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 ...props.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 ...props.labelsOpts\n })\n }\n }\n\n if (props.showDashedLine) {\n dashedLines.push({\n positions: [positions[i], getEndPostion(positions[i])]\n })\n\n if (i === positions.length - 2) {\n dashedLines.push({\n positions: [positions[i + 1], getEndPostion(positions[i + 1])]\n })\n }\n }\n }\n const area = calculateAreaByPostions(positions)\n\n if (cmpName.includes('Area')) {\n labels.push({\n text: MeasureUnits.areaToString(area, props.measureUnits?.areaUnits, props.locale, props.decimals?.area),\n position: positions[positions.length - 1],\n id: createGuid(),\n ...props.labelOpts\n })\n } else {\n labels.push({\n text: MeasureUnits.distanceToString(distance, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n position: positions[positions.length - 1],\n id: createGuid(),\n ...props.labelOpts\n })\n }\n\n polylines.push({\n ...polyline,\n labels,\n distance,\n distances,\n area,\n angles,\n dashedLines\n })\n }\n })\n return polylines\n })\n // methods\n instance.mount = async () => {\n const { viewer } = $services\n cmpName.includes('VcMeasurement') && viewer.scene.preRender.addEventListener(updateLabelPosition)\n return true\n }\n instance.unmount = async () => {\n const { viewer } = $services\n cmpName.includes('VcMeasurement') && viewer.scene.preRender.removeEventListener(updateLabelPosition)\n return true\n }\n\n const getEndPostion = (position: Cesium.Cartesian3) => {\n const { defined, defaultValue } = Cesium\n const { viewer } = $services\n const scene = viewer.scene\n const globe = scene.globe\n const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n const positionCartographic = ellipsoid.cartesianToCartographic(position)\n positionCartographic.height = defined(globe) ? defaultValue(globe.getHeight(positionCartographic), 0) : 0\n return ellipsoid.cartographicToCartesian(positionCartographic)\n }\n\n const updateLabelPosition = () => {\n computedRenderDatas.value.forEach((polyline, index) => {\n const positions = polyline.positions\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 = 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 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 if (labels[i - 1] !== labelTotalLength) {\n labels[i - 1].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 startNew = () => {\n const polyline: VcPolylineDrawing = {\n show: false,\n positions: [],\n tempPositions: [],\n drawStatus: DrawStatus.BeforeDraw,\n loop: props.loop,\n distance: 0,\n area: 0,\n distances: [],\n labels: [],\n angles: []\n }\n\n if (cmpName === 'VcMeasurementHorizontal') {\n const { Cartesian3, Plane } = Cesium\n Object.assign(polyline, {\n dashedLines: [],\n heightPlane: new Plane(Cartesian3.UNIT_X, 0),\n heightPlaneCV: new Plane(Cartesian3.UNIT_X, 0),\n height: 0,\n firstMove: false,\n tempNextPos: new Cartesian3()\n })\n }\n\n drawStatus.value = DrawStatus.BeforeDraw\n renderDatas.value.push(polyline)\n canShowDrawTip.value = true\n drawTip.value = drawTipOpts.value.drawingTipStart\n }\n\n const stop = () => {\n if (drawStatus.value === DrawStatus.Drawing) {\n renderDatas.value.pop()\n }\n drawStatus.value = DrawStatus.BeforeDraw\n canShowDrawTip.value = false\n drawTipPosition.value = [0, 0, 0]\n }\n\n const handleMouseClick = (movement: Cesium.Cartesian2, options?) => {\n const { viewer, drawingFabInstance, getWorldPosition, selectedDrawingActionInstance } = $services\n if (options.button === 2 && options.ctrl) {\n const drawingsOption = (drawingFabInstance?.proxy as any).drawingActionInstances.find(v => v.name === drawingType)\n ;(drawingFabInstance?.proxy as any).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 { defined, Cartesian2, Plane, Cartesian3 } = Cesium\n const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n const polyline: VcPolylineDrawing = renderDatas.value[index]\n const tempPositions = polyline.tempPositions\n\n if (options.button === 2 && editingPoint.value) {\n if (editorType.value === 'insert') {\n polyline.positions.splice(editingPoint.value._index, 1)\n } else {\n polyline.positions[editingPoint.value._index] = restorePosition\n }\n drawStatus.value = DrawStatus.AfterDraw\n polyline.drawStatus = DrawStatus.AfterDraw\n editingPoint.value = undefined\n drawTip.value = drawTipOpts.value.drawingTipStart\n ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n canShowDrawTip.value = defined(selectedDrawingActionInstance)\n nextTick(() => {\n emit(\n 'drawEvt',\n Object.assign(\n {\n index,\n name: drawingType,\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 lastClickPosition = lastClickPosition || new Cesium.Cartesian2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)\n\n if (Cartesian2.magnitude(Cartesian2.subtract(lastClickPosition, movement, {} as any)) < mouseDelta) {\n return\n }\n\n if (options.button === 2 && drawStatus.value === DrawStatus.Drawing) {\n if (tempPositions.length > 1) {\n tempPositions.pop()\n handleMouseMove(movement)\n }\n }\n\n if (options.button !== 0) {\n return\n }\n\n const scene = viewer.scene\n const position = getWorldPosition(scene, movement, {} as any)\n if (!defined(position)) {\n return\n }\n let finished = false\n let type = 'new'\n if (cmpName === 'VcMeasurementHorizontal') {\n if (editingPoint.value) {\n drawStatus.value = DrawStatus.AfterDraw\n editingPoint.value = undefined\n finished = true\n type = editorType.value\n drawTip.value = drawTipOpts.value.drawingTipStart\n } else if (tempPositions.length === 0) {\n const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n tempPositions.push(position)\n polyline.positions = tempPositions\n polyline.heightPlane = Plane.fromPointNormal(position, ellipsoid.geodeticSurfaceNormal(position, {} as any), polyline.heightPlane)\n const positionCartographic = ellipsoid.cartesianToCartographic(position, {} as any)\n const positionProject = scene.mapProjection.project(positionCartographic, {} as any)\n const positionCV = Cartesian3.fromElements(positionProject.z, positionProject.x, positionProject.y, positionProject)\n polyline.heightPlaneCV = Plane.fromPointNormal(positionCV, Cartesian3.UNIT_X, polyline.heightPlaneCV)\n polyline.height = positionCartographic.height\n polyline.firstMove = true\n polyline.drawStatus = DrawStatus.Drawing\n polyline.show = true\n drawStatus.value = DrawStatus.Drawing\n } else {\n tempPositions.push(polyline.tempNextPos!)\n polyline.positions = tempPositions\n polyline.firstMove = true\n }\n drawTip.value = drawTipOpts.value.drawingTipEnd\n } else {\n if (editingPoint.value) {\n drawStatus.value = DrawStatus.AfterDraw\n editingPoint.value = undefined\n finished = true\n type = editorType.value\n drawTip.value = drawTipOpts.value.drawingTipStart\n } else {\n tempPositions.push(position)\n\n polyline.positions = tempPositions\n polyline.show = true\n polyline.drawStatus = DrawStatus.Drawing\n drawStatus.value = DrawStatus.Drawing\n canShowDrawTip.value = true\n drawTip.value = drawTipOpts.value.drawingTipEnd\n }\n\n if (type !== 'new') {\n ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n canShowDrawTip.value = defined(selectedDrawingActionInstance)\n }\n }\n\n Cartesian2.clone(movement, lastClickPosition)\n\n nextTick(() => {\n emit(\n 'drawEvt',\n Object.assign(\n {\n index,\n name: drawingType,\n renderDatas: renderDatas,\n finished: finished,\n position: cmpName === 'VcMeasurementHorizontal' ? polyline.positions[polyline.positions.length - 1] : position,\n windowPoistion: movement,\n type: type\n },\n computedRenderDatas.value[index]\n ),\n viewer\n )\n })\n }\n\n const handleMouseMove = (movement: Cesium.Cartesian2, options?) => {\n const { viewer, getWorldPosition } = $services\n const scene = viewer.scene\n const position = getWorldPosition(scene, movement, {} as any)\n const { defined } = Cesium\n\n if (!defined(position)) {\n return\n }\n\n drawTipPosition.value = position\n\n if (drawStatus.value !== DrawStatus.Drawing) {\n return\n }\n\n const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n const polyline: VcPolylineDrawing = renderDatas.value[index]\n let type = 'new'\n if (cmpName === 'VcMeasurementHorizontal') {\n const { SceneMode, IntersectionTests, Cartesian3 } = Cesium\n const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n const positions = polyline.positions\n const cameraRay = scene.camera.getPickRay(movement)\n let intersectionPosition, unprojectPosition\n if (scene.mode === SceneMode.SCENE3D && polyline.heightPlane) {\n intersectionPosition = IntersectionTests.rayPlane(cameraRay, polyline.heightPlane)\n } else if (scene.mode === SceneMode.COLUMBUS_VIEW && polyline.heightPlaneCV) {\n intersectionPosition = IntersectionTests.rayPlane(cameraRay, polyline.heightPlaneCV)\n intersectionPosition = Cartesian3.fromElements(intersectionPosition.y, intersectionPosition.z, intersectionPosition.x, intersectionPosition)\n unprojectPosition = scene.mapProjection.unproject(intersectionPosition)\n intersectionPosition = ellipsoid.cartographicToCartesian(unprojectPosition)\n } else {\n intersectionPosition = scene.camera.pickEllipsoid(movement, ellipsoid)\n if (defined(intersectionPosition)) {\n const cartographicPosition = ellipsoid.cartesianToCartographic(intersectionPosition)\n cartographicPosition.height = polyline.height || 0\n intersectionPosition = ellipsoid.cartographicToCartesian(cartographicPosition, intersectionPosition)\n }\n }\n\n if (!defined(intersectionPosition)) {\n return\n }\n\n if (!polyline.firstMove && options?.shift) {\n const lastPosition = positions[positions.length - 2]\n const tempNextPos = polyline.tempNextPos\n const d1 = Cartesian3.subtract(tempNextPos!, lastPosition, {} as any)\n let d2 = Cartesian3.subtract(intersectionPosition, lastPosition, {} as any)\n d2 = Cartesian3.projectVector(d2, d1, d2)\n intersectionPosition = Cartesian3.add(lastPosition, d2, intersectionPosition)\n }\n\n if (editingPoint.value) {\n const positions = polyline.positions\n positions.splice(editingPoint.value._index, 1, intersectionPosition)\n type = editorType.value\n // drawTip.value = drawTipOpts.value.drawingTipStart\n } else {\n const tempPositions = polyline.tempPositions.slice()\n tempPositions.push(intersectionPosition)\n polyline.positions = tempPositions\n polyline.firstMove = false\n polyline.tempNextPos = Object.assign(intersectionPosition)\n drawTip.value = drawTipOpts.value.drawingTipEnd\n }\n } else {\n if (editingPoint.value) {\n const positions = polyline.positions\n positions.splice(editingPoint.value._index, 1, position)\n type = editorType.value\n } else {\n const tempPositions = polyline.tempPositions.slice()\n\n tempPositions.push(position)\n polyline.positions = tempPositions\n }\n }\n\n nextTick(() => {\n emit(\n 'drawEvt',\n Object.assign(\n {\n index,\n name: drawingType,\n renderDatas,\n finished: false,\n position: cmpName === 'VcMeasurementHorizontal' ? polyline.positions[polyline.positions.length - 1] : position,\n windowPoistion: movement,\n type\n },\n computedRenderDatas.value[index]\n ),\n viewer\n )\n })\n }\n\n const handleDoubleClick = movement => {\n const { drawingFabInstance, selectedDrawingActionInstance, viewer } = $services\n if (drawStatus.value === DrawStatus.Drawing) {\n const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n const polyline: VcPolylineDrawing = renderDatas.value[index]\n polyline.positions = polyline.tempPositions\n polyline.drawStatus = DrawStatus.AfterDraw\n drawStatus.value = DrawStatus.AfterDraw\n drawTip.value = drawTipOpts.value.drawingTipStart\n\n nextTick(() => {\n emit(\n 'drawEvt',\n Object.assign(\n {\n index,\n name: drawingType,\n renderDatas,\n finished: true,\n position: polyline.positions[polyline.positions.length - 1],\n windowPoistion: movement,\n type: 'new'\n },\n computedRenderDatas.value[index]\n ),\n viewer\n )\n\n if (props.mode === 1) {\n ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n }\n })\n }\n }\n\n const getPointIndexes = () => {\n let polylineIndex = editingPoint.value._vcPolylineIndex\n let pointIndex = editingPoint.value._index\n\n if (cmpName === 'VcAnalysisSightline') {\n for (let i = 0; i < renderDatas.value.length; i++) {\n const polyline = renderDatas.value[i]\n for (let j = 0; j < polyline.positions.length; j++) {\n const position = polyline.positions[j]\n if (editingPoint.value.position.equals(position)) {\n polylineIndex = i\n pointIndex = j\n }\n }\n }\n }\n\n return [polylineIndex, pointIndex]\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 const { viewer, drawingFabInstance } = $services\n editorType.value = e\n if (e === 'move') {\n drawTip.value = drawTipOpts.value.drawingTipEditing\n drawStatus.value = DrawStatus.Drawing\n editingPoint.value = mouseoverPoint.value\n canShowDrawTip.value = true\n const indexes = getPointIndexes()\n editingPoint.value._vcPolylineIndex = indexes[0]\n editingPoint.value._index = indexes[1]\n restorePosition = renderDatas.value[indexes[0]].positions[indexes[1]]\n ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n } else if (e === 'insert') {\n const index = mouseoverPoint.value._vcPolylineIndex\n const polyline = renderDatas.value[index]\n polyline.positions.splice(mouseoverPoint.value._index, 0, mouseoverPoint.value.position)\n editingPoint.value = mouseoverPoint.value\n canShowDrawTip.value = true\n drawStatus.value = DrawStatus.Drawing\n drawTip.value = drawTipOpts.value.drawingTipEditing\n ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n } else if (e === 'remove') {\n const index = mouseoverPoint.value._vcPolylineIndex\n const polyline = renderDatas.value[index]\n polyline.positions.length > 2 && polyline.positions.splice(mouseoverPoint.value._index, 1)\n } else if (e === 'removeAll') {\n const index = mouseoverPoint.value._vcPolylineIndex\n renderDatas.value.splice(index, 1)\n } else {\n const index = mouseoverPoint.value._vcPolylineIndex\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: renderDatas,\n name: drawingType,\n index: mouseoverPoint.value._vcPolylineIndex\n },\n viewer\n )\n }\n\n const clear = () => {\n renderDatas.value = []\n stop()\n }\n\n // expose public methods\n const publicMethods = {\n renderDatas,\n startNew,\n stop,\n clear,\n handleMouseClick,\n handleMouseMove,\n handleDoubleClick\n }\n Object.assign(instance.proxy, publicMethods)\n\n return () => {\n const { PolylineMaterialAppearance, Ellipsoid, createGuid, defaultValue, Cartesian3 } = Cesium\n\n const polylineOpts: VcGeometryPolylineProps = {\n ...props.polylineOpts,\n ellipsoid: defaultValue(props.polylineOpts?.ellipsoid, Ellipsoid.WGS84),\n vertexFormat: PolylineMaterialAppearance.VERTEX_FORMAT\n }\n props.clampToGround && delete polylineOpts.arcType\n const children: Array<VNode> = []\n\n const points = []\n computedRenderDatas.value.forEach((polyline, index) => {\n const positions = polyline.positions.slice()\n if (positions.length > 1) {\n // polyline\n polyline.loop && positions.push(positions[0])\n children.push(\n h(\n props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n {\n ...props.primitiveOpts,\n show: (polyline.show && props.primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing\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 // for VcMeasurementHorizontal\n const dashLineOpts: VcGeometryPolylineProps = {\n ...props.dashLineOpts,\n ellipsoid: defaultValue(props.dashLineOpts?.ellipsoid, Ellipsoid.WGS84),\n vertexFormat: PolylineMaterialAppearance.VERTEX_FORMAT\n }\n polyline.dashedLines?.forEach(dashedLine => {\n children.push(\n h(\n VcPrimitive,\n {\n ...props.dashLinePrimitiveOpts,\n show: (polyline.show && props.dashLinePrimitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n },\n () =>\n h(\n VcGeometryInstance,\n {\n id: createGuid()\n },\n () =>\n h(VcGeometryPolyline, {\n positions: dashedLine.positions,\n ...dashLineOpts\n })\n )\n )\n )\n })\n // points\n children.push(\n h(VcCollectionPoint, {\n enableMouseEvent: props.enableMouseEvent,\n show: polyline.show,\n points: polyline.positions.map((position, subIndex) => {\n let includes = false\n for (let i = 0; i < points.length; i++) {\n // 通视分析 的观察点会加载很多个 在这儿过滤下只显示一个\n Cartesian3.equals(position, points[i]) && (includes = true)\n }\n const show =\n (props.pointOpts?.show || props.editable || polyline.drawStatus === DrawStatus.Drawing) &&\n (cmpName === 'VcAnalysisSightline' && polyline.positions.length === 3 ? subIndex !== 1 : true) &&\n !includes\n\n if (cmpName === 'VcAnalysisSightline') {\n points.push(position)\n }\n return {\n position,\n id: createGuid(),\n _vcPolylineIndex: index, // for editor\n ...props.pointOpts,\n show\n }\n }),\n onMouseover: onMouseoverPoints,\n onMouseout: onMouseoutPoints,\n onReady: onVcCollectionPointReady\n })\n )\n // labels\n cmpName.includes('VcMeasurement') &&\n children.push(\n h(VcCollectionLabel, {\n enableMouseEvent: props.enableMouseEvent,\n show: polyline.show,\n labels: polyline.labels,\n onReady: onVcCollectionLabelReady\n })\n )\n // polygon\n if (positions.length > 2 && (cmpName.includes('Polygon') || cmpName.includes('Area'))) {\n children.push(\n h(VcPolygon, {\n positions: positions,\n onReady: onVcPrimitiveReady,\n clampToGround: props.clampToGround,\n ...props.polygonOpts,\n show: polyline.show && props.polygonOpts?.show\n })\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('polyline', key)\n },\n () =>\n h(\n VcTooltip,\n {\n ...editorOpts[key].tooltip\n },\n () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.drawing.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":[],"mappings":"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"}