|  | @@ -34,8 +34,9 @@
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |      <div class="imgCon">
 | 
	
		
			
				|  |  |        <div class="echartTitle">
 | 
	
		
			
				|  |  | -        <div class="block-title">监测类型情况</div>
 | 
	
		
			
				|  |  | -        <div class="selectTab"></div>
 | 
	
		
			
				|  |  | +        <div class="block-title">
 | 
	
		
			
				|  |  | +          监测类型情况 <span @click="ceshi">测试</span>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <div class="imgList">
 | 
	
		
			
				|  |  |          <div
 | 
	
	
		
			
				|  | @@ -43,6 +44,8 @@
 | 
	
		
			
				|  |  |            v-for="(item, i) in monitorList"
 | 
	
		
			
				|  |  |            :key="i"
 | 
	
		
			
				|  |  |            @click="clickImg(i)"
 | 
	
		
			
				|  |  | +          @mouseenter="handleMouseEnter(item, i)"
 | 
	
		
			
				|  |  | +          @mouseleave="handleMouseLeave(item, i)"
 | 
	
		
			
				|  |  |          >
 | 
	
		
			
				|  |  |            <span>{{ i + 1 }}</span>
 | 
	
		
			
				|  |  |            <img :src="item.imgUrl" />
 | 
	
	
		
			
				|  | @@ -65,6 +68,7 @@ export default {
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        monitorList: [
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +          id: "s1",
 | 
	
		
			
				|  |  |            imgUrl:
 | 
	
		
			
				|  |  |              "https://b0.bdstatic.com/ugc/Gr0RkpztmAdvrxnS4n54Iw49d04e3484c9bb1a11f03b38a819d893.jpg@h_1280",
 | 
	
		
			
				|  |  |            info: "2024-09-27 15:04",
 | 
	
	
		
			
				|  | @@ -74,6 +78,7 @@ export default {
 | 
	
		
			
				|  |  |            psfw: "45°",
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +          id: "s2",
 | 
	
		
			
				|  |  |            imgUrl:
 | 
	
		
			
				|  |  |              "https://img2.baidu.com/it/u=3692233586,2896402884&fm=253&fmt=auto&app=120&f=JPEG?w=759&h=427",
 | 
	
		
			
				|  |  |            info: "2024-09-27 15:04",
 | 
	
	
		
			
				|  | @@ -83,6 +88,7 @@ export default {
 | 
	
		
			
				|  |  |            psfw: "45°",
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +          id: "s3",
 | 
	
		
			
				|  |  |            imgUrl:
 | 
	
		
			
				|  |  |              "https://img2.baidu.com/it/u=882190421,2711411099&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1067",
 | 
	
		
			
				|  |  |            info: "2024-09-27 15:04",
 | 
	
	
		
			
				|  | @@ -92,6 +98,7 @@ export default {
 | 
	
		
			
				|  |  |            psfw: "45°",
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +          id: "s4",
 | 
	
		
			
				|  |  |            imgUrl:
 | 
	
		
			
				|  |  |              "http://img2.baidu.com/it/u=516755055,1384417278&fm=253&app=138&f=JPEG?w=800&h=1067",
 | 
	
		
			
				|  |  |            info: "2024-09-27 15:04",
 | 
	
	
		
			
				|  | @@ -101,6 +108,7 @@ export default {
 | 
	
		
			
				|  |  |            psfw: "45°",
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +          id: "s5",
 | 
	
		
			
				|  |  |            imgUrl:
 | 
	
		
			
				|  |  |              "http://img0.baidu.com/it/u=1366170349,307387023&fm=253&app=138&f=JPEG?w=800&h=1067",
 | 
	
		
			
				|  |  |            info: "2024-09-27 15:04",
 | 
	
	
		
			
				|  | @@ -110,11 +118,30 @@ export default {
 | 
	
		
			
				|  |  |            psfw: "45°",
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |        ],
 | 
	
		
			
				|  |  | +      primitive: null,
 | 
	
		
			
				|  |  | +      selectId: null,
 | 
	
		
			
				|  |  | +      primitivesArray: [],
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    computed: {},
 | 
	
		
			
				|  |  | -  mounted() {},
 | 
	
		
			
				|  |  | +  mounted() {
 | 
	
		
			
				|  |  | +    this.$nextTick(() => {
 | 
	
		
			
				|  |  | +      // this.aaa();
 | 
	
		
			
				|  |  | +      // this.colorChange();
 | 
	
		
			
				|  |  | +      // this.ccc();
 | 
	
		
			
				|  |  | +      // this.onClickButton();
 | 
	
		
			
				|  |  | +      this.ddd();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    methods: {
 | 
	
		
			
				|  |  | +    handleMouseEnter(a, b) {
 | 
	
		
			
				|  |  | +      console.log("鼠标移入", a, b);
 | 
	
		
			
				|  |  | +      this.ceshi('111')
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleMouseLeave(a, b) {
 | 
	
		
			
				|  |  | +      console.log("鼠标移出");
 | 
	
		
			
				|  |  | +      this.ceshi()
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      changeData(name, updata) {
 | 
	
		
			
				|  |  |        this[name] = updata;
 | 
	
		
			
				|  |  |      },
 | 
	
	
		
			
				|  | @@ -122,10 +149,340 @@ export default {
 | 
	
		
			
				|  |  |        this.$emit("updateParent", "emitImgList", this.monitorList);
 | 
	
		
			
				|  |  |        this.$emit("updateParent", "emitImgIndex", val);
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    aaa() {
 | 
	
		
			
				|  |  | +      var redLine = viewer.entities.add({
 | 
	
		
			
				|  |  | +        // 贴在地面上 两点之间的直线距离
 | 
	
		
			
				|  |  | +        name: "line",
 | 
	
		
			
				|  |  | +        // polyline: {
 | 
	
		
			
				|  |  | +        // positions: Cesium.Cartesian3.fromDegreesArray([
 | 
	
		
			
				|  |  | +        //   // o.inx,
 | 
	
		
			
				|  |  | +        //   // o.iny,
 | 
	
		
			
				|  |  | +        //   // o.outx,
 | 
	
		
			
				|  |  | +        //   // o.outy,
 | 
	
		
			
				|  |  | +        //   109.5077, 18.309, 109.5111, 18.3093,
 | 
	
		
			
				|  |  | +        // ]),
 | 
	
		
			
				|  |  | +        //   width: 20,
 | 
	
		
			
				|  |  | +        //   // 不带箭头的线
 | 
	
		
			
				|  |  | +        //   // material: Cesium.Color.RED,
 | 
	
		
			
				|  |  | +        //   // 是否紧贴地面
 | 
	
		
			
				|  |  | +        //   clampToGround: true,
 | 
	
		
			
				|  |  | +        //   // 带箭头的线
 | 
	
		
			
				|  |  | +        //   material: new Cesium.PolylineArrowMaterialProperty(Cesium.Color.RED),
 | 
	
		
			
				|  |  | +        // },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        polygon: {
 | 
	
		
			
				|  |  | +          hierarchy: Cesium.Cartesian3.fromDegreesArray([
 | 
	
		
			
				|  |  | +            // o.inx,
 | 
	
		
			
				|  |  | +            // o.iny,
 | 
	
		
			
				|  |  | +            // o.outx,
 | 
	
		
			
				|  |  | +            // o.outy,
 | 
	
		
			
				|  |  | +            109.5077, 18.309, 109.5111, 18.3093,
 | 
	
		
			
				|  |  | +          ]),
 | 
	
		
			
				|  |  | +          material: new Cesium.ColorMaterialProperty(
 | 
	
		
			
				|  |  | +            Cesium.Color.fromCssColorString("rgba(255, 255, 255, 1)")
 | 
	
		
			
				|  |  | +          ),
 | 
	
		
			
				|  |  | +          width: 15,
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    ccc() {
 | 
	
		
			
				|  |  | +      // // var viewer = new Cesium.Viewer("cesiumContainer");
 | 
	
		
			
				|  |  | +      // // var scene = viewer.scene;
 | 
	
		
			
				|  |  | +      // // 创建BillboardCollection来存储图片或图标
 | 
	
		
			
				|  |  | +      // var billboards = viewer.scene.primitives.add(
 | 
	
		
			
				|  |  | +      //   new Cesium.BillboardCollection()
 | 
	
		
			
				|  |  | +      // );
 | 
	
		
			
				|  |  | +      // // 添加一个带偏移量和旋转的图标
 | 
	
		
			
				|  |  | +      // var billboard = billboards.add({
 | 
	
		
			
				|  |  | +      //   image:
 | 
	
		
			
				|  |  | +      //     "https://img2.baidu.com/it/u=2726480512,4270878021&fm=253&fmt=auto&app=120&f=JPEG?w=193&h=193", // 替换为图片的路径
 | 
	
		
			
				|  |  | +      //   position: Cesium.Cartesian3.fromDegrees(109.5077, 18.309), // 设置图片的位置,采用经纬度
 | 
	
		
			
				|  |  | +      //   width: 64, // 设置图片的宽度
 | 
	
		
			
				|  |  | +      //   height: 64, // 设置图片的高度
 | 
	
		
			
				|  |  | +      //   rotation: Cesium.Math.toRadians(45), // 设置初始旋转角度(单位弧度)
 | 
	
		
			
				|  |  | +      //   // clampToGround: true,
 | 
	
		
			
				|  |  | +      //   pixelOffset: new Cesium.Cartesian2(30, -40), // 设置偏移量,X轴偏移30像素,Y轴偏移-40像素
 | 
	
		
			
				|  |  | +      //   heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
 | 
	
		
			
				|  |  | +      //   horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // 水平锚点
 | 
	
		
			
				|  |  | +      //   verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 垂直锚点
 | 
	
		
			
				|  |  | +      // });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 创建一个Cesium视图
 | 
	
		
			
				|  |  | +      // var viewer = new Cesium.Viewer("cesiumContainer");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 获取场景对象
 | 
	
		
			
				|  |  | +      var scene = viewer.scene;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 创建一个BillboardCollection,用于存放所有Billboard对象
 | 
	
		
			
				|  |  | +      var billboards = scene.primitives.add(new Cesium.BillboardCollection());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 定义图片的URL
 | 
	
		
			
				|  |  | +      var imageUrl = "https://example.com/your-image.png";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 设置图片的初始位置(经纬度)
 | 
	
		
			
				|  |  | +      var longitude = -75.0;
 | 
	
		
			
				|  |  | +      var latitude = 40.0;
 | 
	
		
			
				|  |  | +      var height = 1000; // 距离地面1000米
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 创建Billboard对象
 | 
	
		
			
				|  |  | +      var billboard = billboards.add({
 | 
	
		
			
				|  |  | +        image: imageUrl, // 设置图片
 | 
	
		
			
				|  |  | +        position: Cesium.Cartesian3.fromDegrees(longitude, latitude, height), // 设置位置
 | 
	
		
			
				|  |  | +        heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, // 贴地
 | 
	
		
			
				|  |  | +        scale: 1.0, // 图片的缩放比例
 | 
	
		
			
				|  |  | +        rotation: Cesium.Math.toRadians(45), // 旋转角度,单位是弧度
 | 
	
		
			
				|  |  | +        pixelOffset: new Cesium.Cartesian2(50, 0), // 图片的偏移量,单位是像素(x, y)
 | 
	
		
			
				|  |  | +        alignedAxis: Cesium.Cartesian3.ZERO, // 不需要对齐轴
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //点击事件
 | 
	
		
			
				|  |  | +    onClickButton(e, val) {
 | 
	
		
			
				|  |  | +      // 每次进来清空,然后再重新加载图片
 | 
	
		
			
				|  |  | +      this.primitivesArray.forEach((primitive) => {
 | 
	
		
			
				|  |  | +        viewer.scene.primitives.remove(primitive);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      this.primitivesArray = []; // 清空数组,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      //传的图片
 | 
	
		
			
				|  |  | +      let image =
 | 
	
		
			
				|  |  | +        "https://img2.baidu.com/it/u=2726480512,4270878021&fm=253&fmt=auto&app=120&f=JPEG?w=193&h=193";
 | 
	
		
			
				|  |  | +      //传的图片 、经纬度、范围
 | 
	
		
			
				|  |  | +      this.PosButtonClick(image, 109.5077, 18.309, 24);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //加载图片
 | 
	
		
			
				|  |  | +    PosButtonClick(imageurl, lon, lat, round) {
 | 
	
		
			
				|  |  | +      var point = {
 | 
	
		
			
				|  |  | +        longitude: lon,
 | 
	
		
			
				|  |  | +        latitude: lat,
 | 
	
		
			
				|  |  | +        height: -0.7728200032702337,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      var rvalue = round; //范围半径
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 计算边界
 | 
	
		
			
				|  |  | +      var west =
 | 
	
		
			
				|  |  | +        point.longitude -
 | 
	
		
			
				|  |  | +        Cesium.Math.toDegrees(rvalue / Cesium.Ellipsoid.WGS84.maximumRadius);
 | 
	
		
			
				|  |  | +      var south =
 | 
	
		
			
				|  |  | +        point.latitude -
 | 
	
		
			
				|  |  | +        Cesium.Math.toDegrees(rvalue / Cesium.Ellipsoid.WGS84.maximumRadius);
 | 
	
		
			
				|  |  | +      var east =
 | 
	
		
			
				|  |  | +        point.longitude +
 | 
	
		
			
				|  |  | +        Cesium.Math.toDegrees(rvalue / Cesium.Ellipsoid.WGS84.maximumRadius);
 | 
	
		
			
				|  |  | +      var north =
 | 
	
		
			
				|  |  | +        point.latitude +
 | 
	
		
			
				|  |  | +        Cesium.Math.toDegrees(rvalue / Cesium.Ellipsoid.WGS84.maximumRadius);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var bounds = Cesium.Rectangle.fromDegrees(west, south, east, north);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var bound = new Cesium.Rectangle(west, south, east, north);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var heatPrimitive = viewer.scene.primitives.add(
 | 
	
		
			
				|  |  | +        new Cesium.GroundPrimitive({
 | 
	
		
			
				|  |  | +          geometryInstances: new Cesium.GeometryInstance({
 | 
	
		
			
				|  |  | +            geometry: new Cesium.RectangleGeometry({
 | 
	
		
			
				|  |  | +              rectangle: Cesium.Rectangle.fromDegrees(
 | 
	
		
			
				|  |  | +                bound.west,
 | 
	
		
			
				|  |  | +                bound.south,
 | 
	
		
			
				|  |  | +                bound.east,
 | 
	
		
			
				|  |  | +                bound.north
 | 
	
		
			
				|  |  | +              ),
 | 
	
		
			
				|  |  | +              vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
 | 
	
		
			
				|  |  | +              width: 24, // 设置图片的宽度
 | 
	
		
			
				|  |  | +              height: 24, // 设置图片的高度
 | 
	
		
			
				|  |  | +              rotation: Cesium.Math.toRadians(45), // 设置初始旋转角度(单位弧度)
 | 
	
		
			
				|  |  | +              // clampToGround: true,
 | 
	
		
			
				|  |  | +              pixelOffset: new Cesium.Cartesian2(30, -400), // 设置偏移量,X轴偏移30像素,Y轴偏移-40像素
 | 
	
		
			
				|  |  | +            }),
 | 
	
		
			
				|  |  | +          }),
 | 
	
		
			
				|  |  | +          appearance: new Cesium.EllipsoidSurfaceAppearance({
 | 
	
		
			
				|  |  | +            aboveGround: true,
 | 
	
		
			
				|  |  | +            material: new Cesium.Material({
 | 
	
		
			
				|  |  | +              fabric: {
 | 
	
		
			
				|  |  | +                type: "Image",
 | 
	
		
			
				|  |  | +                uniforms: {
 | 
	
		
			
				|  |  | +                  image: imageurl,
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +              },
 | 
	
		
			
				|  |  | +            }),
 | 
	
		
			
				|  |  | +          }),
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      // 将新创建的GroundPrimitive添加到数组中
 | 
	
		
			
				|  |  | +      this.primitivesArray.push(heatPrimitive);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    ddd() {
 | 
	
		
			
				|  |  | +      // 将经纬度转换为 Cartesian3 坐标,起始点
 | 
	
		
			
				|  |  | +      var startPosition = Cesium.Cartesian3.fromDegrees(109.5077, 18.309);
 | 
	
		
			
				|  |  | +      console.log(this.getLonAndLat(109.5077, 18.309, 78, 20), "======");
 | 
	
		
			
				|  |  | +      //结束点
 | 
	
		
			
				|  |  | +      var targetPosition = Cesium.Cartesian3.fromDegrees(109.5111, 18.3093);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 创建一个实体来表示点
 | 
	
		
			
				|  |  | +      var pointEntity = viewer.entities.add({
 | 
	
		
			
				|  |  | +        id: "dw" + 1,
 | 
	
		
			
				|  |  | +        position: startPosition, // 点的位置
 | 
	
		
			
				|  |  | +        point: {
 | 
	
		
			
				|  |  | +          heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, // 设置为贴地
 | 
	
		
			
				|  |  | +          pixelSize: 10, // 点的大小
 | 
	
		
			
				|  |  | +          color: Cesium.Color.RED, // 点的颜色
 | 
	
		
			
				|  |  | +          outlineColor: Cesium.Color.BLACK, // 点的轮廓颜色
 | 
	
		
			
				|  |  | +          outlineWidth: 2, // 点的轮廓宽度
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 创建一个实体来放置箭头
 | 
	
		
			
				|  |  | +      var arrowEntity = viewer.entities.add({
 | 
	
		
			
				|  |  | +        id: "jt" + 1,
 | 
	
		
			
				|  |  | +        position: startPosition, // 设置箭头位置
 | 
	
		
			
				|  |  | +        billboard: {
 | 
	
		
			
				|  |  | +          // image: "http://192.168.176.1:8001/长箭头.png", // 设置箭头图标
 | 
	
		
			
				|  |  | +          image: "/static/images/路径@3x-2.png", // 设置箭头图标
 | 
	
		
			
				|  |  | +          width: 37, // 设置图标宽度
 | 
	
		
			
				|  |  | +          height: 69, // 设置图标高度
 | 
	
		
			
				|  |  | +          scale: 0.7, // 设置图标缩放
 | 
	
		
			
				|  |  | +          heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, // 设置贴地
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 计算箭头的方向并更新
 | 
	
		
			
				|  |  | +      function updateArrowOrientation() {
 | 
	
		
			
				|  |  | +        // 计算起点到目标点的方向向量
 | 
	
		
			
				|  |  | +        var direction = Cesium.Cartesian3.subtract(
 | 
	
		
			
				|  |  | +          targetPosition,
 | 
	
		
			
				|  |  | +          startPosition,
 | 
	
		
			
				|  |  | +          new Cesium.Cartesian3()
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 确保方向向量有效
 | 
	
		
			
				|  |  | +        if (Cesium.Cartesian3.magnitude(direction) > 0) {
 | 
	
		
			
				|  |  | +          // 计算箭头朝向目标的方向角(使用 JavaScript 原生 Math.atan2)
 | 
	
		
			
				|  |  | +          var heading = Cesium.Math.toDegrees(
 | 
	
		
			
				|  |  | +            Math.atan2(direction.y, direction.x)
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          // 固定方向,使用 rotation 设置固定旋转
 | 
	
		
			
				|  |  | +          arrowEntity.billboard.rotation = Cesium.Math.toRadians(heading); // 固定旋转角度,不随地图旋转
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 每次视图更新时,重新计算箭头方向
 | 
	
		
			
				|  |  | +      viewer.scene.preRender.addEventListener(function () {
 | 
	
		
			
				|  |  | +        updateArrowOrientation();
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 聚焦视角到箭头位置
 | 
	
		
			
				|  |  | +      viewer.zoomTo(arrowEntity);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    ceshi(item) {
 | 
	
		
			
				|  |  | +      // console.log(item,"?????");
 | 
	
		
			
				|  |  | +      let aaa = viewer.entities.getById("jt1");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (item) {
 | 
	
		
			
				|  |  | +        aaa.billboard.image = "/static/images/路径@3x.png";
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        aaa.billboard.image = "/static/images/路径@3x-2.png";
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 根据一个经纬度及距离角度,算出另外一个经纬度
 | 
	
		
			
				|  |  | +     * @param {*} lng 经度 113.3960698
 | 
	
		
			
				|  |  | +     * @param {*} lat 纬度 22.941386
 | 
	
		
			
				|  |  | +     * @param {*} brng 方位角 45 ---- 正北方:000°或360° 正东方:090° 正南方:180° 正西方:270°
 | 
	
		
			
				|  |  | +     * @param {*} dist 90000距离(米)
 | 
	
		
			
				|  |  | +     * 1、角度转换为弧度公式:弧度=角度×(π ÷度180 )
 | 
	
		
			
				|  |  | +     * 2、弧度转换为角度公式: 角度=弧度×(180÷π)
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    getLonAndLat(lng, lat, brng, dist) {
 | 
	
		
			
				|  |  | +      //大地坐标系资料WGS-84 长半径a=6378137 短半径b=6356752.3142 扁率f=1/298.2572236
 | 
	
		
			
				|  |  | +      var a = 6378137;
 | 
	
		
			
				|  |  | +      var b = 6356752.3142;
 | 
	
		
			
				|  |  | +      var f = 1 / 298.257223563;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var lon1 = lng * 1;
 | 
	
		
			
				|  |  | +      var lat1 = lat * 1;
 | 
	
		
			
				|  |  | +      var s = dist;
 | 
	
		
			
				|  |  | +      var alpha1 = brng * (Math.PI / 180); //mapNumberUtil.rad(brng);
 | 
	
		
			
				|  |  | +      var sinAlpha1 = Math.sin(alpha1);
 | 
	
		
			
				|  |  | +      var cosAlpha1 = Math.cos(alpha1);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      //var tanU1 = (1 - f) * Math.tan(mapNumberUtil.rad(lat1));
 | 
	
		
			
				|  |  | +      var tanU1 = (1 - f) * Math.tan(lat1 * (Math.PI / 180));
 | 
	
		
			
				|  |  | +      var cosU1 = 1 / Math.sqrt(1 + tanU1 * tanU1),
 | 
	
		
			
				|  |  | +        sinU1 = tanU1 * cosU1;
 | 
	
		
			
				|  |  | +      var sigma1 = Math.atan2(tanU1, cosAlpha1);
 | 
	
		
			
				|  |  | +      var sinAlpha = cosU1 * sinAlpha1;
 | 
	
		
			
				|  |  | +      var cosSqAlpha = 1 - sinAlpha * sinAlpha;
 | 
	
		
			
				|  |  | +      var uSq = (cosSqAlpha * (a * a - b * b)) / (b * b);
 | 
	
		
			
				|  |  | +      var A =
 | 
	
		
			
				|  |  | +        1 + (uSq / 16384) * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));
 | 
	
		
			
				|  |  | +      var B = (uSq / 1024) * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var sigma = s / (b * A),
 | 
	
		
			
				|  |  | +        sigmaP = 2 * Math.PI;
 | 
	
		
			
				|  |  | +      while (Math.abs(sigma - sigmaP) > 1e-12) {
 | 
	
		
			
				|  |  | +        var cos2SigmaM = Math.cos(2 * sigma1 + sigma);
 | 
	
		
			
				|  |  | +        var sinSigma = Math.sin(sigma);
 | 
	
		
			
				|  |  | +        var cosSigma = Math.cos(sigma);
 | 
	
		
			
				|  |  | +        var deltaSigma =
 | 
	
		
			
				|  |  | +          B *
 | 
	
		
			
				|  |  | +          sinSigma *
 | 
	
		
			
				|  |  | +          (cos2SigmaM +
 | 
	
		
			
				|  |  | +            (B / 4) *
 | 
	
		
			
				|  |  | +              (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) -
 | 
	
		
			
				|  |  | +                (B / 6) *
 | 
	
		
			
				|  |  | +                  cos2SigmaM *
 | 
	
		
			
				|  |  | +                  (-3 + 4 * sinSigma * sinSigma) *
 | 
	
		
			
				|  |  | +                  (-3 + 4 * cos2SigmaM * cos2SigmaM)));
 | 
	
		
			
				|  |  | +        sigmaP = sigma;
 | 
	
		
			
				|  |  | +        sigma = s / (b * A) + deltaSigma;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1;
 | 
	
		
			
				|  |  | +      var lat2 = Math.atan2(
 | 
	
		
			
				|  |  | +        sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1,
 | 
	
		
			
				|  |  | +        (1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp)
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      var lambda = Math.atan2(
 | 
	
		
			
				|  |  | +        sinSigma * sinAlpha1,
 | 
	
		
			
				|  |  | +        cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      var C = (f / 16) * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));
 | 
	
		
			
				|  |  | +      var L =
 | 
	
		
			
				|  |  | +        lambda -
 | 
	
		
			
				|  |  | +        (1 - C) *
 | 
	
		
			
				|  |  | +          f *
 | 
	
		
			
				|  |  | +          sinAlpha *
 | 
	
		
			
				|  |  | +          (sigma +
 | 
	
		
			
				|  |  | +            C *
 | 
	
		
			
				|  |  | +              sinSigma *
 | 
	
		
			
				|  |  | +              (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var revAz = Math.atan2(sinAlpha, -tmp); // final bearing
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var lngLatObj = {
 | 
	
		
			
				|  |  | +        lng: lon1 + L * (180 / Math.PI),
 | 
	
		
			
				|  |  | +        lat: lat2 * (180 / Math.PI),
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      return lngLatObj;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    delatePoi(item) {
 | 
	
		
			
				|  |  | +      // if (this.arrww.length != 0) {
 | 
	
		
			
				|  |  | +      // this.arrww.forEach((item) => {
 | 
	
		
			
				|  |  | +      viewer.entities.removeById(item);
 | 
	
		
			
				|  |  | +      // });
 | 
	
		
			
				|  |  | +      // this.arrww = [];
 | 
	
		
			
				|  |  | +      // }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    watch: {},
 | 
	
		
			
				|  |  |    watch: {},
 | 
	
		
			
				|  |  | -  beforeDestroy() {},
 | 
	
		
			
				|  |  | +  beforeDestroy() {
 | 
	
		
			
				|  |  | +    this.delatePoi("jt1");
 | 
	
		
			
				|  |  | +    this.delatePoi("dw1");
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 |