From 00b733dc6ae372be365a01046ead5c062d8f5617 Mon Sep 17 00:00:00 2001
From: ansel0926 <ansel0926@gmail.com>
Date: 星期二, 17 五月 2022 18:43:44 +0800
Subject: [PATCH] 更换字体图片

---
 view/project/drawPlot.html    |   14 ++++
 assets/service/drawService.js |   15 +++++
 view/project/editLine.html    |    8 +-
 assets/images/icon/icon1.png  |    0 
 libs/Cesiumplus/CesiumDraw.js |   45 +++++++++++++++
 assets/map/map3D.js           |   65 ++++++++++++++++++++-
 6 files changed, 136 insertions(+), 11 deletions(-)

diff --git a/assets/images/icon/icon1.png b/assets/images/icon/icon1.png
index c2381f1..1d8f8bd 100644
--- a/assets/images/icon/icon1.png
+++ b/assets/images/icon/icon1.png
Binary files differ
diff --git a/assets/map/map3D.js b/assets/map/map3D.js
index 2113bfa..269e21d 100644
--- a/assets/map/map3D.js
+++ b/assets/map/map3D.js
@@ -294,7 +294,8 @@
 								let title=entity.title;
 								let lineColor=entity._polyline._material._color._value.toCssHexString();
 								let lineSize=entity._polyline._width._value;
-                				iframe.child(id,title,lineColor,lineSize,pick);
+								let attributes = pick.primitive.getGeometryInstanceAttributes(pick.id);
+                				iframe.child(id,title,lineColor,lineSize,attributes);
 							}
 						});
 					}
@@ -982,8 +983,7 @@
 	});
 }	
 
-function updateLine(type,id,val,pick){//淇敼绾匡細zzf
-	let attributes = pick.primitive.getGeometryInstanceAttributes( pick.id );
+function updateLine(type,id,val,attributes){//淇敼绾匡細zzf
 	let signPointEntity = viewer.entities.getById(id);
 	let saveData;
 	if(type==1){//绾垮悕绉�
@@ -1434,6 +1434,9 @@
 					else if(data.rows[i].type=="label"){
 						drawAjaxLabel(data.rows[i])
 					}
+					else if(data.rows[i].type=="text"){
+						drawAjaxText(data.rows[i])
+					}
 				}
 			}
 		},
@@ -1454,10 +1457,11 @@
 		label: {
 			text: drawEntity.content,
 			font: drawEntity.fontsize+'px '+drawEntity.fontstyle,
-			fillColor: Cesium.Color.fromCssColorString(drawEntity.color),
+			fillColor: drawEntity.color?Cesium.Color.fromCssColorString(drawEntity.color):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,
@@ -1612,10 +1616,12 @@
 		label: {
 			text: drawEntity.content,
 			font: drawEntity.fontsize+'px '+drawEntity.fontstyle,
-			fillColor: Cesium.Color.fromCssColorString(drawEntity.color),
+			fillColor:  drawEntity.color?Cesium.Color.fromCssColorString(drawEntity.color):Cesium.Color.WHITE,
 			outlineColor: Cesium.Color.BLACK,
 			outlineWidth: 2,
 			style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+			//pixelOffset: new Cesium.Cartesian2(0.0, 5.0),
+			eyeOffset:new Cesium.Cartesian3(0,20,0),
 			verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
 			horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
 			disableDepthTestDistance: Number.POSITIVE_INFINITY,
@@ -1664,4 +1670,53 @@
 			"lat": Cesium.Math.toDegrees(cartographic.latitude)
 		}
 	}, "4");
+}
+
+function drawAjaxText(drawEntity){//鍔犺浇鏍囩
+	let cartesian = Cesium.Cartesian3.fromDegrees(drawEntity.longitude, drawEntity.latitude, drawEntity.height);
+	var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
+	var entity=viewer.entities.add({
+		id:drawEntity.id,
+		name:"drawTextEtity",
+		position:cartesian,
+		label: {
+			text: drawEntity.content?drawEntity.content:new Date(drawEntity.createTime).format("yyyyMMddhhmmss"),
+			font: drawEntity.fontsize+'px '+drawEntity.fontstyle,
+			fillColor:  drawEntity.color?Cesium.Color.fromCssColorString(drawEntity.color):Cesium.Color.WHITE,
+			outlineColor: Cesium.Color.BLACK,
+			outlineWidth: 2,
+			style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+			//pixelOffset: new Cesium.Cartesian2(0.0, 5.0),
+			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: window.localStorage.getItem("visualDistance")?new Cesium.DistanceDisplayCondition(0, window.localStorage.getItem("visualDistance")):new Cesium.DistanceDisplayCondition(0, 100000.0)
+		},
+	});
+	let popup = new Popup({
+		viewer:viewer,
+		geometry:cartesian,
+		entity:entity,
+		id: "pop_" + entity.id,
+		type:'label',
+		content:drawEntity.popContent?drawEntity.popContent:null,
+	})
+	if( drawEntity.popContent!=null&& drawEntity.popContent!=""){
+		$("#pop_" + entity.id).children(".bx-popup-content-ctn").children(".bx-popup-content").children(".textarea")[0].innerHTML = drawEntity.popContent;
+	}
+	document.getElementById("pop_" +entity.id).style.display="none";
+	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");
 }
\ No newline at end of file
diff --git a/assets/service/drawService.js b/assets/service/drawService.js
index d603cd7..6ac310c 100644
--- a/assets/service/drawService.js
+++ b/assets/service/drawService.js
@@ -44,6 +44,21 @@
     CesiumDraw.drawLabel(options);
 }
 
+function drawText(text) {
+    var options = {
+        'viewer': viewer,
+        'label': {
+            'text': text,
+            'font': '30px SimSun',
+            'fillColor': Cesium.Color.RED,
+            'outlineColor': Cesium.Color.BLACK,
+            'outlineWidth': 2,
+            'style': Cesium.LabelStyle.FILL_AND_OUTLINE,
+            'scaleByDistance': new Cesium.NearFarScalar(100, 1.0, 200, 0.4)
+        },
+    }
+    CesiumDraw.drawText(options);
+}
 function clearDraw() {
     var options = {
         'viewer': viewer, //鍏ㄥ眬Cesium瀵硅薄
diff --git a/libs/Cesiumplus/CesiumDraw.js b/libs/Cesiumplus/CesiumDraw.js
index 71b3880..f9a7cf9 100644
--- a/libs/Cesiumplus/CesiumDraw.js
+++ b/libs/Cesiumplus/CesiumDraw.js
@@ -475,6 +475,7 @@
 				//鑾峰彇榧犳爣鐐瑰嚮澶勭殑鍧愭爣
 				drawHandler = drawHandler && drawHandler.destroy();
 				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",
@@ -486,6 +487,7 @@
 						font: '10px SimSun',
 						fillColor: Cesium.Color.WHITE,
 						text: pointText,
+						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)
@@ -535,6 +537,7 @@
 				//鑾峰彇榧犳爣鐐瑰嚮澶勭殑鍧愭爣
 				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",
@@ -546,6 +549,7 @@
 						font: '30px SimSun',
 						fillColor: Cesium.Color.WHITE,
 						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)
@@ -588,6 +592,47 @@
 			}, 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,
+						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)
+					},
+				});
+				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);
+		}
+
 		CesiumDraw.clearDraw = function (options) {
 
 		}
diff --git a/view/project/drawPlot.html b/view/project/drawPlot.html
index 3c4e612..45f27de 100644
--- a/view/project/drawPlot.html
+++ b/view/project/drawPlot.html
@@ -70,7 +70,7 @@
                 <div>
                     <img class="mapImg" src="../../assets/images/draw/鐐�.png">
                 </div>
-                <div>鐐�</div>
+                <div>鍥剧墖鏍囪鐐�</div>
             </li>
             <li class="hover" onclick="drawplot('polyline')">
                 <div>
@@ -88,8 +88,14 @@
                 <div>
                     <img class="mapImg" src="../../assets/images/draw/鏂囧瓧.png">
                 </div>
-                <div>鏂囧瓧</div>
+                <div>鏂囧瓧鏍囪鐐�</div>
             </li>
+            <!-- <li class="hover" onclick="drawplot('text')">
+                <div>
+                    <img class="mapImg" src="../../assets/images/draw/鏂囧瓧.png">
+                </div>
+                <div>鏍囩</div>
+            </li> -->
             <!-- <li>
                 <input id="text" class="labelInput" type="text" placeholder="杈撳叆鏂囧瓧" autocomplete="off" />
             </li> -->
@@ -121,6 +127,10 @@
                     parent.drawPolygon();
                     break;
                 }
+                case 'text':{
+                    parent.drawText();
+                    break;
+                }
             }
         }
     </script>
diff --git a/view/project/editLine.html b/view/project/editLine.html
index a24e994..d49b670 100644
--- a/view/project/editLine.html
+++ b/view/project/editLine.html
@@ -134,7 +134,7 @@
     </div>
     <script>
        var currentLineId
-       function child(id,text,lineColor,lineSize,pick) { 
+       function child(id,text,lineColor,lineSize,attributes) { 
            currentLineId=id
            layui.use(['element', 'layer', 'form','colorpicker'], function () {
             var element = layui.element;
@@ -146,19 +146,19 @@
                 color: lineColor,
                 size:'20px',
                 done: function (color) {
-                    parent.updateLine(2,currentLineId,color,pick);
+                    parent.updateLine(2,currentLineId,color,attributes);
                 },
             });
             lineSize=parseInt(lineSize);
             $("#lineSize").val(lineSize);
             form.on("select(lineSize)", function (data) {
-                parent.updateLine(3,currentLineId,data.value,pick);
+                parent.updateLine(3,currentLineId,data.value,attributes);
             })
             form.render();
         });
        }
        function labelChange(e) {
-           parent.updateLine(1,currentLineId,$("#input").val(),pick);
+           parent.updateLine(1,currentLineId,$("#input").val(),attributes);
        }
     </script>
 

--
Gitblit v1.9.1