showPolygonInter.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. "use script"; //开发环境建议开启严格模式
  2. //显示mars3d.polygon.interPolygon处理后的面内插值分析结果,主要用于测试对比
  3. //显示面的插值计算结果,方便比较分析
  4. var interGraphicLayer;
  5. function clearInterResult() {
  6. if (!interGraphicLayer) {
  7. interGraphicLayer = new mars3d.layer.GraphicLayer();
  8. map.addLayer(interGraphicLayer);
  9. }
  10. interGraphicLayer.clear();
  11. }
  12. function showInterResult(list) {
  13. //分析结果用于测试分析的,不做太多处理,直接清除之前的,只保留一个
  14. clearInterResult();
  15. var pt1, pt2, pt3;
  16. // var geometryInstances = [];
  17. for (var i = 0, len = list.length; i < len; i++) {
  18. var item = list[i];
  19. pt1 = item.point1.pointDM;
  20. pt2 = item.point2.pointDM;
  21. pt3 = item.point3.pointDM;
  22. //点
  23. for (let pt of [item.point1, item.point2, item.point3]) {
  24. var primitive = new mars3d.graphic.PointPrimitive({
  25. position: pt.pointDM,
  26. style: {
  27. pixelSize: 9,
  28. color: Cesium.Color.fromCssColorString("#ff0000").withAlpha(0.5),
  29. },
  30. });
  31. interGraphicLayer.addGraphic(primitive);
  32. primitive.bindTooltip("点高度:" + mars3d.MeasureUtil.formatDistance(pt.height));
  33. }
  34. //横截面面积
  35. item.area = item.area || mars3d.MeasureUtil.getTriangleArea(pt1, pt2, pt3);
  36. //三角网及边线
  37. var positions = [pt1, pt2, pt3, pt1];
  38. //三角网面(单击用)
  39. var primitivePoly = new mars3d.graphic.PolygonPrimitive({
  40. positions: positions,
  41. style: {
  42. material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.Color, {
  43. color: Cesium.Color.fromCssColorString("#ffffff").withAlpha(0.01),
  44. }),
  45. },
  46. });
  47. interGraphicLayer.addGraphic(primitivePoly);
  48. primitivePoly.bindTooltip("三角面积:" + mars3d.MeasureUtil.formatArea(item.area) + "(第" + i + "个)");
  49. //三角网边线
  50. var primitiveLine = new mars3d.graphic.PolylinePrimitive({
  51. positions: positions,
  52. style: {
  53. width: 1,
  54. material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.Color, {
  55. color: Cesium.Color.fromCssColorString("#ffff00").withAlpha(0.3),
  56. }),
  57. },
  58. });
  59. interGraphicLayer.addGraphic(primitiveLine);
  60. }
  61. }
  62. //在f80_interPoly等示例中使用
  63. function showInterLineResult(list) {
  64. //分析结果用于测试分析的,不做太多处理,直接清除之前的,只保留最后一个
  65. clearInterResult();
  66. var colorList = [Cesium.Color.fromCssColorString("#ffff00"), Cesium.Color.fromCssColorString("#00ffff")];
  67. for (var i = 1, len = list.length; i < len; i++) {
  68. var pt1 = list[i - 1];
  69. var pt2 = list[i];
  70. var color = colorList[i % 2];
  71. let graphic = new mars3d.graphic.PolylineEntity({
  72. positions: [pt1, pt2],
  73. style: {
  74. width: 3,
  75. material: color,
  76. depthFailMaterial: color.withAlpha(0.3),
  77. },
  78. });
  79. interGraphicLayer.addGraphic(graphic);
  80. graphic.bindTooltip("长度:" + mars3d.MeasureUtil.formatDistance(Cesium.Cartesian3.distance(pt1, pt2)) + "(第" + i + "段)");
  81. }
  82. }