diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js index cf58f8c..c1c148b 100644 --- a/src/Obj/Base/PolylineObject/index.js +++ b/src/Obj/Base/PolylineObject/index.js @@ -1460,39 +1460,41 @@ class PolylineObject extends Base { // let ray2 = this.sdk.viewer.camera.getPickRay(point2); // cartesian2 = this.sdk.viewer.scene.globe.pick(ray2, this.sdk.viewer.scene); // } - - var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2); - - var repeatX = distance / entity.polyline.width.getValue(); - // 根据地图缩放程度调整repeatX - var cameraHeight = this.sdk.viewer.camera.positionCartographic.height; - var boundingSphere = new Cesium.BoundingSphere( - new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标 - 500000 // 半径(距离) - ); + if (cartesian1 && cartesian2) { - // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率) - var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth; - var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight; + var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2); - // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小 - var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight) - // repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1); - if (groundResolution > 700) { - repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1); - } else { - repeatX = undefined; + var repeatX = distance / entity.polyline.width.getValue(); + // 根据地图缩放程度调整repeatX + var cameraHeight = this.sdk.viewer.camera.positionCartographic.height; + var boundingSphere = new Cesium.BoundingSphere( + new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标 + 500000 // 半径(距离) + ); + + + // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率) + var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth; + var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight; + + // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小 + var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight) + // repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1); + if (groundResolution > 700) { + repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1); + } else { + repeatX = undefined; + } + + if (this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) { + return repeatX + } else { + let sdk3d = get3DView() + let sdk3dEntity = sdk3d.viewer.entities.getById(this.options.id) + return sdk3dEntity.polyline.oriRepeatX + } } - - if (this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) { - return repeatX - } else { - let sdk3d = get3DView() - let sdk3dEntity = sdk3d.viewer.entities.getById(this.options.id) - return sdk3dEntity.polyline.oriRepeatX - } - } /** * 编辑框 diff --git a/src/Tools/index.js b/src/Tools/index.js index 0674a47..7716ae3 100644 --- a/src/Tools/index.js +++ b/src/Tools/index.js @@ -880,38 +880,38 @@ class Tools { let ray2 = this.sdk.viewer.camera.getPickRay(point2); let cartesian2 = this.sdk.viewer.scene.globe.pick(ray2, this.sdk.viewer.scene); + if (cartesian1 && cartesian2) { + var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2); - var distance = Cesium.Cartesian3.distance(cartesian1, cartesian2); + var repeatX = distance / entity.polyline.width.getValue(); + // 根据地图缩放程度调整repeatX + var cameraHeight = this.sdk.viewer.camera.positionCartographic.height; + var boundingSphere = new Cesium.BoundingSphere( + new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标 + 500000 // 半径(距离) + ); - var repeatX = distance / entity.polyline.width.getValue(); - // 根据地图缩放程度调整repeatX - var cameraHeight = this.sdk.viewer.camera.positionCartographic.height; - var boundingSphere = new Cesium.BoundingSphere( - new Cesium.Cartesian3(-1000000, 0, 0), // 中心点坐标 - 500000 // 半径(距离) - ); + // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率) + var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth; + var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight; - // 获取绘图缓冲区的宽度和高度(通常是屏幕的分辨率) - var drawingBufferWidth = this.sdk.viewer.canvas.clientWidth; - var drawingBufferHeight = this.sdk.viewer.canvas.clientHeight; + // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小 + var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight) + // repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1); + if (groundResolution > 700) { + repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1); + } else { + repeatX = undefined; + } - // 使用 getPixelSize 方法获取包围球在屏幕上的像素大小 - var groundResolution = this.sdk.viewer.scene.camera.getPixelSize(boundingSphere, drawingBufferWidth, drawingBufferHeight) - // repeatX *= groundResolution / cameraHeight / ((myImg.width / myImg.height * 5) + 1); - if (groundResolution > 700) { - repeatX *= groundResolution / cameraHeight / (options.space * (canvasEle.width / canvasEle.height * 5) + 1); - } else { - repeatX = undefined; + if (this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) { + return repeatX + } else { + let sdk3d = get3DView() + let sdk3dEntity = sdk3d.viewer.entities.getById(this.options.id) + return sdk3dEntity.polyline.oriRepeatX + } } - - if (this.sdk.viewer.scene.mode === Cesium.SceneMode.SCENE3D) { - return repeatX - } else { - let sdk3d = get3DView() - let sdk3dEntity = sdk3d.viewer.entities.getById(this.options.id) - return sdk3dEntity.polyline.oriRepeatX - } - } /*创建直箭头图片*/