Compare commits
4 Commits
08bdd515a9
...
2e301cd0fc
Author | SHA1 | Date | |
---|---|---|---|
2e301cd0fc | |||
d1bcba6a13 | |||
6729b60806 | |||
7be9a6a41d |
@ -59,12 +59,17 @@ export default class DrawAttackArrow extends Draw {
|
||||
return
|
||||
}
|
||||
into = '3D'
|
||||
let pos84 = this.cartesian3Towgs84(cartesian, this.viewer)
|
||||
let lastPos84 = cache_positions[cache_positions.length - 1]
|
||||
if(lastPos84 && (lastPos84.lng === pos84.lng && lastPos84.lat === pos84.lat)) {
|
||||
return
|
||||
}
|
||||
if (!this.entityHasCreated) {
|
||||
let polyline_id = DrawAttackArrow.create_arrow_polygon(this)
|
||||
this.points_ids.push(polyline_id)
|
||||
}
|
||||
this.points_ids.push(this.create_point(cartesian))
|
||||
cache_positions.push(this.cartesian3Towgs84(cartesian, this.viewer))
|
||||
cache_positions.push(pos84)
|
||||
isMove = false
|
||||
})
|
||||
this.event.mouse_right((movement, cartesian) => {
|
||||
|
@ -4,18 +4,38 @@
|
||||
import Tools from "../../Tools";
|
||||
import { getCoordinateSystem } from "../../Global/global";
|
||||
import MouseEvent from '../../Event/index'
|
||||
import { getSdk as get2DSdk } from '../../Global/MultiViewportMode'
|
||||
import { getSdk as getSplitScreenSdk } from "../../Global/SplitScreen";
|
||||
|
||||
let event
|
||||
let event2
|
||||
let MouseCoordinateElm
|
||||
let requestAnimationFrameEventId
|
||||
let tmovement
|
||||
let targetSdk
|
||||
let sdkD
|
||||
|
||||
const MouseCoordinate = (sdk, status) => {
|
||||
if (!sdk || !sdk.viewer) {
|
||||
return
|
||||
}
|
||||
targetSdk = sdk
|
||||
sdkD = get2DSdk().sdkD
|
||||
if(!sdkD) {
|
||||
sdkD = getSplitScreenSdk().sdkD
|
||||
}
|
||||
|
||||
let tools = new Tools(sdk)
|
||||
if (status) {
|
||||
if (event) {
|
||||
event.destroy()
|
||||
}
|
||||
if (event2) {
|
||||
event2.destroy()
|
||||
event2 = undefined
|
||||
}
|
||||
event = new MouseEvent(sdk)
|
||||
tmovement = null
|
||||
let position = {
|
||||
x: '',
|
||||
y: '',
|
||||
@ -40,22 +60,60 @@ const MouseCoordinate = (sdk, status) => {
|
||||
contentElm.style['background-size'] = `200% 200%`;
|
||||
MouseCoordinateElm = contentElm
|
||||
}
|
||||
sdk.viewer._element.appendChild(contentElm)
|
||||
let tmovement
|
||||
sdk.viewer.container.appendChild(contentElm)
|
||||
|
||||
event.mouse_move((movement, cartesian) => {
|
||||
tmovement = { ...movement }
|
||||
targetSdk = sdk
|
||||
tmovement = { ...movement.endPosition }
|
||||
})
|
||||
|
||||
const getPosition = () => {
|
||||
if(!tmovement) {
|
||||
if (!targetSdk) {
|
||||
return
|
||||
}
|
||||
let canvas = sdk.viewer._element.getElementsByTagName('canvas')[0]
|
||||
let left = tmovement.endPosition.x;
|
||||
let top = tmovement.endPosition.y;
|
||||
let cartesian = event.getcartesian(tmovement)
|
||||
contentElm.style['background-position-x'] = `${-canvas.width + left + 4}px`;
|
||||
contentElm.style['background-position-y'] = `${-canvas.height + top - 2}px`;
|
||||
sdkD = get2DSdk().sdkD
|
||||
if(!sdkD) {
|
||||
sdkD = getSplitScreenSdk().sdkD
|
||||
}
|
||||
if (!event2 && sdkD) {
|
||||
event2 = new MouseEvent(sdkD)
|
||||
event2.mouse_move((movement, cartesian) => {
|
||||
targetSdk = sdkD
|
||||
tmovement = { x: movement.endPosition.x, y: movement.endPosition.y }
|
||||
})
|
||||
}
|
||||
if (!tmovement) {
|
||||
return
|
||||
}
|
||||
let left = tmovement.x;
|
||||
let top = tmovement.y;
|
||||
let cartesian
|
||||
if (targetSdk.viewer.scene.mode === 2) {
|
||||
left = left + canvas.width
|
||||
cartesian = targetSdk.viewer.camera.pickEllipsoid(tmovement, targetSdk.viewer.scene.globe.ellipsoid)
|
||||
}
|
||||
else {
|
||||
cartesian = targetSdk.viewer.scene.pickPosition(tmovement)
|
||||
if (!cartesian) {
|
||||
const ray = targetSdk.viewer.camera.getPickRay(position); //相交的射线
|
||||
let pickedObjects = targetSdk.viewer.scene.drillPickFromRay(ray, 10);
|
||||
let result = {}
|
||||
for (let i = 0; i < pickedObjects.length; i++) {
|
||||
if (pickedObjects[i].position) {
|
||||
result = pickedObjects[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
cartesian = result.position
|
||||
if (!cartesian) {
|
||||
cartesian = targetSdk.viewer.scene.globe.pick(ray, targetSdk.viewer.scene);
|
||||
}
|
||||
}
|
||||
}
|
||||
contentElm.style['background-position-x'] = `${-sdk.viewer.container.clientWidth + left + 4}px`;
|
||||
|
||||
contentElm.style['background-position-y'] = `${-sdk.viewer.container.clientHeight + top - 2}px`;
|
||||
// this.entity.position = cartesian
|
||||
if (cartesian) {
|
||||
let degrees = tools.cartesian3Towgs84(cartesian, sdk.viewer)
|
||||
@ -97,10 +155,13 @@ const MouseCoordinate = (sdk, status) => {
|
||||
else {
|
||||
if (event) {
|
||||
event.destroy()
|
||||
event = undefined
|
||||
}
|
||||
if (event2) {
|
||||
event2.destroy()
|
||||
event2 = undefined
|
||||
}
|
||||
if (MouseCoordinateElm) {
|
||||
sdk.viewer._element.removeChild(MouseCoordinateElm)
|
||||
sdk.viewer.container.removeChild(MouseCoordinateElm)
|
||||
MouseCoordinateElm = undefined
|
||||
}
|
||||
if (requestAnimationFrameEventId) {
|
||||
|
@ -100,14 +100,14 @@ function MouseRightMenu(sdk, status, callBack) {
|
||||
that = sdk.entityMap.get(entityId)
|
||||
}
|
||||
|
||||
// if (that && that.picking) {
|
||||
// addedMenu = `
|
||||
// <span class="divider" style="display: block;border-top: 1px solid #ddd;margin: 5px;"></span>
|
||||
// <ul class="added" style="list-style: none;padding: 0;margin: 0;font-size: 12px;">
|
||||
// <li style="padding: 3px 10px;cursor: pointer;">属性</li>
|
||||
// </ul>
|
||||
// `
|
||||
// }
|
||||
if (that && that.picking) {
|
||||
addedMenu = `
|
||||
<span class="divider" style="display: block;border-top: 1px solid #ddd;margin: 5px;"></span>
|
||||
<ul class="added" style="list-style: none;padding: 0;margin: 0;font-size: 12px;">
|
||||
<li style="padding: 3px 10px;cursor: pointer;">属性</li>
|
||||
</ul>
|
||||
`
|
||||
}
|
||||
let position = tools.cartesian3Towgs84(cartesian, sdk.viewer)
|
||||
menuElm = document.createElement('div')
|
||||
menuElm.id = 'custom-menu'
|
||||
|
@ -433,11 +433,11 @@ class BillboardObject extends Base {
|
||||
value: '链接',
|
||||
key: 'link'
|
||||
},
|
||||
// {
|
||||
// name: 'IP摄像头',
|
||||
// value: 'IP摄像头',
|
||||
// key: 'camera'
|
||||
// },
|
||||
{
|
||||
name: 'IP摄像头',
|
||||
value: 'IP摄像头',
|
||||
key: 'camera'
|
||||
},
|
||||
// {
|
||||
// name: 'ISC摄像头',
|
||||
// value: 'ISC摄像头',
|
||||
@ -448,16 +448,16 @@ class BillboardObject extends Base {
|
||||
// value: '传感器',
|
||||
// key: 'sensor'
|
||||
// },
|
||||
// {
|
||||
// name: '全景图',
|
||||
// value: '全景图',
|
||||
// key: 'vr'
|
||||
// },
|
||||
// {
|
||||
// name: '物资',
|
||||
// value: '物资',
|
||||
// key: 'goods'
|
||||
// }
|
||||
{
|
||||
name: '全景图',
|
||||
value: '全景图',
|
||||
key: 'vr'
|
||||
},
|
||||
{
|
||||
name: '物资',
|
||||
value: '物资',
|
||||
key: 'goods'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -1279,6 +1279,9 @@ class GroundSvg extends Base {
|
||||
// 中心点到鼠标的距离
|
||||
let distance = turf.rhumbDistance(pointC, point2, options);
|
||||
|
||||
let flag = false
|
||||
let flag2 = false
|
||||
|
||||
switch (this.pickPoint.id) {
|
||||
case 'svg-control-points_0':
|
||||
angle = bearing2_0 - bearing1
|
||||
@ -1290,12 +1293,39 @@ class GroundSvg extends Base {
|
||||
bearingH = (((turf.rhumbBearing(pointC, turf.point(controlPoints[2])) + 360) - this.angle) % 360)
|
||||
angleW = bearing2 - bearingW
|
||||
angleH = bearing2 - bearingH
|
||||
|
||||
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) {
|
||||
angleW = angleW + 180
|
||||
flag=true
|
||||
}
|
||||
if ((angleH > -360 && angleH < -90) || (angleH < 360 && angleH > 90)) {
|
||||
angleH = angleH + 180
|
||||
flag2=true
|
||||
}
|
||||
if(flag && flag2) {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
else {
|
||||
if(flag) {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
else if(flag2) {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
else {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
}
|
||||
|
||||
radiansW = (Math.PI / 180) * angleW
|
||||
@ -1314,6 +1344,12 @@ class GroundSvg extends Base {
|
||||
|
||||
if ((angleH > -360 && angleH < -90) || (angleH < 360 && angleH > 90)) {
|
||||
angleH = angleH + 180
|
||||
this.pointEntityCollection.values[2].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[8].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
else {
|
||||
this.pointEntityCollection.values[2].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[8].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
|
||||
radiansH = (Math.PI / 180) * angleH
|
||||
@ -1331,9 +1367,37 @@ class GroundSvg extends Base {
|
||||
|
||||
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) {
|
||||
angleW = angleW + 180
|
||||
flag=true
|
||||
}
|
||||
if ((angleH > -360 && angleH < -90) || (angleH < 360 && angleH > 90)) {
|
||||
angleH = angleH + 180
|
||||
flag2=true
|
||||
}
|
||||
if(flag && flag2) {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
else {
|
||||
if(flag) {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
else if(flag2) {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
else {
|
||||
this.pointEntityCollection.values[1].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[3].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
this.pointEntityCollection.values[7].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[9].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
}
|
||||
}
|
||||
|
||||
radiansW = (Math.PI / 180) * angleW
|
||||
@ -1351,6 +1415,12 @@ class GroundSvg extends Base {
|
||||
|
||||
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) {
|
||||
angleW = angleW + 180
|
||||
this.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
else {
|
||||
this.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
|
||||
radiansW = (Math.PI / 180) * angleW
|
||||
@ -1381,6 +1451,12 @@ class GroundSvg extends Base {
|
||||
|
||||
if ((angleW > -360 && angleW < -90) || (angleW < 360 && angleW > 90)) {
|
||||
angleW = angleW + 180
|
||||
this.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
else {
|
||||
this.pointEntityCollection.values[4].point.color = Cesium.Color.fromCssColorString('#00ff0a')
|
||||
this.pointEntityCollection.values[6].point.color = Cesium.Color.fromCssColorString('#ff0000')
|
||||
}
|
||||
|
||||
radiansW = (Math.PI / 180) * angleW
|
||||
|
Reference in New Issue
Block a user