zhaoxing
2022-10-31 905b2e5d858889edd8ed861ab058a3a9717d0f80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
"use script"; //开发环境建议开启严格模式
(function (window, mars3d) {
  //创建widget类,需要继承BaseWidget
  class MyWidget extends mars3d.widget.BaseWidget {
    //初始化[仅执行1次]
    create() {
      //创建Graphic图层
      var graphicLayer = new mars3d.layer.GraphicLayer({
        name: this.config.name,
        pid: 99, //图层管理 中使用,父节点id
      });
      this.graphicLayer = graphicLayer;
 
      var center = Cesium.Cartesian3.fromDegrees(117.257436, 31.838742, 1);
 
      var graphic = new mars3d.graphic.CircleEntity({
        name: "合肥市",
        position: center,
        style: {
          radius: 50000.0,
          material: new mars3d.material.CircleWaveMaterialProperty({
            color: Cesium.Color.fromCssColorString("#ff0000"),
            count: 2, //单个圆圈
            speed: 20, //速度,建议取值范围1-100
          }),
        },
      });
      graphicLayer.addGraphic(graphic);
 
      var cities = [
        { name: "六安市", lon: 116.3123, lat: 31.8329 },
        { name: "安庆市", lon: 116.7517, lat: 30.5255 },
        { name: "滁州市", lon: 118.1909, lat: 32.536 },
        { name: "宣城市", lon: 118.8062, lat: 30.6244 },
        { name: "阜阳市", lon: 115.7629, lat: 32.9919 },
        { name: "宿州市", lon: 117.5208, lat: 33.6841 },
        { name: "黄山市", lon: 118.0481, lat: 29.9542 },
        { name: "巢湖市", lon: 117.7734, lat: 31.4978 },
        { name: "亳州市", lon: 116.1914, lat: 33.4698 },
        { name: "池州市", lon: 117.3889, lat: 30.2014 },
        { name: "蚌埠市", lon: 117.4109, lat: 33.1073 },
        { name: "芜湖市", lon: 118.3557, lat: 31.0858 },
        { name: "淮北市", lon: 116.6968, lat: 33.6896 },
        { name: "淮南市", lon: 116.7847, lat: 32.7722 },
        { name: "马鞍山市", lon: 118.6304, lat: 31.5363 },
        { name: "铜陵市", lon: 117.9382, lat: 30.9375 },
      ];
 
      var lineMaterial = mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
        image: "img/textures/lineClr.png",
        color: new Cesium.Color(255 / 255, 201 / 255, 38 / 255, 1),
        speed: 10, //速度,建议取值范围1-100
      });
      for (var i = 0; i < cities.length; i++) {
        var item = cities[i];
        var thisPoint = Cesium.Cartesian3.fromDegrees(item.lon, item.lat, 1);
        var positions = mars3d.PolyUtil.getLinkedPointList(center, thisPoint, 40000, 100); //计算曲线点
 
        console.log(positions)
 
        var primitive = new mars3d.graphic.PolylinePrimitive({
          positions: positions,
          style: {
            width: 2,
            material: lineMaterial, //动画线材质
          },
        });
        primitive.bindPopup(`合肥 - ${item.name}`);
        graphicLayer.addGraphic(primitive);
      }
    }
    //打开激活
    activate() {
      this.map.addLayer(this.graphicLayer);
 
      this.graphicLayer.flyTo();
    }
    //关闭释放
    disable() {
      this.map.removeLayer(this.graphicLayer);
    }
  }
 
  //注册到widget管理器中。
  mars3d.widget.bindClass(MyWidget);
 
  //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。
})(window, mars3d);