diff --git a/ruoyi-ui/src/views/cesiumMap/index.vue b/ruoyi-ui/src/views/cesiumMap/index.vue index 34adfcb..55593ca 100644 --- a/ruoyi-ui/src/views/cesiumMap/index.vue +++ b/ruoyi-ui/src/views/cesiumMap/index.vue @@ -1695,12 +1695,6 @@ export default { msaaSamples: 8 }) this.viewer.cesiumWidget.creditContainer.style.display = "none" - // 启用 FXAA 后处理,进一步减轻线条锯齿感 - try { - if (this.viewer.scene.postProcessStages && this.viewer.scene.postProcessStages.fxaa) { - this.viewer.scene.postProcessStages.fxaa.enabled = true - } - } catch (e) { /* 部分 Cesium 版本可能无此 API */ } // 根据浏览器缩放比例提高渲染分辨率,减轻 80% 等缩放下线条锯齿 this.applyResolutionScale() this._resolutionScaleCleanup = this.setupResolutionScaleListener() @@ -3216,8 +3210,8 @@ export default { // 5. 重置状态,保持绘制状态以继续绘制 this.drawingPoints = []; }, - // 生成圆形的点,用于绘制边框线(提高分段数以减轻锯齿) - generateCirclePositions(center, radius, numPoints = 256) { + // 生成圆形的点,用于绘制边框线 + generateCirclePositions(center, radius, numPoints = 192) { const positions = []; const ellipsoid = this.viewer.scene.globe.ellipsoid; @@ -3293,8 +3287,8 @@ export default { } // 确保角度差不为零 angleDiff = Math.max(0.01, angleDiff); - // 计算扇形的顶点数(根据角度差确定,确保平滑;提高分段数以减轻锯齿) - const numPoints = Math.max(64, Math.ceil(angleDiff * 180 / Math.PI / 2)); + // 计算扇形的顶点数(根据角度差确定,确保平滑) + const numPoints = Math.max(16, Math.ceil(angleDiff * 180 / Math.PI / 3)); const angleStep = angleDiff / (numPoints - 1); // 生成扇形的顶点(顺时针方向) for (let i = 0; i < numPoints; i++) { @@ -3808,8 +3802,8 @@ export default { if (!this.viewer || !this.viewer.cesiumWidget) return const vv = window.visualViewport const scale = (vv && typeof vv.scale === 'number') ? vv.scale : 1 - // 始终使用至少 2.2 倍超采样,80% 缩放下再按比例提高(上限 2.5),显著减轻线条锯齿 - let resolutionScale = 2.2 + // 始终使用至少 2.0 倍超采样,80% 缩放下再按比例提高(上限 2.5),显著减轻锯齿 + let resolutionScale = 2.0 if (scale > 0 && scale < 1) { resolutionScale = Math.min(2.5, 1 / scale) if (resolutionScale < 2.0) resolutionScale = 2.0 @@ -3840,8 +3834,8 @@ export default { window.removeEventListener('resize', onResize) } }, - /** 按等经度/等纬度采样矩形边框,使在 2D 地图缩小时仍显示为直线(避免测地线弯弧);分段数提高以减轻锯齿 */ - getRectangleBorderPositions(rect, segmentsPerEdge = 64) { + /** 按等经度/等纬度采样矩形边框,使在 2D 地图缩小时仍显示为直线(避免测地线弯弧) */ + getRectangleBorderPositions(rect, segmentsPerEdge = 48) { const west = rect.west const south = rect.south const east = rect.east @@ -3866,8 +3860,8 @@ export default { } return positions }, - /** 在 2D 墨卡托下将一段线采样为“直线”(避免测地线弯弧);返回 Cartesian3 数组含起点到终点;分段数提高以减轻锯齿 */ - sampleSegmentStraightIn2D(cartesianA, cartesianB, numSegments = 64) { + /** 在 2D 墨卡托下将一段线采样为“直线”(避免测地线弯弧);返回 Cartesian3 数组含起点到终点 */ + sampleSegmentStraightIn2D(cartesianA, cartesianB, numSegments = 32) { const cgA = Cesium.Cartographic.fromCartesian(cartesianA) const cgB = Cesium.Cartographic.fromCartesian(cartesianB) const lonA = cgA.longitude @@ -3887,8 +3881,8 @@ export default { } return positions }, - /** 将折线/多边形顶点按 2D 墨卡托“直线”采样,使缩放小时仍显示为直;closed 为 true 表示多边形闭合;分段数提高以减轻锯齿 */ - getPolylinePositionsStraightIn2D(positions, closed = false, segmentsPerEdge = 64) { + /** 将折线/多边形顶点按 2D 墨卡托“直线”采样,使缩放小时仍显示为直;closed 为 true 表示多边形闭合 */ + getPolylinePositionsStraightIn2D(positions, closed = false, segmentsPerEdge = 32) { if (!positions || positions.length < 2) return positions const n = positions.length const result = []