From f0efddd9e32b9c5dc828401c4092be004b4826cf Mon Sep 17 00:00:00 2001 From: ansel0926 <ansel0926@gmail.com> Date: 星期三, 18 五月 2022 12:05:08 +0800 Subject: [PATCH] 添加标签 --- libs/Cesiumplus/CesiumDraw.js | 244 +++++++++++++++++++++++++++++++----------------- 1 files changed, 155 insertions(+), 89 deletions(-) diff --git a/libs/Cesiumplus/CesiumDraw.js b/libs/Cesiumplus/CesiumDraw.js index 948df86..55a6c78 100644 --- a/libs/Cesiumplus/CesiumDraw.js +++ b/libs/Cesiumplus/CesiumDraw.js @@ -169,7 +169,8 @@ outlineColor: Cesium.Color.WHITE, hierarchy: new Cesium.CallbackProperty(function () { return polygon; - }, false) + }, false), + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000000.0) } }); @@ -262,6 +263,7 @@ // }) // } addTreeNode(node, "4"); + saveDrawEntity("polygon",drawpointArr,measurePolyGonGroundEntity.id); } for (let i in drawpointArr) { viewer.entities.remove(drawpointArr[i]); @@ -313,6 +315,7 @@ clampToGround: true, width: 1, material: options.polylinecolor, + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000000.0) }, drawpointArr: [], measureLinePositonsArray: measureLinePositonsArray @@ -320,7 +323,6 @@ measureLineGroundEntity.polyline.positions = new Cesium.CallbackProperty(function () { return measureLinePositonsArray; }, false) - var drawpointArr = measureLineGroundEntity.drawpointArr; //鑺傜偣娣诲姞鏍囩 function addPin(carPoi) { @@ -455,6 +457,7 @@ // } addTreeNode(node, "4"); + saveDrawEntity("polyline",drawpointArr,measureLineGroundEntity.id); } for (let i in drawpointArr) { viewer.entities.remove(drawpointArr[i]); @@ -471,97 +474,51 @@ drawHandler.setInputAction(function (movement) { //鑾峰彇榧犳爣鐐瑰嚮澶勭殑鍧愭爣 drawHandler = drawHandler && drawHandler.destroy(); - var cartesian = options.viewer.scene.pickPosition(movement.position); - var cartographic = Cesium.Cartographic.fromCartesian(cartesian); - var height = cartographic.height;//妯″瀷楂樺害 - if (Number(height) < 0) { - var ray = options.viewer.camera.getPickRay(movement.position); - cartesian = options.viewer.scene.globe.pick(ray, options.viewer.scene); - } - cartographic = Cesium.Cartographic.fromCartesian(cartesian); - height = cartographic.height;//鍦板舰楂樺害 - // var lng = Cesium.Math.toDegrees(cartographic.longitude); - // var lat = Cesium.Math.toDegrees(cartographic.latitude); - // var poiResult = lng + "," + lat + "," + height; - // document.getElementById(options.printId).value = poiResult; - // var drawPointEntity = options.viewer.entities.getById("drawPointEntity"); - // if(drawPointEntity == undefined){ - var entity = viewer.entities.add({ - name: 'drawPointEntity', - position: cartesian.clone(), - point: { - color: options.pointcolor, - pixelSize: 10, - outlineColor: Cesium.Color.WHITE, - outlineWidth: 2, - disableDepthTestDistance: Number.POSITIVE_INFINITY - } - }); - entity.title = "鐐�" + new Date().format("yyyyMMddhhmmss"); - addTreeNode({ - "title": entity.title, - "id": entity.id, - "field": "Entity", - "checked": true, - "spread": true, - "children": [], - "ext": { - "lng": Cesium.Math.toDegrees(cartographic.longitude), - "lat": Cesium.Math.toDegrees(cartographic.latitude) - } - }, "4"); - }, Cesium.ScreenSpaceEventType.LEFT_CLICK); - } - - /** - * options{ - * viewer:CesiumViewer, - * label:{ - * text:'鏂囧瓧', - * font: '24px Helvetica', - * fillColor: Cesium.Color.SKYBLUE, - * outlineColor: Cesium.Color.BLACK, - * outlineWidth: 2, - * style: Cesium.LabelStyle.FILL_AND_OUTLINE, - * scaleByDistance: new Cesium.NearFarScalar(100, 1.0, 200, 0.4) - * } - * } - */ - CesiumDraw.drawLabel = function (options) { - drawHandler = drawHandler && drawHandler.destroy(); - drawHandler = new Cesium.ScreenSpaceEventHandler(options.viewer.scene.canvas); - drawHandler.setInputAction(function (movement) { - var cartesian = options.viewer.scene.pickPosition(movement.position); - var cartographic = Cesium.Cartographic.fromCartesian(cartesian); - var height = cartographic.height;//妯″瀷楂樺害 - if (Number(height) < 0) { - var ray = options.viewer.camera.getPickRay(movement.position); - cartesian = options.viewer.scene.globe.pick(ray, options.viewer.scene); - } - - cartographic = Cesium.Cartographic.fromCartesian(cartesian); - height = cartographic.height;//鍦板舰楂樺害 - var entity = viewer.entities.add({ - name: 'drawLabelEtity', - position: cartesian.clone(), + let position = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid); + position = viewer.scene.pickPosition(movement.position); + let pointText="鐐�" + new Date().format("yyyyMMddhhmmss"); + var entity=viewer.entities.add({ + name:"drawPointEntity", + position:position, label: { - text: options.label.text, - font: options.label.font, - fillColor: options.label.fillColor, - outlineColor: options.label.outlineColor, - outlineWidth: options.label.outlineWidth, - style: options.label.style, - //scaleByDistance: options.label.scaleByDistance, - //eyeOffset: new Cesium.Cartesian3(0, 0, -10000), + text: pointText, + show: true, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + font: '10px SimSun', + fillColor: Cesium.Color.WHITE, + outlineColor: Cesium.Color.BLACK, + outlineWidth: 2, + style: Cesium.LabelStyle.FILL_AND_OUTLINE, + eyeOffset:new Cesium.Cartesian3(0,20,0), verticalOrigin: Cesium.VerticalOrigin.BOTTOM, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, - distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000000000000.0) + distanceDisplayCondition: window.localStorage.getItem("visualDistance")?new Cesium.DistanceDisplayCondition(0, window.localStorage.getItem("visualDistance")):new Cesium.DistanceDisplayCondition(0, 100000.0) + }, + billboard: { + image: "../assets/images/icon/icon1.png", + width: 40, + height: 40, + rotation: 0, + verticalOrigin: Cesium.VerticalOrigin.TOP, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + disableDepthTestDistance: Number.POSITIVE_INFINITY,//骞垮憡鐗屼笉杩涜娣卞害妫�娴� + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + distanceDisplayCondition: window.localStorage.getItem("visualDistance")?new Cesium.DistanceDisplayCondition(0, window.localStorage.getItem("visualDistance")):new Cesium.DistanceDisplayCondition(0, 100000.0) } }); - //entity.title = "鏂囧瓧" + new Date().format("yyyyMMddhhmmss"), - entity.title =options.label.text,//淇敼鏍戠粨鏋勬枃瀛楁爣棰橈細zzf + entity.title = pointText; + var cartesian = entity._position._value + let popup = new Popup({ + viewer:viewer, + geometry:cartesian, + entity:entity, + id: "pop_" + entity.id, + type:'image', + content:null, + }) addTreeNode({ "title": entity.title, "id": entity.id, @@ -570,10 +527,118 @@ "spread": true, "children": [], "ext": { - "lng": Cesium.Math.toDegrees(cartographic.longitude), - "lat": Cesium.Math.toDegrees(cartographic.latitude) + "lng": Cesium.Math.toDegrees(cartesian.x), + "lat": Cesium.Math.toDegrees(cartesian.y) } }, "4"); + saveDrawEntity("point",entity,entity.id); + }, Cesium.ScreenSpaceEventType.LEFT_CLICK); + } + + CesiumDraw.drawLabel = function (options) { + drawHandler = drawHandler && drawHandler.destroy(); + drawHandler = new Cesium.ScreenSpaceEventHandler(options.viewer.scene.canvas); + drawHandler.setInputAction(function (movement) { + //鑾峰彇榧犳爣鐐瑰嚮澶勭殑鍧愭爣 + drawHandler = drawHandler && drawHandler.destroy(); + let position = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid); + position = viewer.scene.pickPosition(movement.position); + let labelText="鏂囧瓧" + new Date().format("yyyyMMddhhmmss"); + var entity=viewer.entities.add({ + name:"drawLabelEntity", + position:position, + label: { + show: true, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + font: '30px SimSun', + fillColor: Cesium.Color.WHITE, + outlineColor: Cesium.Color.BLACK, + outlineWidth: 2, + style: Cesium.LabelStyle.FILL_AND_OUTLINE, + text: labelText, + eyeOffset:new Cesium.Cartesian3(0,20,0), + disableDepthTestDistance: Number.POSITIVE_INFINITY, + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + distanceDisplayCondition: window.localStorage.getItem("visualDistance")?new Cesium.DistanceDisplayCondition(0, window.localStorage.getItem("visualDistance")):new Cesium.DistanceDisplayCondition(0, 100000.0) + }, + billboard: { + image: "../assets/images/icon/icon1.png", + width: 40, + height: 40, + rotation: 0, + verticalOrigin: Cesium.VerticalOrigin.TOP, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + disableDepthTestDistance: Number.POSITIVE_INFINITY,//骞垮憡鐗屼笉杩涜娣卞害妫�娴� + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + distanceDisplayCondition: window.localStorage.getItem("visualDistance")?new Cesium.DistanceDisplayCondition(0, window.localStorage.getItem("visualDistance")):new Cesium.DistanceDisplayCondition(0, 100000.0) + } + }); + entity.title = labelText; + var cartesian = entity._position._value + let popup = new Popup({ + viewer:viewer, + geometry:cartesian, + entity:entity, + id: "pop_" + entity.id, + type:'label', + content:null, + }) + addTreeNode({ + "title": entity.title, + "id": entity.id, + "field": "Entity", + "checked": true, + "spread": true, + "children": [], + "ext": { + "lng": Cesium.Math.toDegrees(cartesian.x), + "lat": Cesium.Math.toDegrees(cartesian.y) + } + }, "4"); + saveDrawEntity("label",entity,entity.id); + }, Cesium.ScreenSpaceEventType.LEFT_CLICK); + } + + CesiumDraw.drawText = function (options) { + drawHandler = drawHandler && drawHandler.destroy(); + drawHandler = new Cesium.ScreenSpaceEventHandler(options.viewer.scene.canvas); + drawHandler.setInputAction(function (movement) { + let position = viewer.scene.pickPosition(movement.position); + let labelText="鏍囩" + new Date().format("yyyyMMddhhmmss"); + var entity=viewer.entities.add({ + name:"drawTextEtity", + position:position, + label: { + show: true, + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + horizontalOrigin: Cesium.HorizontalOrigin.CENTER, + font: '20px LiSu', + fillColor: Cesium.Color.YELLOW, + outlineColor: Cesium.Color.BLACK, + outlineWidth: 2, + style: Cesium.LabelStyle.FILL_AND_OUTLINE, + text: labelText, + disableDepthTestDistance: Number.POSITIVE_INFINITY, + heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, + distanceDisplayCondition: window.localStorage.getItem("visualDistance")?new Cesium.DistanceDisplayCondition(0, window.localStorage.getItem("visualDistance")):new Cesium.DistanceDisplayCondition(0, 100000.0) + }, + }); + entity.title = labelText; + var cartesian = entity._position._value + addTreeNode({ + "title": entity.title, + "id": entity.id, + "field": "Entity", + "checked": true, + "spread": true, + "children": [], + "ext": { + "lng": Cesium.Math.toDegrees(cartesian.x), + "lat": Cesium.Math.toDegrees(cartesian.y) + } + }, "4"); + saveDrawEntity("text",entity,entity.id); drawHandler = drawHandler && drawHandler.destroy(); }, Cesium.ScreenSpaceEventType.LEFT_CLICK); } @@ -592,4 +657,5 @@ } else { console.log("CesiumDraw already defined."); } -})(window); \ No newline at end of file +})(window); + -- Gitblit v1.9.1