fuchengshen
2022-07-15 dfdcca599b595c7340b31ee7cd5878f29a3268eb
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
89
90
91
92
93
94
95
96
97
98
99
100
"use script"; //开发环境建议开启严格模式
 
//显示mars3d.polygon.interPolygon处理后的面内插值分析结果,主要用于测试对比
 
//显示面的插值计算结果,方便比较分析
var interGraphicLayer;
 
function clearInterResult() {
  if (!interGraphicLayer) {
    interGraphicLayer = new mars3d.layer.GraphicLayer();
    map.addLayer(interGraphicLayer);
  }
 
  interGraphicLayer.clear();
}
 
function showInterResult(list) {
  //分析结果用于测试分析的,不做太多处理,直接清除之前的,只保留一个
  clearInterResult();
 
  var pt1, pt2, pt3;
  // var geometryInstances = [];
  for (var i = 0, len = list.length; i < len; i++) {
    var item = list[i];
 
    pt1 = item.point1.pointDM;
    pt2 = item.point2.pointDM;
    pt3 = item.point3.pointDM;
 
    //点
    for (let pt of [item.point1, item.point2, item.point3]) {
      var primitive = new mars3d.graphic.PointPrimitive({
        position: pt.pointDM,
        style: {
          pixelSize: 9,
          color: Cesium.Color.fromCssColorString("#ff0000").withAlpha(0.5),
        },
      });
      interGraphicLayer.addGraphic(primitive);
 
      primitive.bindTooltip("点高度:" + mars3d.MeasureUtil.formatDistance(pt.height));
    }
 
    //横截面面积
    item.area = item.area || mars3d.MeasureUtil.getTriangleArea(pt1, pt2, pt3);
 
    //三角网及边线
    var positions = [pt1, pt2, pt3, pt1];
 
    //三角网面(单击用)
    var primitivePoly = new mars3d.graphic.PolygonPrimitive({
      positions: positions,
      style: {
        material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.Color, {
          color: Cesium.Color.fromCssColorString("#ffffff").withAlpha(0.01),
        }),
      },
    });
    interGraphicLayer.addGraphic(primitivePoly);
    primitivePoly.bindTooltip("三角面积:" + mars3d.MeasureUtil.formatArea(item.area) + "(第" + i + "个)");
 
    //三角网边线
    var primitiveLine = new mars3d.graphic.PolylinePrimitive({
      positions: positions,
      style: {
        width: 1,
        material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.Color, {
          color: Cesium.Color.fromCssColorString("#ffff00").withAlpha(0.3),
        }),
      },
    });
    interGraphicLayer.addGraphic(primitiveLine);
  }
}
 
//在f80_interPoly等示例中使用
function showInterLineResult(list) {
  //分析结果用于测试分析的,不做太多处理,直接清除之前的,只保留最后一个
  clearInterResult();
 
  var colorList = [Cesium.Color.fromCssColorString("#ffff00"), Cesium.Color.fromCssColorString("#00ffff")];
 
  for (var i = 1, len = list.length; i < len; i++) {
    var pt1 = list[i - 1];
    var pt2 = list[i];
 
    var color = colorList[i % 2];
 
    let graphic = new mars3d.graphic.PolylineEntity({
      positions: [pt1, pt2],
      style: {
        width: 3,
        material: color,
        depthFailMaterial: color.withAlpha(0.3),
      },
    });
    interGraphicLayer.addGraphic(graphic);
    graphic.bindTooltip("长度:" + mars3d.MeasureUtil.formatDistance(Cesium.Cartesian3.distance(pt1, pt2)) + "(第" + i + "段)");
  }
}