From ebc4c778854c8d2666b1bbaf3dcba2ba00f08453 Mon Sep 17 00:00:00 2001
From: ansel0926 <ansel0926@gmail.com>
Date: 星期日, 15 五月 2022 18:42:46 +0800
Subject: [PATCH] 编辑线、面,文字标记和图片标记点

---
 libs/Cesiumplus/CesiumDraw.js |  141 ++++++++++++++++++++++++----------------------
 1 files changed, 73 insertions(+), 68 deletions(-)

diff --git a/libs/Cesiumplus/CesiumDraw.js b/libs/Cesiumplus/CesiumDraw.js
index 8ef7e66..b649303 100644
--- a/libs/Cesiumplus/CesiumDraw.js
+++ b/libs/Cesiumplus/CesiumDraw.js
@@ -472,33 +472,44 @@
 			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
+				let position = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);
+				let pointText="鐐�" + new Date().format("yyyyMMddhhmmss");
+				var entity=viewer.entities.add({
+					name:"drawPointEntity",
+					position:position,
+					label: {
+						show: true,
+						verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+						horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+						font: '10px SimSun',
+						fillColor: Cesium.Color.WHITE,
+						text: pointText,
+						disableDepthTestDistance: Number.POSITIVE_INFINITY,
+						heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+						distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 200000000.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: new Cesium.DistanceDisplayCondition(0, 200000000.0)
 					}
 				});
-				entity.title =  "鐐�" + new Date().format("yyyyMMddhhmmss");
+				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,
@@ -507,63 +518,58 @@
 					"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);
 		}
 
-		/**
-		 * 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(),
+				//鑾峰彇榧犳爣鐐瑰嚮澶勭殑鍧愭爣
+				drawHandler = drawHandler && drawHandler.destroy();
+				let position = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);
+				let labelText="鏂囧瓧" + new Date().format("yyyyMMddhhmmss");
+				var entity=viewer.entities.add({
+					name:"drawLabelEntity",
+					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),
+						show: true,
 						verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
 						horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+						font: '30px SimSun',
+						fillColor: Cesium.Color.WHITE,
+						text: labelText,
 						disableDepthTestDistance: Number.POSITIVE_INFINITY,
 						heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
-						distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000000000000.0)
+						distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 200000000.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: new Cesium.DistanceDisplayCondition(0, 200000000.0)
 					}
 				});
-				//entity.title = "鏂囧瓧" + new Date().format("yyyyMMddhhmmss"),
-				entity.title =options.label.text,//淇敼鏍戠粨鏋勬枃瀛楁爣棰橈細zzf
+				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,
@@ -572,12 +578,11 @@
 					"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("label",entity,entity.id);
-				drawHandler = drawHandler && drawHandler.destroy();
 			}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
 		}
 

--
Gitblit v1.9.1