diff --git a/src/Draw/draw.js b/src/Draw/draw.js index f057ac9..202b7b2 100644 --- a/src/Draw/draw.js +++ b/src/Draw/draw.js @@ -17,6 +17,7 @@ class Draw extends Tools { this.viewer = sdk.viewer this.entityHasCreated = false this.event = null + this._tipText = options.tipText this.tip = null this.points_ids = [] this.color = options.color || 'rgba(185,14,14,0.58)' @@ -24,6 +25,17 @@ class Draw extends Tools { this._sdk2D = get2DView() } + get tipText() { + return this._tipText || '' + } + + set tipText(text) { + this._tipText = text + if(this.tip) { + this.tip.set_text(text) + } + } + create_point(cartesian, viewer = this.viewer) { let id = this.randomString() viewer.entities.add( diff --git a/src/Draw/drawAssemble.js b/src/Draw/drawAssemble.js index 8f1a321..741e18d 100644 --- a/src/Draw/drawAssemble.js +++ b/src/Draw/drawAssemble.js @@ -72,7 +72,7 @@ class DrawAssemble extends Draw { // eslint-disable-next-line no-undef YJ.Measure.SetMeasureStatus(true) let into - this.tip = new MouseTip('左键确定,右键取消;', that.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键取消;', that.sdk) this.event = new MouseEvent(that.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id @@ -100,6 +100,9 @@ class DrawAssemble extends Draw { cb(null, array) this.end() } + else { + cb(cache_positions.length) + } }) this.event.mouse_move((movement, cartesian) => { if (into === '2D') { @@ -147,6 +150,22 @@ class DrawAssemble extends Draw { this.end() }) + this.event.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '2D') { + return + } + if (this.points_ids.length >= 1) { + if(this.points_ids.length === 1) { + this.viewer.entities.remove(this.assemblePolygon) + this.assemblePolygon = undefined + } + this.remove_entity(this.points_ids.pop()) //移除point + cache_positions.pop() + this.anchorpoints.pop() + cb(cache_positions.length) + } + }) + this.event.gesture_pinck_start((movement, cartesian) => { if (into === '2D') { return @@ -176,6 +195,7 @@ class DrawAssemble extends Draw { cache_positions.push(this.cartesian3Towgs84(cartesian)) // console.log(this.cartesian3Towgs84(cartesian)) this.points_ids.push(this.create_point(cartesian)) + cb(cache_positions.length) } } }) @@ -204,6 +224,9 @@ class DrawAssemble extends Draw { cb(null, array) this.end() } + else { + cb(cache_positions.length) + } }) this.event2D.mouse_move((movement, cartesian) => { if (into === '3D') { @@ -250,6 +273,21 @@ class DrawAssemble extends Draw { cb(null) this.end() }) + this.event2D.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '3D') { + return + } + if (this.points_ids.length >= 1) { + if(this.points_ids.length === 1) { + this.viewer.entities.remove(this.assemblePolygon) + this.assemblePolygon = undefined + } + this.remove_entity(this.points_ids.pop()) //移除point + cache_positions.pop() + this.anchorpoints.pop() + cb(cache_positions.length) + } + }) this.event2D.gesture_pinck_start((movement, cartesian) => { if (into === '3D') { @@ -280,6 +318,7 @@ class DrawAssemble extends Draw { cache_positions.push(this.cartesian3Towgs84(cartesian)) // console.log(this.cartesian3Towgs84(cartesian)) this.points_ids.push(this.create_point(cartesian, this._sdk2D.viewer)) + cb(cache_positions.length) } } }) diff --git a/src/Draw/drawAttackArrow.js b/src/Draw/drawAttackArrow.js index c9208e2..9f80392 100644 --- a/src/Draw/drawAttackArrow.js +++ b/src/Draw/drawAttackArrow.js @@ -48,7 +48,7 @@ export default class DrawAttackArrow extends Draw { let into YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键确定,右键结束;CTRL+右键撤销', this.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk) this.event = new MouseEvent(this.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id @@ -71,6 +71,7 @@ export default class DrawAttackArrow extends Draw { this.points_ids.push(this.create_point(cartesian)) cache_positions.push(pos84) isMove = false + cb(cache_positions.length) }) this.event.mouse_right((movement, cartesian) => { if(into === '2D') { @@ -110,6 +111,7 @@ export default class DrawAttackArrow extends Draw { if (this.points_ids.length > 1) { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() + cb(cache_positions.length) } }) diff --git a/src/Draw/drawCircle.js b/src/Draw/drawCircle.js index ac88b2c..f3ec0d0 100644 --- a/src/Draw/drawCircle.js +++ b/src/Draw/drawCircle.js @@ -21,7 +21,7 @@ export default class DrawCircle extends Draw { super.start() let into YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键开始,右键取消', this.sdk) + this.tip = new MouseTip(this.tipText || '左键开始,右键取消', this.sdk) this.event = new MouseEvent(this.sdk) let clickNum = 0 this.circle_id = this.randomString() //圆id @@ -37,7 +37,7 @@ export default class DrawCircle extends Draw { return } into = '3D' - this.tip.set_text('再次左键,完成绘制;右键取消') + this.tip.set_text(this.tipText || '再次左键,完成绘制;右键取消') clickNum++ if (clickNum === 1) { this.point_id = this.create_point(cartesian) @@ -45,6 +45,7 @@ export default class DrawCircle extends Draw { positions = this.createCircle(center, 0.01) cache_points.push(cartesian) createCirclePolygon() + cb(clickNum) } if (clickNum === 2) { radius_points = cache_points.concat(cartesian) @@ -77,7 +78,24 @@ export default class DrawCircle extends Draw { radius = this.computeDistance2([center, endpoint]) positions = this.createCircle(center, radius) } + }) + this.event.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '2D') { + return + } + if (this.point_id) { + this.remove_entity(this.circle_id) + this.remove_entity(this.point_id) + this.point_id = null + cache_points = [] + radius_points = [] + positions = [] + center = {} + endpoint = null + clickNum = 0 + cb(clickNum) + } }) this.event.gesture_pinck_start((movement, cartesian) => { @@ -92,7 +110,7 @@ export default class DrawCircle extends Draw { cb(false) } else { - this.tip.set_text('再次左键,完成绘制;右键取消') + this.tip.set_text(this.tipText || '再次左键,完成绘制;右键取消') clickNum++ if (clickNum === 1) { this.point_id = this.create_point(cartesian) @@ -104,6 +122,7 @@ export default class DrawCircle extends Draw { (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2 ) + cb(clickNum) } if (clickNum === 2) { radius_points = cache_points.concat(cartesian) @@ -124,7 +143,7 @@ export default class DrawCircle extends Draw { return } into = '2D' - this.tip.set_text('再次左键,完成绘制;右键取消') + this.tip.set_text(this.tipText || '再次左键,完成绘制;右键取消') clickNum++ if (clickNum === 1) { this.point_id = this.create_point(cartesian, this._sdk2D.viewer) @@ -132,6 +151,7 @@ export default class DrawCircle extends Draw { positions = this.createCircle(center, 0.01) cache_points.push(cartesian) createCirclePolygon(this._sdk2D.viewer) + cb(clickNum) } if (clickNum === 2) { radius_points = cache_points.concat(cartesian) @@ -179,7 +199,7 @@ export default class DrawCircle extends Draw { cb(false) } else { - this.tip.set_text('再次左键,完成绘制;右键取消') + this.tip.set_text(this.tipText || '再次左键,完成绘制;右键取消') clickNum++ if (clickNum === 1) { this.point_id = this.create_point(cartesian, this._sdk2D.viewer) @@ -191,6 +211,7 @@ export default class DrawCircle extends Draw { ((movement.position1.x + movement.position2.x) / 2) + this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2 ) + cb(clickNum) } if (clickNum === 2) { radius_points = cache_points.concat(cartesian) @@ -203,6 +224,24 @@ export default class DrawCircle extends Draw { } }) }) + this.event2D.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '3D') { + return + } + if (this.point_id) { + this.remove_entity(this.circle_id) + this.remove_entity(this.point_id) + this.point_id = null + cache_points = [] + radius_points = [] + positions = [] + center = {} + endpoint = null + clickNum = 0 + cb(clickNum) + } + }) + } let that = this diff --git a/src/Draw/drawElliptic.js b/src/Draw/drawElliptic.js index 58a6656..0cb288e 100644 --- a/src/Draw/drawElliptic.js +++ b/src/Draw/drawElliptic.js @@ -15,7 +15,7 @@ export default class DrawElliptic extends Draw { let into this.entity_ids = [] YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键开始,右键取消', this.sdk) + this.tip = new MouseTip(this.tipText || '左键开始,右键取消', this.sdk) this.event = new MouseEvent(this.sdk) let clickNum = 0 this.elliptic_id = this.randomString() //圆id @@ -34,7 +34,7 @@ export default class DrawElliptic extends Draw { let bearing = 0 this.event.mouse_left((movement, cartesian) => { - if(into === '2D') { + if (into === '2D') { return } into = '3D' @@ -59,8 +59,11 @@ export default class DrawElliptic extends Draw { cache_84_position[2] = pos84 } if (clickNum >= 3) { - this.end() - cb(null, { center, bearing, semiMajorAxis, semiMinorAxis }) + this.end() + cb(null, { center, bearing, semiMajorAxis, semiMinorAxis }) + } + else { + cb(clickNum) } // if (clickNum === 2) { // radius_points = cache_points.concat(cartesian) @@ -72,14 +75,14 @@ export default class DrawElliptic extends Draw { // } }) this.event.mouse_right((movement, cartesian) => { - if(into === '2D') { + if (into === '2D') { return } this.end() cb(false) }) this.event.mouse_move((movement, cartesian) => { - if(into === '2D') { + if (into === '2D') { return } this.tip.setPosition( @@ -94,11 +97,22 @@ export default class DrawElliptic extends Draw { } }) + this.event.mouse_right_keyboard_ctrl((movement, cartesian) => { + if (into === '2D') { + return + } + this.remove_entity(this.points_ids.pop()) + clickNum-- + cb(clickNum) + if(clickNum==0) { + this.remove_entity(this.elliptic_id) + } + }) if (!this._is2D && this._sdk2D) { this.event2D = new MouseEvent(this._sdk2D) this.event2D.mouse_left((movement, cartesian) => { - if(into === '3D') { + if (into === '3D') { return } into = '2D' @@ -111,7 +125,7 @@ export default class DrawElliptic extends Draw { let pos84 = this.cartesian3Towgs84(cartesian, this.viewer) center = pos84 cache_84_position = [pos84, pos84, pos84] - + calculateElliptic() createEllipticPolygon(this._sdk2D.viewer) } @@ -123,8 +137,11 @@ export default class DrawElliptic extends Draw { cache_84_position[2] = pos84 } if (clickNum >= 3) { - this.end() - cb(null, { center, bearing, semiMajorAxis, semiMinorAxis }) + this.end() + cb(null, { center, bearing, semiMajorAxis, semiMinorAxis }) + } + else { + cb(clickNum) } // if (clickNum === 2) { // radius_points = cache_points.concat(cartesian) @@ -136,14 +153,14 @@ export default class DrawElliptic extends Draw { // } }) this.event2D.mouse_right((movement, cartesian) => { - if(into === '3D') { + if (into === '3D') { return } this.end() cb(false) }) this.event2D.mouse_move((movement, cartesian) => { - if(into === '3D') { + if (into === '3D') { return } this.tip.setPosition( @@ -156,7 +173,7 @@ export default class DrawElliptic extends Draw { if (clickNum !== 0) { calculateElliptic() } - + }) } diff --git a/src/Draw/drawPincerArrow.js b/src/Draw/drawPincerArrow.js index e897057..fd78a23 100644 --- a/src/Draw/drawPincerArrow.js +++ b/src/Draw/drawPincerArrow.js @@ -47,7 +47,7 @@ export default class DrawPincerArrow extends Draw { super.start() let into YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键确定,右键取消;CTRL+右键撤销', this.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键取消;CTRL+右键撤销', this.sdk) this.event = new MouseEvent(this.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id @@ -74,6 +74,9 @@ export default class DrawPincerArrow extends Draw { this.end() cb(null, cache_positions, c) } + else { + cb(cache_positions.length) + } }) this.event.mouse_right((movement, cartesian) => { if(into === '2D') { @@ -102,6 +105,7 @@ export default class DrawPincerArrow extends Draw { if (this.points_ids.length > 1) { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() + cb(cache_positions.length) } }) @@ -155,6 +159,9 @@ export default class DrawPincerArrow extends Draw { this.end() cb(null, cache_positions, c) } + else { + cb(cache_positions.length) + } } }) }) @@ -183,6 +190,9 @@ export default class DrawPincerArrow extends Draw { this.end() cb(null, cache_positions, c) } + else { + cb(cache_positions.length) + } }) this.event2D.mouse_right((movement, cartesian) => { if(into === '3D') { @@ -211,6 +221,7 @@ export default class DrawPincerArrow extends Draw { if (this.points_ids.length > 1) { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() + cb(cache_positions.length) } }) @@ -264,6 +275,9 @@ export default class DrawPincerArrow extends Draw { this.end() cb(null, cache_positions, c) } + else { + cb(cache_positions.length) + } } }) }) diff --git a/src/Draw/drawPoint.js b/src/Draw/drawPoint.js index 868782b..35f2a0d 100644 --- a/src/Draw/drawPoint.js +++ b/src/Draw/drawPoint.js @@ -28,7 +28,7 @@ class DrawPoint extends Draw { } else { let car = undefined YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键确定,右键结束;', this.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键结束;', this.sdk) this.event = new MouseEvent(this.sdk) this.event.mouse_left((movement, cartesian) => { this.end() diff --git a/src/Draw/drawPolygon.js b/src/Draw/drawPolygon.js index af9780a..c458fe2 100644 --- a/src/Draw/drawPolygon.js +++ b/src/Draw/drawPolygon.js @@ -62,7 +62,7 @@ class DrawPolygon extends Draw { super.start() YJ.Measure.SetMeasureStatus(true) let into - this.tip = new MouseTip('左键确定,右键结束;CTRL+右键撤销', this.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk) this.event = new MouseEvent(this.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id @@ -88,6 +88,7 @@ class DrawPolygon extends Draw { cache_84_position.push(this.cartesian3Towgs84(cartesian, this.viewer)) // console.log(this.cartesian3Towgs84(cartesian)) this.points_ids.push(this.create_point(cartesian)) + cb(cache_positions.length) }) this.event.mouse_right((movement, cartesian) => { if(into === '2D') { @@ -122,6 +123,7 @@ class DrawPolygon extends Draw { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() cache_84_position.pop() + cb(cache_positions.length) } }) @@ -134,6 +136,7 @@ class DrawPolygon extends Draw { cache_positions.pop() cache_84_position.pop() this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) @@ -164,6 +167,7 @@ class DrawPolygon extends Draw { // console.log(this.cartesian3Towgs84(cartesian)) this.points_ids.push(this.create_point(cartesian)) this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) }) @@ -190,6 +194,7 @@ class DrawPolygon extends Draw { cache_84_position.push(this.cartesian3Towgs84(cartesian, this.viewer)) // console.log(this.cartesian3Towgs84(cartesian)) this.points_ids.push(this.create_point(cartesian, this._sdk2D.viewer)) + cb(cache_positions.length) }) this.event2D.mouse_right((movement, cartesian) => { if(into === '3D') { @@ -224,6 +229,7 @@ class DrawPolygon extends Draw { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() cache_84_position.pop() + cb(cache_positions.length) } }) @@ -236,6 +242,7 @@ class DrawPolygon extends Draw { cache_positions.pop() cache_84_position.pop() this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) @@ -266,6 +273,7 @@ class DrawPolygon extends Draw { // console.log(this.cartesian3Towgs84(cartesian)) this.points_ids.push(this.create_point(cartesian, this._sdk2D.viewer)) this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) }) diff --git a/src/Draw/drawPolyline.js b/src/Draw/drawPolyline.js index d44aa71..0c2deda 100644 --- a/src/Draw/drawPolyline.js +++ b/src/Draw/drawPolyline.js @@ -96,7 +96,7 @@ class DrawPolyline extends Draw { super.start() let into YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键确定,右键结束;CTRL+右键撤销', this.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk) this.event = new MouseEvent(this.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id @@ -137,6 +137,9 @@ class DrawPolyline extends Draw { cb(null, positions, smoothPos) this.end() } + else { + cb(cache_positions.length) + } }) this.event.mouse_right((movement, cartesian) => { if(into === '2D') { @@ -175,6 +178,7 @@ class DrawPolyline extends Draw { if (this.points_ids.length > 1) { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() + cb(cache_positions.length) } }) @@ -186,6 +190,7 @@ class DrawPolyline extends Draw { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) @@ -225,6 +230,7 @@ class DrawPolyline extends Draw { cache_positions.push(cartesian) this.points_ids.push(this.create_point(cartesian, this.viewer)) this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) }) @@ -287,6 +293,7 @@ class DrawPolyline extends Draw { if (this.points_ids.length > 1) { this.remove_entity(this.points_ids.pop()) //移除point cache_positions.pop() + cb(cache_positions.length) } }) @@ -337,6 +344,7 @@ class DrawPolyline extends Draw { cache_positions.push(cartesian) this.points_ids.push(this.create_point(cartesian, this._sdk2D.viewer)) this.positions = cache_positions.concat(cartesian) + cb(cache_positions.length) } }) }) diff --git a/src/Draw/drawRect.js b/src/Draw/drawRect.js index c24acbd..0678c08 100644 --- a/src/Draw/drawRect.js +++ b/src/Draw/drawRect.js @@ -58,7 +58,7 @@ class DrawRect extends Draw { super.start() let into YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键确定,右键取消', that.sdk) + this.tip = new MouseTip(this.tipText || '左键确定,右键取消', that.sdk) this.event = new MouseEvent(that.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id @@ -86,10 +86,10 @@ class DrawRect extends Draw { secondtPoint = wgs84 this.end() cb(null, that.rectObj, [firstPoint, secondtPoint]) - } - - + else { + cb(cnt) + } }) this.event.mouse_right((movement, cartesian) => { if(into === '2D') { @@ -113,6 +113,19 @@ class DrawRect extends Draw { } }) + this.event.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '2D') { + return + } + if (this.points_ids.length >= 1) { + this.remove_entity(this.points_ids.pop()) //移除point + this.polygonHasCreated = false + this.rect = [] + cnt-- + cb(cnt) + } + }) + this.event.gesture_pinck_start((movement, cartesian) => { if(into === '2D') { return @@ -145,7 +158,9 @@ class DrawRect extends Draw { secondtPoint = wgs84 this.end() cb(null, that.rectObj, [firstPoint, secondtPoint]) - + } + else { + cb(cnt) } } }) @@ -172,9 +187,10 @@ class DrawRect extends Draw { secondtPoint = wgs84 this.end() cb(null, that.rectObj, [firstPoint, secondtPoint]) - } - + else { + cb(cnt) + } }) this.event2D.mouse_right((movement, cartesian) => { @@ -198,6 +214,19 @@ class DrawRect extends Draw { this.calrect(firstPoint, wgs84) } }) + + this.event2D.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '3D') { + return + } + if (this.points_ids.length >= 1) { + this.remove_entity(this.points_ids.pop()) //移除point + this.polygonHasCreated = false + this.rect = [] + cnt-- + cb(cnt) + } + }) this.event2D.gesture_pinck_start((movement, cartesian) => { if(into === '3D') { @@ -231,7 +260,9 @@ class DrawRect extends Draw { secondtPoint = wgs84 this.end() cb(null, that.rectObj, [firstPoint, secondtPoint]) - + } + else { + cb(cnt) } } }) diff --git a/src/Draw/drawSector.js b/src/Draw/drawSector.js index 9b34c0f..2985733 100644 --- a/src/Draw/drawSector.js +++ b/src/Draw/drawSector.js @@ -26,7 +26,7 @@ class DrawSector extends Draw { super.start() let into YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('左键确认,右键取消', that.sdk) + this.tip = new MouseTip(this.tipText || '左键确认,右键取消', that.sdk) this.event = new MouseEvent(that.sdk) this._sector_id = null; //扇形 this._positions = []; //活动点 @@ -45,6 +45,7 @@ class DrawSector extends Draw { if (this._positions.length < 3) { this.points_ids.push(this.create_point(cartesian)); this._positions.push(this.cartesian3Towgs84(cartesian, this.viewer)); + cb(this._positions.length) } else { this.end() @@ -90,6 +91,20 @@ class DrawSector extends Draw { this.end() cb(null) }) + this.event.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '2D') { + return + } + if (this._positions.length >= 1) { + this.remove_entity(this.points_ids.pop()) + this.remove_entity(this.points_ids.pop()) + this.remove_entity(this._sector_id) + this._sector_id = undefined + this._positions.pop() + this._positions.pop() + cb(this._positions.length) + } + }) if (!this._is2D && this._sdk2D) { this.event2D = new MouseEvent(this._sdk2D) this.event2D.mouse_left((movement, cartesian) => { @@ -102,6 +117,7 @@ class DrawSector extends Draw { if (this._positions.length < 3) { this.points_ids.push(this.create_point(cartesian, this._sdk2D.viewer)); this._positions.push(this.cartesian3Towgs84(cartesian, this.viewer)); + cb(this._positions.length) } else { this.end() @@ -147,6 +163,20 @@ class DrawSector extends Draw { this.end() cb(null) }) + this.event2D.mouse_right_keyboard_ctrl((movement, cartesian) => { + if(into === '3D') { + return + } + if (this._positions.length >= 1) { + this.remove_entity(this.points_ids.pop()) + this.remove_entity(this.points_ids.pop()) + this.remove_entity(this._sector_id) + this._sector_id = undefined + this._positions.pop() + this._positions.pop() + cb(this._positions.length) + } + }) } } } diff --git a/src/Event/index.js b/src/Event/index.js index ca3987b..b6c9e34 100644 --- a/src/Event/index.js +++ b/src/Event/index.js @@ -185,6 +185,18 @@ export default class MouseEvent { }, Cesium.ScreenSpaceEventType.PINCH_MOVE) } + keyboard_ctrl_z(cb) { + // // this.sdk.viewer.canvas.tabindex = 0 + // // this.sdk.viewer.canvas.focus() + // let mapElm = this.sdk.viewer.canvas + // mapElm.addEventListener('keydown', function(e) { + // if (e.ctrlKey && e.key === 'z') { + // e.preventDefault(); + // console.log('编辑器内触发 Ctrl + Z'); + // } + // }); + } + destroy() { if (this.handler) this.handler.destroy() //关闭事件句柄 diff --git a/src/Measure/MeasureAngle/index.js b/src/Measure/MeasureAngle/index.js index 461eeb9..da6206b 100644 --- a/src/Measure/MeasureAngle/index.js +++ b/src/Measure/MeasureAngle/index.js @@ -9,7 +9,7 @@ import Measure from "../index"; class MeasureAngle extends Measure { constructor(sdk) { - super(sdk, { text: "左键开始,右键取消" }); + super(sdk, { text: "左键单击确定起点位置,右键单击取消夹角测量!" }); this.cachePositions = [] this.positions = [] this.arcPositions = [] @@ -113,6 +113,7 @@ class MeasureAngle extends Measure { if (this.ids.length === 0) { //需要创建一个线 this.line_id = this.createPolyline() + this.tip.set_text('左键单击确定角点位置,右键单击取消夹角测量!') } this.ids.push(this.create_point(car)) @@ -122,6 +123,7 @@ class MeasureAngle extends Measure { this.positions = this.cachePositions.concat(car) } if (this.ids.length === 2) { + this.tip.set_text('左键单击确定终点位置,完成夹角测量!') this.label_id = Cesium.createGuid() this.arc_id = Cesium.createGuid() let p = this.cartesian3Towgs84(car, this.viewer) diff --git a/src/Measure/MeasureAzimuth/index.js b/src/Measure/MeasureAzimuth/index.js index 1fa7c1b..382d1d0 100644 --- a/src/Measure/MeasureAzimuth/index.js +++ b/src/Measure/MeasureAzimuth/index.js @@ -7,7 +7,7 @@ class MeasureAzimuth extends Measure { * @description 方位角测量 * */ constructor(sdk) { - super(sdk, { text: "左键开始,右键取消" }); + super(sdk, { text: "左键单击确定控制点位置,右键单击取消方位角测量!" }); this.cachePositions = [] this.positions = [] this.arcPositions = [] @@ -80,6 +80,7 @@ class MeasureAzimuth extends Measure { //需要创建一个线 this.line_id = this.createPolyline() } + this.tip.set_text('左键单击确定控制点位置,完成方位角测量!') this.tip.setPosition(car, movement.position.x, movement.position.y) if (this.cachePositions.length) { this.positions = this.cachePositions.concat(car) diff --git a/src/Measure/MeasureDistance/index.js b/src/Measure/MeasureDistance/index.js index 52755af..23ba096 100644 --- a/src/Measure/MeasureDistance/index.js +++ b/src/Measure/MeasureDistance/index.js @@ -216,6 +216,7 @@ class MeasureDistance extends Measure { super.start() this.positions = [] this.cachePositions = [] + this.tip.set_text('左键单击确定控制点位置,右键单击取消贴地距离测量!') let leftEvent = async (movement, car) => { @@ -234,6 +235,7 @@ class MeasureDistance extends Measure { let cur_point = this.cartesian3Towgs84(car, this.viewer) let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer) this.cachePositions.push(car) + this.tip.set_text('左键单击确定控制点位置,右键单击完成贴地距离测量!') await this.computeDisByTowPoint(pre_p, cur_point) } else { this.cachePositions.push(car) diff --git a/src/Measure/MeasureHeight/index.js b/src/Measure/MeasureHeight/index.js index f107d70..afd4001 100644 --- a/src/Measure/MeasureHeight/index.js +++ b/src/Measure/MeasureHeight/index.js @@ -14,7 +14,7 @@ class MeasureHeight extends Measure { * @description 高度测量 * */ constructor(sdk) { - super(sdk, {text: "左键开始,右键取消"}); + super(sdk, {text: "左键单击确定控制点位置,右键单击取消垂直高度测量!"}); } static create_polygon(that) { @@ -120,6 +120,7 @@ class MeasureHeight extends Measure { this.ids.push(MeasureHeight.create_polygon(this)) this.ids.push(MeasureHeight.create_point(this, cartesian)) } + this.tip.set_text('左键单击确定终点位置,完成垂直高度测量!') count++ this.tip.setPosition(cartesian, movement.position.x, movement.position.y) if (count === 2) { @@ -131,7 +132,7 @@ class MeasureHeight extends Measure { this.circleRadius = this.computeDistance2([this.firstpoint, cur_point]) this.height = Number((cur_point.alt - this.firstpoint.alt).toFixed(2)) this.text = "相对高度:" + this.height + " 米" - this.tip.set_text("左键完成,右键取消;半径:" + this.circleRadius + " 米") + // this.tip.set_text("左键完成,右键取消;半径:" + this.circleRadius + " 米") } this.ids.push(MeasureHeight.create_point(this, cartesian, {label: {text: "半径:" + this.circleRadius + " 米"}})) this.end() @@ -148,7 +149,7 @@ class MeasureHeight extends Measure { this.circleRadius = this.computeDistance2([this.firstpoint, cur_point]) this.height = Number((cur_point.alt - this.firstpoint.alt).toFixed(2)) this.text = "相对高度:" + this.height + " 米" - this.tip.set_text("左键完成,右键取消;半径:" + this.circleRadius + " 米") + // this.tip.set_text("左键完成,右键取消;半径:" + this.circleRadius + " 米") } }) this.event.mouse_right((movement, cartesian) => { diff --git a/src/Measure/MeasureProjectionDistance/index.js b/src/Measure/MeasureProjectionDistance/index.js index 3c97167..d167a02 100644 --- a/src/Measure/MeasureProjectionDistance/index.js +++ b/src/Measure/MeasureProjectionDistance/index.js @@ -158,6 +158,7 @@ class MeasureProjectionDistance extends Measure { super.start() this.positions = [] this.cachePositions = [] + this.tip.set_text('左键单击确定控制点位置,右键单击取消投影距离测量!') let leftEvent = async (movement, car) => { if (this.ids.length === 0) { @@ -178,6 +179,7 @@ class MeasureProjectionDistance extends Measure { let text = "投影距离:" + cur_len + " 米" this.ids.push(MeasureProjectionDistance.create_point(car, {label: this.getLabel(text)}, this)) this.cachePositions.push(car) + this.tip.set_text('左键单击确定控制点位置,右键单击完成投影距离测量!') } else { this.cachePositions.push(car) this.ids.push(MeasureProjectionDistance.create_point(car, {show: false}, this)) @@ -212,13 +214,13 @@ class MeasureProjectionDistance extends Measure { this.event.mouse_move((movement, car) => { this.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y) this.positions = this.cachePositions.concat(car) - if (this.cachePositions.length) { - let cur_point = this.cartesian3Towgs84(car, this.viewer) - let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer) - let cur_len = this.computeDistance2([cur_point, pre_p]) - let text = "当前投影距离:" + cur_len + " 米" - this.tip.set_text(text) - } + // if (this.cachePositions.length) { + // let cur_point = this.cartesian3Towgs84(car, this.viewer) + // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer) + // let cur_len = this.computeDistance2([cur_point, pre_p]) + // let text = "当前投影距离:" + cur_len + " 米" + // this.tip.set_text(text) + // } }) this.event.mouse_right(rightEvent) this.event.mouse_right_keyboard_ctrl((movement, car) => { diff --git a/src/Measure/MeasureSlopeDistance/index.js b/src/Measure/MeasureSlopeDistance/index.js index 602b3b9..18d9bfb 100644 --- a/src/Measure/MeasureSlopeDistance/index.js +++ b/src/Measure/MeasureSlopeDistance/index.js @@ -160,6 +160,7 @@ class MeasureSlopeDistance extends Measure { super.start() this.positions = [] this.cachePositions = [] + this.tip.set_text('左键单击确定控制点位置,右键单击取消坡度测量!') let leftEvent = (movement, car) => { if (this.ids.length === 0) { @@ -179,6 +180,7 @@ class MeasureSlopeDistance extends Measure { //计算坡度 this.computeAngle(pre_p, cur_point) } + this.tip.set_text('左键单击确定控制点位置,右键单击完成坡度测量!') } else { this.cachePositions.push(car) this.ids.push(MeasureSlopeDistance.create_point(car, {}, this)) @@ -232,18 +234,18 @@ class MeasureSlopeDistance extends Measure { } this.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y) this.positions = this.cachePositions.concat(cartesian) - if (this.cachePositions.length) { - let cur_point = this.cartesian3Towgs84(cartesian, this.viewer) - let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer) - let d1 = this.computeDistance2([pre_p, cur_point]) - let d2 = Math.abs(pre_p.alt - cur_point.alt) - let d3 = Math.sqrt(d1 * d1 + d2 * d2) - let cosAlpha = d1 / d3 - let acos = Math.acos(cosAlpha) - let angle = this.radiansToDegrees(acos) - let label = "坡度:" + angle.toFixed(2) + "°" - this.tip.set_text(label) - } + // if (this.cachePositions.length) { + // let cur_point = this.cartesian3Towgs84(cartesian, this.viewer) + // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer) + // let d1 = this.computeDistance2([pre_p, cur_point]) + // let d2 = Math.abs(pre_p.alt - cur_point.alt) + // let d3 = Math.sqrt(d1 * d1 + d2 * d2) + // let cosAlpha = d1 / d3 + // let acos = Math.acos(cosAlpha) + // let angle = this.radiansToDegrees(acos) + // let label = "坡度:" + angle.toFixed(2) + "°" + // this.tip.set_text(label) + // } }) this.event.mouse_right(rightEvent) this.event.mouse_right_keyboard_ctrl((movement, car) => { diff --git a/src/Measure/MeasureTdArea/index.js b/src/Measure/MeasureTdArea/index.js index 6bbe33e..57cd864 100644 --- a/src/Measure/MeasureTdArea/index.js +++ b/src/Measure/MeasureTdArea/index.js @@ -80,6 +80,7 @@ class MeasureTdArea extends Measure { this.text = "" this.center = new Cesium.Cartesian3() this.cachePositions = [] + this.tip.set_text('左键单击确定控制点位置,右键单击取消贴地面积测量!') let height = 0 let text @@ -96,6 +97,10 @@ class MeasureTdArea extends Measure { this.positions = this.cachePositions.concat({ ...car }) this.tip.setPosition({ ...car }, movement.position.x, movement.position.y) + + if (this.positions.length > 3) { + this.tip.set_text('左键单击确定控制点位置,右键单击完成贴地面积测量!') + } } let rightEvent = (movement, car) => { this.positions = this.cachePositions diff --git a/src/Measure/MeasureTriangle/index.js b/src/Measure/MeasureTriangle/index.js index 61ed3e6..89ddbcc 100644 --- a/src/Measure/MeasureTriangle/index.js +++ b/src/Measure/MeasureTriangle/index.js @@ -14,7 +14,7 @@ class MeasureTriangle extends Measure { * @description 三角测量 * */ constructor(sdk) { - super(sdk); + super(sdk, {text: "左键单击确定控制点位置,右键单击取消三角测量!"}); } cal_center(positions) { @@ -170,6 +170,7 @@ class MeasureTriangle extends Measure { let leftEvent = (movement, car) => { xiebian_line_positions.push(car) + this.tip.set_text('左键单击确定终点位置,完成三角测量!') if (this.ids.length === 0) {//创建三角形 first_point = this.cartesian3Towgs84(car, this.viewer) this.createPolyline(shuiping_line_id,) diff --git a/src/Measure/MeasureTyArea/index.js b/src/Measure/MeasureTyArea/index.js index 1b5d5ba..5a8b7f8 100644 --- a/src/Measure/MeasureTyArea/index.js +++ b/src/Measure/MeasureTyArea/index.js @@ -85,6 +85,7 @@ class MeasureTyArea extends Measure { this.ids = [] this.positions = [] this.text = "" + this.tip.set_text('左键单击确定控制点位置,右键单击取消投影面积测量!') this.center = new Cesium.Cartesian3() this.cachePositions = [] let height = 0 @@ -117,6 +118,9 @@ class MeasureTyArea extends Measure { lastcneter = this.center this.text = "投影面积:" + area + " ㎡" } + if(this.positions.length > 3) { + this.tip.set_text('左键单击确定控制点位置,右键单击完成投影面积测量!') + } } this.event.mouse_left(leftEvent) this.event.mouse_move((movement, car) => { diff --git a/src/Obj/Analysis/CircleViewShed/index.js b/src/Obj/Analysis/CircleViewShed/index.js index 65d72a4..bb33b64 100644 --- a/src/Obj/Analysis/CircleViewShed/index.js +++ b/src/Obj/Analysis/CircleViewShed/index.js @@ -38,19 +38,14 @@ class CircleViewShed extends Tools { this.tools = new Tools(sdk) YJ.Analysis.AnalysesResults.push(this) // CircleViewShed.edit(this) - let terrainAvailability = this.viewer.terrainProvider.availability; - if (!terrainAvailability) { - this.tools.message({ type: 'warning', text: '未加载地形数据!' }) - // window.ELEMENT && window.ELEMENT.Message({ - // message: '未加载地形数据!', - // type: 'warning', - // duration: 1500 - // }); - return - } + // CircleViewShed.create(this) } draw() { + let terrainAvailability = this.viewer.terrainProvider.availability; + if (!terrainAvailability) { + return '未加载地形数据!' + } CircleViewShed.create(this) } @@ -115,13 +110,7 @@ class CircleViewShed extends Tools { static create(that) { let terrainAvailability = that.viewer.terrainProvider.availability; if (!terrainAvailability) { - that.tools.message({ type: 'warning', text: '未加载地形数据!' }) - // window.ELEMENT && window.ELEMENT.Message({ - // message: '未加载地形数据!', - // type: 'warning', - // duration: 1500 - // }); - return + return '未加载地形数据!' } let count = 0 if (!YJ.Measure.GetMeasureStatus()) { @@ -129,10 +118,20 @@ class CircleViewShed extends Tools { that._DialogObject.close() that._DialogObject = null } - let Draw = new YJ.Draw.DrawCircle(that.sdk) + let Draw = new YJ.Draw.DrawCircle(that.sdk, { + tipText: '左键单击确定中心点位置,右键单击取消区域绘制!CTRL+右键单击撤销' + }) Draw.start(async (a, options) => { // that.center = options.center if (!options) { + switch (a) { + case 0: + Draw.tipText = '左键单击确定中心点位置,右键单击取消区域绘制!CTRL+右键单击撤销' + break; + case 1: + Draw.tipText = '左键单击确定圆形视域半径,完成圆形视域分析!' + break; + } return } that.radius = options.radius @@ -152,47 +151,47 @@ class CircleViewShed extends Tools { } } - static async edit(that) { - if (that._DialogObject && that._DialogObject.close) { - that._DialogObject.close() - that._DialogObject = null - } - that._DialogObject = await new Dialog(that.sdk.viewer._container, { - title: '圆形视域分析', - left: '180px', - top: '100px', - closeCallBack: () => { - that.Dialog.closeCallBack && that.Dialog.closeCallBack() - YJ.Measure.SetMeasureStatus(false) - } - }) - await that._DialogObject.init() - that._DialogObject._element.body.className = - that._DialogObject._element.body.className + ' circle-view-shed' - let contentElm = document.createElement('div') - contentElm.innerHTML = html() - that._DialogObject.contentAppChild(contentElm) + // static async edit(that) { + // if (that._DialogObject && that._DialogObject.close) { + // that._DialogObject.close() + // that._DialogObject = null + // } + // that._DialogObject = await new Dialog(that.sdk.viewer._container, { + // title: '圆形视域分析', + // left: '180px', + // top: '100px', + // closeCallBack: () => { + // that.Dialog.closeCallBack && that.Dialog.closeCallBack() + // YJ.Measure.SetMeasureStatus(false) + // } + // }) + // await that._DialogObject.init() + // that._DialogObject._element.body.className = + // that._DialogObject._element.body.className + ' circle-view-shed' + // let contentElm = document.createElement('div') + // contentElm.innerHTML = html() + // that._DialogObject.contentAppChild(contentElm) - let drawElm = document.createElement('button') - drawElm.innerHTML = '绘制' - drawElm.addEventListener('click', () => { - let terrainAvailability = that.viewer.terrainProvider.availability; - if (!terrainAvailability) { - window.ELEMENT && window.ELEMENT.Message({ - message: '未加载地形数据!', - type: 'warning', - duration: 1500 - }); - return - } - CircleViewShed.create(that) - }) - that._DialogObject.footAppChild(drawElm) + // let drawElm = document.createElement('button') + // drawElm.innerHTML = '绘制' + // drawElm.addEventListener('click', () => { + // let terrainAvailability = that.viewer.terrainProvider.availability; + // if (!terrainAvailability) { + // window.ELEMENT && window.ELEMENT.Message({ + // message: '未加载地形数据!', + // type: 'warning', + // duration: 1500 + // }); + // return + // } + // CircleViewShed.create(that) + // }) + // that._DialogObject.footAppChild(drawElm) - let all_elm = contentElm.getElementsByTagName('*') - that._EventBinding.on(that, all_elm) - that._elms = that._EventBinding.element - } + // let all_elm = contentElm.getElementsByTagName('*') + // that._EventBinding.on(that, all_elm) + // that._elms = that._EventBinding.element + // } analyse() { // this.destroy() diff --git a/src/Obj/Analysis/CutFill/index.js b/src/Obj/Analysis/CutFill/index.js index e5d9a12..64d714c 100644 --- a/src/Obj/Analysis/CutFill/index.js +++ b/src/Obj/Analysis/CutFill/index.js @@ -28,7 +28,7 @@ class CutFillAnalysis { } this.entities = [] this.tools = new Tools(this.sdk) - this.Draw = new DrawPolygon(this.sdk) + this.Draw = new DrawPolygon(this.sdk, { tipText: '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点' }) YJ.Analysis.AnalysesResults.push(this) // CutFillAnalysis.EditBox(this) } @@ -37,11 +37,12 @@ class CutFillAnalysis { this.clean() this.Draw.start((a, positions) => { if (!positions || positions.length < 3) { - let _error = '最少需要三个坐标!' - this.tools.message({ - text: _error, - type: 'warning', - }); + if (a >= 3) { + this.Draw.tipText = '左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销' + } + else { + this.Draw.tipText = '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点' + } return } let fromDegreesArray = [] diff --git a/src/Obj/Analysis/Profile/index.js b/src/Obj/Analysis/Profile/index.js index a734383..b59b28c 100644 --- a/src/Obj/Analysis/Profile/index.js +++ b/src/Obj/Analysis/Profile/index.js @@ -26,7 +26,7 @@ class Profile extends Draw { console.warn('上一次测量未结束') } else { YJ.Measure.SetMeasureStatus(true) - that.tip = new MouseTip('左键确定,右键取消', that.sdk) + that.tip = new MouseTip('左键点击确定起点位置,右键点击取消绘制!', that.sdk) that.event = new MouseEvent(that.sdk) that.positions = [] that.points_ids = [] //存放左键点击时临时添加的point的id @@ -35,6 +35,7 @@ class Profile extends Draw { let car = undefined that.event.mouse_left(async (movement, cartesian) => { try { + that.tip.setText('左键点击确定终点位置,右键点击取消绘制!') if (!that.entityHasCreated) { Profile.create_polyline(that) } diff --git a/src/Obj/Analysis/SlopeAspect/index.js b/src/Obj/Analysis/SlopeAspect/index.js index a630904..ad64702 100644 --- a/src/Obj/Analysis/SlopeAspect/index.js +++ b/src/Obj/Analysis/SlopeAspect/index.js @@ -10,20 +10,18 @@ class SlopeAspect extends Tools { constructor(sdk) { super(sdk) this.viewer = sdk.viewer; - + let terrainAvailability = this.viewer.terrainProvider.availability; + if (!terrainAvailability) { + this.error = '未加载地形数据!' + return + } this.event this.result = []; //存储创建的坡度分析结果,primitive集合 this.handler = undefined; this.toolTip = ""; this.tools = new Tools(sdk) - let terrainAvailability = this.viewer.terrainProvider.availability; - if (!terrainAvailability) { - this.error = '未加载地形数据!' - this.tools.message({ type: 'warning', text: this.error }) - return - } YJ.Analysis.AnalysesResults.push(this) - this.Draw = new DrawPolygon(this.sdk) + this.Draw = new DrawPolygon(this.sdk, { tipText: '左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点' }) // this.createNew4Distance() this.createNew4Num(50) } @@ -36,8 +34,13 @@ class SlopeAspect extends Tools { const $this = this; const viewer = this.viewer; this.Draw.start((e, positions) => { - if (!positions || positions.length <= 2) { - this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' }) + if (!positions || positions.length < 3) { + if (e >= 3) { + this.Draw.tipText = '左键单击确定控制点位置,右键单击结束坡度分析! CTRL+右键单击撤销' + } + else { + this.Draw.tipText = '左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点' + } return } let boundary = []; @@ -66,8 +69,13 @@ class SlopeAspect extends Tools { createNew4Num(n) { let num = n this.Draw.start((e, positions) => { - if (!positions || positions.length <= 2) { - this.tools.message({ type: 'warning', text: '至少拥有三个坐标位置!' }) + if (!positions || positions.length < 3) { + if (e >= 3) { + this.Draw.tipText = '左键单击确定控制点位置,右键单击结束坡度分析! CTRL+右键单击撤销' + } + else { + this.Draw.tipText = '左键单击确定控制点位置,右键单击取消坡度分析! CTRL+右键单击撤销上一个控制点' + } return } let boundary = []; diff --git a/src/Obj/Analysis/Submerge/index.js b/src/Obj/Analysis/Submerge/index.js index 0eb7f21..108e309 100644 --- a/src/Obj/Analysis/Submerge/index.js +++ b/src/Obj/Analysis/Submerge/index.js @@ -21,7 +21,7 @@ class Submerge extends Tools { this.currentWaterLaver this.color = '#00d9ff66' this.Dialog = _Dialog - this.Draw = new DrawPolygon(this.sdk) + this.Draw = new DrawPolygon(this.sdk, { tipText: '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点' }) this.positions this.status = true this.area = 0 @@ -36,23 +36,15 @@ class Submerge extends Tools { static create(that) { that.Draw.start((a, positions) => { if (!positions || positions.length < 3) { - let _error = '至少需要三个坐标!' - that.tools.message({ - text: _error, - type: 'warning', - }); + if (a >= 3) { + that.Draw.tipText = '左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销' + } + else { + that.Draw.tipText = '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点' + } return } that.destroy() - if (!positions || positions.length == 0) { - that.positions = [] - that._positions = [] - that.options.minWaterLevel = 0 - that.options.maxWaterLevel = 0 - that.options.waterVolume = 0 - that.area = 0 - return - } let fromDegreesArray = [] that.positions = positions that._positions = positions diff --git a/src/Obj/Base/BaseSource/BaseTileset/index.js b/src/Obj/Base/BaseSource/BaseTileset/index.js index 4989ae5..9dfaba2 100644 --- a/src/Obj/Base/BaseSource/BaseTileset/index.js +++ b/src/Obj/Base/BaseSource/BaseTileset/index.js @@ -488,14 +488,6 @@ class BaseTileset extends BaseSource { * */ set rotationEditing(status) { if (!this.tileset.root.transform) { - if (window.ELEMENT) { - window.ELEMENT.Message.closeAll(); - window.ELEMENT.Message({ - message: '该模型不支持移动和旋转!', - type: 'warning', - duration: 1500 - }); - } console.warn('该模型不支持移动和旋转!') return } @@ -534,14 +526,6 @@ class BaseTileset extends BaseSource { return } if (!this.tileset.root.transform) { - if (window.ELEMENT) { - window.ELEMENT.Message.closeAll(); - window.ELEMENT.Message({ - message: '该模型不支持移动和旋转!', - type: 'warning', - duration: 1500 - }); - } console.warn('该模型不支持移动和旋转!') return } diff --git a/src/Obj/Base/Graffiti/index.js b/src/Obj/Base/Graffiti/index.js index 540b315..90ffd5f 100644 --- a/src/Obj/Base/Graffiti/index.js +++ b/src/Obj/Base/Graffiti/index.js @@ -125,13 +125,14 @@ class Graffiti extends Draw { start() { let _this = this if (YJ.Measure.GetMeasureStatus()) { - this.tools.message({ type: 'warning', text: '上一次测量未结束' }) + this._error = '上一次测量未结束' } else { + this._error = null let viewer = this.sdk.viewer CameraController(this.sdk, false) super.start() YJ.Measure.SetMeasureStatus(true) - this.tip = new MouseTip('长按左键,拖动鼠标进行涂鸦,右键结束涂鸦', this.sdk) + this.tip = new MouseTip('左键按下开始,松开完成,右键单击完成绘制', this.sdk) this.event = new MouseEvent(this.sdk) this.positions = [] this.points_ids = [] //存放左键点击时临时添加的point的id diff --git a/src/Obj/Base/PolygonObject/index.js b/src/Obj/Base/PolygonObject/index.js index 7b3545a..dfcfe49 100644 --- a/src/Obj/Base/PolygonObject/index.js +++ b/src/Obj/Base/PolygonObject/index.js @@ -1500,7 +1500,7 @@ class PolygonObject extends Base { fromDegreesArray = [] this.heightMode = this.heightMode - if(this._positionEditingCallback) { + if (this._positionEditingCallback) { this._positionEditingCallback() this._positionEditingCallback = null } @@ -1700,19 +1700,20 @@ class PolygonObject extends Base { return this._areaChangeCallBack } - set areaChangeCallBack (cd) { + set areaChangeCallBack(cd) { this._areaChangeCallBack = cd } nodeEdit(cb = () => { }) { this.positionEditing = false setTimeout(() => { + let previous = [...this.options.positions] if (YJ.Measure.GetMeasureStatus()) { cb('上一次测量未结束') } else { YJ.Measure.SetMeasureStatus(true) this.picking = false - this.tip = new MouseTip('请选择一个顶点,右键取消', this.sdk) + this.tip = new MouseTip('左键单击选择控制点,右键单击取消编辑', this.sdk) this.event = new MouseEvent(this.sdk) this.nodePoints = [] let _this = this @@ -1848,7 +1849,7 @@ class PolygonObject extends Base { selectPoint = pick.id this.nodePoints.splice(pick.id.index, 1) this.sdk.viewer.entities.remove(pick.id) - this.tip.set_text('左键开始,右键结束,CTRL+右键撤销') + this.tip.set_text('左键单击确定控制点位置,右键单击结束编辑! CTRL+右键单击撤销上一个控制点') originalPosition = this.cartesian3Towgs84( selectPoint.position.getValue(), this.sdk.viewer @@ -1863,6 +1864,51 @@ class PolygonObject extends Base { if (added) { this.options.positions.splice(selectPoint.index, 1) } + if (this.options.positions.length < 3) { + this.options.positions = [...previous] + let positions = this.options.positions + let fromDegreesArray = [] + for (let i = 0; i < positions.length; i++) { + fromDegreesArray.push(positions[i].lng, positions[i].lat) + } + this.positions = Cesium.Cartesian3.fromDegreesArray( + fromDegreesArray + ) + newpositions = Cesium.Cartesian3.fromDegreesArray(fromDegreesArray) + this.previous = { + positions: [...this.positions] + } + + let objectsToExclude = [...this.sdk.viewer.entities.values] + let positions2 = [[]] + for (let i = 0; i < this.options.positions.length; i++) { + positions2[0].push([ + this.options.positions[i].lng, + this.options.positions[i].lat + ]) + } + positions2[0].push([ + this.options.positions[0].lng, + this.options.positions[0].lat + ]) + let polygon = turf.polygon(positions2) + let centroid = turf.centroid(polygon) + this + .getClampToHeight({ + lng: centroid.geometry.coordinates[0], + lat: centroid.geometry.coordinates[1] + }, objectsToExclude) + .then(height => { + this.label.position = [ + centroid.geometry.coordinates[0], + centroid.geometry.coordinates[1], + height + ] + }) + + this.areaByMeter = this.computeArea(this.options.positions) + this.areaChangeCallBack && this.areaChangeCallBack() + } cb(null, this.options.positions) } @@ -2018,6 +2064,9 @@ class PolygonObject extends Base { } } this.nodePoints.pop() + if(this.options.positions.length < 3) { + this.tip.set_text('左键单击确定控制点位置,右键单击取消编辑! CTRL+右键单击撤销上一个控制点') + } } }) diff --git a/src/Obj/Base/TextObject/StandText/index.js b/src/Obj/Base/TextObject/StandText/index.js index 9656f1d..a1b5906 100644 --- a/src/Obj/Base/TextObject/StandText/index.js +++ b/src/Obj/Base/TextObject/StandText/index.js @@ -595,7 +595,7 @@ class StandText extends Base { selectPoint = pick.id this.nodePoints.splice(pick.id.index, 1) this.sdk.viewer.entities.remove(pick.id) - this.tip.set_text('左键开始,右键结束,CTRL+右键撤销') + this.tip.set_text('左键单击确认顶点位置,右键单击结束,CTRL+右键撤销') originalPosition = this.cartesian3Towgs84(cartesian, this.sdk.viewer) this.entity.wall.positions = new Cesium.CallbackProperty(function () { return Cesium.Cartesian3.fromDegreesArray(fromDegreesArray) @@ -615,6 +615,15 @@ class StandText extends Base { if(isAdd) { this.options.positions.splice(selectPoint.index, 1) } + if (!that.options.positions || that.options.positions.length < 2) { + console.warn('最少需要两个坐标!') + window.ELEMENT && window.ELEMENT.Message({ + message: '最少需要两个坐标!', + type: 'warning', + duration: 1500 + }); + that.options.positions = [...previous] + } cb(null, this.options.positions) } let positions = this.options.positions