From c2a0f87ace207301984c1b305444cc019616af5a Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Sat, 19 Jun 2021 16:26:18 +0800
Subject: [PATCH] 互斥工具飞行,添加动画实体

---
 config.json                               |    4 
 images/gltf/CMan0005.jpg                  |    0 
 widgets/modelDiagram/Widget.html          |   58 +
 widgets/FlyRoute/css/style.css            |    1 
 widgets/modelDiagram/Widget.js            |  466 ++++++++++++
 widgets/modelDiagram/nls/es/strings.js    |    5 
 widgets/modelDiagram/nls/strings.js       |    7 
 images/gltf/walk.bin                      |    0 
 widgets/modelDiagram/css/style.css        |   74 ++
 widgets/modelDiagram/manifest.json        |   17 
 widgets/visualAngle/Widget.js             |   50 
 images/gltf/walk.gltf                     | 1380 +++++++++++++++++++++++++++++++++++++
 widgets/FlyRoute/Widget.js                |   10 
 widgets/Tool/Widget.js                    |   31 
 images/gltf/Cesium_Man.glb                |    0 
 widgets/modelDiagram/nls/zh-cn/strings.js |    5 
 widgets/spatialAnalysis/Widget.js         |   55 +
 widgets/Tool/css/style.css                |    2 
 18 files changed, 2,137 insertions(+), 28 deletions(-)

diff --git a/config.json b/config.json
index 3e8f3e5..be20db7 100644
--- a/config.json
+++ b/config.json
@@ -244,6 +244,10 @@
       {
         "name": "剖面分析",
         "uri": "widgets/profileAnalysis/Widget"
+      },
+      {
+        "name": "模型gif",
+        "uri": "widgets/modelDiagram/Widget"
       }
     ],
     "groups": [],
diff --git a/images/gltf/CMan0005.jpg b/images/gltf/CMan0005.jpg
new file mode 100644
index 0000000..c5b9c8b
--- /dev/null
+++ b/images/gltf/CMan0005.jpg
Binary files differ
diff --git a/images/gltf/Cesium_Man.glb b/images/gltf/Cesium_Man.glb
new file mode 100644
index 0000000..926e07f
--- /dev/null
+++ b/images/gltf/Cesium_Man.glb
Binary files differ
diff --git a/images/gltf/walk.bin b/images/gltf/walk.bin
new file mode 100644
index 0000000..ba419ef
--- /dev/null
+++ b/images/gltf/walk.bin
Binary files differ
diff --git a/images/gltf/walk.gltf b/images/gltf/walk.gltf
new file mode 100644
index 0000000..9213345
--- /dev/null
+++ b/images/gltf/walk.gltf
@@ -0,0 +1,1380 @@
+{
+    "asset": {
+        "version": "2.0",
+        "generator": "babylon.js glTF exporter for 3ds max 2018 v1.3.27"
+    },
+    "scene": 0,
+    "scenes": [
+        {
+            "nodes": [
+                0,
+                11
+            ],
+            "extensions": {}
+        }
+    ],
+    "nodes": [
+        {
+            "children": [
+                1,
+                4,
+                7,
+                9
+            ],
+            "mesh": 0,
+            "translation": [
+                -1.49011612E-08,
+                -0.0130780032,
+                0.008169825
+            ],
+            "rotation": [
+                2.910383E-11,
+                0.0,
+                0.0,
+                1.0
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Box01"
+        },
+        {
+            "children": [
+                2
+            ],
+            "mesh": 1,
+            "translation": [
+                -0.0942113549,
+                0.8941367,
+                -0.00313891144
+            ],
+            "rotation": [
+                0.353553385,
+                -0.353553474,
+                0.612372458,
+                0.6123724
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Cylinder06"
+        },
+        {
+            "children": [
+                3
+            ],
+            "mesh": 2,
+            "translation": [
+                -0.0161913633,
+                0.0015315339,
+                0.3926737
+            ],
+            "rotation": [
+                -1.47668455E-09,
+                -0.130526155,
+                1.12165441E-08,
+                0.9914449
+            ],
+            "scale": [
+                0.9999998,
+                0.9999998,
+                0.9999999
+            ],
+            "name": "Cylinder08"
+        },
+        {
+            "mesh": 3,
+            "translation": [
+                0.112677455,
+                0.0103946328,
+                0.504523754
+            ],
+            "rotation": [
+                -1.77635663E-15,
+                1.11758691E-08,
+                -2.220447E-16,
+                1.0
+            ],
+            "scale": [
+                1.00000024,
+                1.00000012,
+                1.00000012
+            ],
+            "name": "Cylinder04"
+        },
+        {
+            "children": [
+                5
+            ],
+            "mesh": 4,
+            "translation": [
+                0.08414413,
+                0.8941367,
+                -0.00313891144
+            ],
+            "rotation": [
+                -0.5416752,
+                0.54167515,
+                -0.454519629,
+                -0.4545194
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Cylinder05"
+        },
+        {
+            "children": [
+                6
+            ],
+            "mesh": 5,
+            "translation": [
+                -0.0161913484,
+                -0.0138195232,
+                0.392673582
+            ],
+            "rotation": [
+                0.0,
+                -0.173648208,
+                -1.80376026E-15,
+                0.9848078
+            ],
+            "scale": [
+                0.99999994,
+                1.0,
+                0.99999994
+            ],
+            "name": "Cylinder07"
+        },
+        {
+            "mesh": 6,
+            "translation": [
+                0.112677395,
+                -0.008177057,
+                0.504523754
+            ],
+            "rotation": [
+                7.215042E-15,
+                0.1736482,
+                9.018802E-16,
+                0.9848078
+            ],
+            "scale": [
+                0.99999994,
+                1.0,
+                0.99999994
+            ],
+            "name": "Cylinder10"
+        },
+        {
+            "children": [
+                8
+            ],
+            "mesh": 7,
+            "translation": [
+                0.1844974,
+                1.43335843,
+                -0.0382648632
+            ],
+            "rotation": [
+                0.415626884,
+                -0.415626973,
+                0.572061539,
+                0.5720614
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Cylinder01"
+        },
+        {
+            "mesh": 8,
+            "translation": [
+                0.0013397038,
+                -0.06438017,
+                0.2907442
+            ],
+            "rotation": [
+                -8.930709E-16,
+                0.104528405,
+                -1.56287394E-15,
+                0.9945219
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Cylinder03"
+        },
+        {
+            "children": [
+                10
+            ],
+            "mesh": 9,
+            "translation": [
+                -0.184497371,
+                1.43335843,
+                -0.0382648669
+            ],
+            "rotation": [
+                0.5896463,
+                -0.589646339,
+                0.390278459,
+                0.390278339
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Cylinder02"
+        },
+        {
+            "mesh": 10,
+            "translation": [
+                0.0013397336,
+                0.0643803,
+                0.2907442
+            ],
+            "rotation": [
+                8.882124E-16,
+                -0.008726528,
+                0.0,
+                0.9999619
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Cylinder09"
+        },
+        {
+            "translation": [
+                0.0,
+                0.0,
+                0.0
+            ],
+            "rotation": [
+                0.0,
+                0.0,
+                0.0,
+                1.0
+            ],
+            "scale": [
+                1.0,
+                1.0,
+                1.0
+            ],
+            "name": "Default light"
+        }
+    ],
+    "meshes": [
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 1,
+                        "NORMAL": 2,
+                        "TEXCOORD_0": 3
+                    },
+                    "indices": 0,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Box01"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 5,
+                        "NORMAL": 6,
+                        "TEXCOORD_0": 7
+                    },
+                    "indices": 4,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder06"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 9,
+                        "NORMAL": 10,
+                        "TEXCOORD_0": 11
+                    },
+                    "indices": 8,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder08"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 13,
+                        "NORMAL": 14,
+                        "TEXCOORD_0": 15
+                    },
+                    "indices": 12,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder04"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 17,
+                        "NORMAL": 18,
+                        "TEXCOORD_0": 19
+                    },
+                    "indices": 16,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder05"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 21,
+                        "NORMAL": 22,
+                        "TEXCOORD_0": 23
+                    },
+                    "indices": 20,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder07"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 25,
+                        "NORMAL": 26,
+                        "TEXCOORD_0": 27
+                    },
+                    "indices": 24,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder10"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 29,
+                        "NORMAL": 30,
+                        "TEXCOORD_0": 31
+                    },
+                    "indices": 28,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder01"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 33,
+                        "NORMAL": 34,
+                        "TEXCOORD_0": 35
+                    },
+                    "indices": 32,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder03"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 37,
+                        "NORMAL": 38,
+                        "TEXCOORD_0": 39
+                    },
+                    "indices": 36,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder02"
+        },
+        {
+            "primitives": [
+                {
+                    "attributes": {
+                        "POSITION": 41,
+                        "NORMAL": 42,
+                        "TEXCOORD_0": 43
+                    },
+                    "indices": 40,
+                    "mode": 4,
+                    "material": 0
+                }
+            ],
+            "name": "Cylinder09"
+        }
+    ],
+    "accessors": [
+        {
+            "bufferView": 0,
+            "componentType": 5123,
+            "count": 4647,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "componentType": 5126,
+            "count": 4647,
+            "max": [
+                0.208098963,
+                1.789171,
+                0.178014666
+            ],
+            "min": [
+                -0.208098933,
+                0.8495143,
+                -0.140214667
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 55764,
+            "componentType": 5126,
+            "count": 4647,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "componentType": 5126,
+            "count": 4647,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 9296,
+            "componentType": 5123,
+            "count": 954,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 111528,
+            "componentType": 5126,
+            "count": 954,
+            "max": [
+                0.134084374,
+                0.093583554,
+                0.4398567
+            ],
+            "min": [
+                -0.11600545,
+                -0.102662392,
+                -0.120039582
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 122976,
+            "componentType": 5126,
+            "count": 954,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 37176,
+            "componentType": 5126,
+            "count": 954,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 11204,
+            "componentType": 5123,
+            "count": 855,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 134424,
+            "componentType": 5126,
+            "count": 855,
+            "max": [
+                0.112677455,
+                0.0803510547,
+                0.510011554
+            ],
+            "min": [
+                -0.08675435,
+                -0.08289556,
+                -0.06503677
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 144684,
+            "componentType": 5126,
+            "count": 855,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 44808,
+            "componentType": 5126,
+            "count": 855,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 12916,
+            "componentType": 5123,
+            "count": 60,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 154944,
+            "componentType": 5126,
+            "count": 60,
+            "max": [
+                0.100127876,
+                0.05027426,
+                0.0003657341
+            ],
+            "min": [
+                -2.98023224E-08,
+                -0.0502742827,
+                -0.06948688
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 155664,
+            "componentType": 5126,
+            "count": 60,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 51648,
+            "componentType": 5126,
+            "count": 60,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 13036,
+            "componentType": 5123,
+            "count": 954,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 156384,
+            "componentType": 5126,
+            "count": 954,
+            "max": [
+                0.134084389,
+                0.08529524,
+                0.4398568
+            ],
+            "min": [
+                -0.116005421,
+                -0.1036508,
+                -0.118922651
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 167832,
+            "componentType": 5126,
+            "count": 954,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 52128,
+            "componentType": 5126,
+            "count": 954,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 14944,
+            "componentType": 5123,
+            "count": 855,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 179280,
+            "componentType": 5126,
+            "count": 855,
+            "max": [
+                0.11267738,
+                0.08513826,
+                0.51000917
+            ],
+            "min": [
+                -0.08675423,
+                -0.0781301856,
+                -0.06503734
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 189540,
+            "componentType": 5126,
+            "count": 855,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 59760,
+            "componentType": 5126,
+            "count": 855,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 16656,
+            "componentType": 5123,
+            "count": 60,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 199800,
+            "componentType": 5126,
+            "count": 60,
+            "max": [
+                0.100128353,
+                0.0502711572,
+                0.000365678221
+            ],
+            "min": [
+                0.0,
+                -0.05027117,
+                -0.06950417
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 200520,
+            "componentType": 5126,
+            "count": 60,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 66600,
+            "componentType": 5126,
+            "count": 60,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 16776,
+            "componentType": 5123,
+            "count": 558,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 201240,
+            "componentType": 5126,
+            "count": 558,
+            "max": [
+                0.09722313,
+                0.052497685,
+                0.320165753
+            ],
+            "min": [
+                -0.079387784,
+                -0.119376868,
+                -0.0759607553
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 207936,
+            "componentType": 5126,
+            "count": 558,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 67080,
+            "componentType": 5126,
+            "count": 558,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 17892,
+            "componentType": 5123,
+            "count": 3084,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 214632,
+            "componentType": 5126,
+            "count": 3084,
+            "max": [
+                0.132605791,
+                0.0586593747,
+                0.361923158
+            ],
+            "min": [
+                -0.0450504422,
+                -0.107439429,
+                -0.0585205555
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 251640,
+            "componentType": 5126,
+            "count": 3084,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 71544,
+            "componentType": 5126,
+            "count": 3084,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 24060,
+            "componentType": 5123,
+            "count": 558,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 288648,
+            "componentType": 5126,
+            "count": 558,
+            "max": [
+                0.09722316,
+                0.1193769,
+                0.320165753
+            ],
+            "min": [
+                -0.0793877244,
+                -0.0524976552,
+                -0.0759607553
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 295344,
+            "componentType": 5126,
+            "count": 558,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 96216,
+            "componentType": 5126,
+            "count": 558,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 0,
+            "byteOffset": 25176,
+            "componentType": 5123,
+            "count": 3084,
+            "type": "SCALAR",
+            "name": "accessorIndices"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 302040,
+            "componentType": 5126,
+            "count": 3084,
+            "max": [
+                0.132605851,
+                0.107439414,
+                0.3619231
+            ],
+            "min": [
+                -0.0450504422,
+                -0.0586593747,
+                -0.0585204959
+            ],
+            "type": "VEC3",
+            "name": "accessorPositions"
+        },
+        {
+            "bufferView": 1,
+            "byteOffset": 339048,
+            "componentType": 5126,
+            "count": 3084,
+            "type": "VEC3",
+            "name": "accessorNormals"
+        },
+        {
+            "bufferView": 2,
+            "byteOffset": 100680,
+            "componentType": 5126,
+            "count": 3084,
+            "type": "VEC2",
+            "name": "accessorUVs"
+        },
+        {
+            "bufferView": 3,
+            "componentType": 5126,
+            "count": 19,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 4,
+            "componentType": 5126,
+            "count": 19,
+            "type": "VEC3",
+            "name": "accessorAnimationPositions"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 76,
+            "componentType": 5126,
+            "count": 15,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "componentType": 5126,
+            "count": 15,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 136,
+            "componentType": 5126,
+            "count": 27,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 240,
+            "componentType": 5126,
+            "count": 27,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 244,
+            "componentType": 5126,
+            "count": 21,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 672,
+            "componentType": 5126,
+            "count": 21,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 328,
+            "componentType": 5126,
+            "count": 23,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 1008,
+            "componentType": 5126,
+            "count": 23,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 420,
+            "componentType": 5126,
+            "count": 22,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 1376,
+            "componentType": 5126,
+            "count": 22,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 508,
+            "componentType": 5126,
+            "count": 17,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 1728,
+            "componentType": 5126,
+            "count": 17,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 576,
+            "componentType": 5126,
+            "count": 20,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 2000,
+            "componentType": 5126,
+            "count": 20,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 656,
+            "componentType": 5126,
+            "count": 19,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 2320,
+            "componentType": 5126,
+            "count": 19,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 732,
+            "componentType": 5126,
+            "count": 22,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 2624,
+            "componentType": 5126,
+            "count": 22,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        },
+        {
+            "bufferView": 3,
+            "byteOffset": 820,
+            "componentType": 5126,
+            "count": 15,
+            "max": [
+                1.33333337
+            ],
+            "min": [
+                0.0
+            ],
+            "type": "SCALAR",
+            "name": "accessorAnimationInput"
+        },
+        {
+            "bufferView": 5,
+            "byteOffset": 2976,
+            "componentType": 5126,
+            "count": 15,
+            "type": "VEC4",
+            "name": "accessorAnimationRotations"
+        }
+    ],
+    "bufferViews": [
+        {
+            "buffer": 0,
+            "byteLength": 31344,
+            "name": "bufferViewScalar"
+        },
+        {
+            "buffer": 0,
+            "byteOffset": 31344,
+            "byteLength": 376056,
+            "byteStride": 12,
+            "name": "bufferViewFloatVec3"
+        },
+        {
+            "buffer": 0,
+            "byteOffset": 407400,
+            "byteLength": 125352,
+            "byteStride": 8,
+            "name": "bufferViewFloatVec2"
+        },
+        {
+            "buffer": 0,
+            "byteOffset": 532752,
+            "byteLength": 880,
+            "name": "bufferViewAnimationFloatScalar"
+        },
+        {
+            "buffer": 0,
+            "byteOffset": 533632,
+            "byteLength": 228,
+            "name": "bufferViewAnimationFloatVec3"
+        },
+        {
+            "buffer": 0,
+            "byteOffset": 533860,
+            "byteLength": 3216,
+            "name": "bufferViewAnimationFloatVec4"
+        }
+    ],
+    "buffers": [
+        {
+            "uri": "walk.bin",
+            "byteLength": 537076
+        }
+    ],
+    "materials": [
+        {
+            "pbrMetallicRoughness": {
+                "baseColorFactor": [
+                    1.0,
+                    1.0,
+                    1.0,
+                    1.0
+                ],
+                "baseColorTexture": {
+                    "index": 0,
+                    "texCoord": 0
+                },
+                "metallicFactor": 0.0,
+                "roughnessFactor": 0.461918056
+            },
+            "emissiveFactor": [
+                0.0,
+                0.0,
+                0.0
+            ],
+            "alphaMode": "OPAQUE",
+            "doubleSided": true,
+            "name": "CMan0005"
+        }
+    ],
+    "textures": [
+        {
+            "sampler": 0,
+            "source": 0,
+            "name": "CMan0005.jpg"
+        }
+    ],
+    "images": [
+        {
+            "uri": "CMan0005.jpg"
+        }
+    ],
+    "samplers": [
+        {
+            "magFilter": 9729,
+            "minFilter": 9987,
+            "wrapS": 10497,
+            "wrapT": 10497
+        }
+    ],
+    "animations": [
+        {
+            "channels": [
+                {
+                    "sampler": 0,
+                    "target": {
+                        "node": 0,
+                        "path": "translation"
+                    }
+                },
+                {
+                    "sampler": 1,
+                    "target": {
+                        "node": 1,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 2,
+                    "target": {
+                        "node": 2,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 3,
+                    "target": {
+                        "node": 3,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 4,
+                    "target": {
+                        "node": 4,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 5,
+                    "target": {
+                        "node": 5,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 6,
+                    "target": {
+                        "node": 6,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 7,
+                    "target": {
+                        "node": 7,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 8,
+                    "target": {
+                        "node": 8,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 9,
+                    "target": {
+                        "node": 9,
+                        "path": "rotation"
+                    }
+                },
+                {
+                    "sampler": 10,
+                    "target": {
+                        "node": 10,
+                        "path": "rotation"
+                    }
+                }
+            ],
+            "samplers": [
+                {
+                    "input": 44,
+                    "interpolation": "LINEAR",
+                    "output": 45
+                },
+                {
+                    "input": 46,
+                    "interpolation": "LINEAR",
+                    "output": 47
+                },
+                {
+                    "input": 48,
+                    "interpolation": "LINEAR",
+                    "output": 49
+                },
+                {
+                    "input": 50,
+                    "interpolation": "LINEAR",
+                    "output": 51
+                },
+                {
+                    "input": 52,
+                    "interpolation": "LINEAR",
+                    "output": 53
+                },
+                {
+                    "input": 54,
+                    "interpolation": "LINEAR",
+                    "output": 55
+                },
+                {
+                    "input": 56,
+                    "interpolation": "LINEAR",
+                    "output": 57
+                },
+                {
+                    "input": 58,
+                    "interpolation": "LINEAR",
+                    "output": 59
+                },
+                {
+                    "input": 60,
+                    "interpolation": "LINEAR",
+                    "output": 61
+                },
+                {
+                    "input": 62,
+                    "interpolation": "LINEAR",
+                    "output": 63
+                },
+                {
+                    "input": 64,
+                    "interpolation": "LINEAR",
+                    "output": 65
+                }
+            ],
+            "name": "All Animations"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/widgets/FlyRoute/Widget.js b/widgets/FlyRoute/Widget.js
index f46210a..30dfac2 100644
--- a/widgets/FlyRoute/Widget.js
+++ b/widgets/FlyRoute/Widget.js
@@ -14,10 +14,12 @@
 			topic.subscribe("closeFlyRoute", lang.hitch(this, this.closeFlyRoute));
 			var self = this;
 			// this.inherited(arguments);
-		
+
 
 			$('.close-flyrouter').click(function () {
-				self.closeFlyRoute('FlyRoute')
+				self.closeFlyRoute('FlyRoute');
+				$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+				topic.publish('closeFly', 'closeFly');
 			});
 		},
 
@@ -46,7 +48,7 @@
 					}
 					// }
 
-					
+
 					self._loadRoute(self.allRoutes[0].sites);
 
 					$("#flightRoute").on("change", function (e) {
@@ -238,7 +240,7 @@
 			this.resize();
 		},
 
-		resize: function resize() {},
+		resize: function resize() { },
 
 		destroy: function destroy() {
 			//销毁的时候触发
diff --git a/widgets/FlyRoute/css/style.css b/widgets/FlyRoute/css/style.css
index 6e38cb4..3b0a355 100644
--- a/widgets/FlyRoute/css/style.css
+++ b/widgets/FlyRoute/css/style.css
@@ -8,6 +8,7 @@
 	border: 1px solid rgb(212, 212, 212);
 	border-radius: 5px;
 	color: rgb(0, 0, 0);
+	z-index: 9 !important;
 }
 
 /* 头部 */
diff --git a/widgets/Tool/Widget.js b/widgets/Tool/Widget.js
index d4b6ef3..54b7769 100644
--- a/widgets/Tool/Widget.js
+++ b/widgets/Tool/Widget.js
@@ -62,6 +62,12 @@
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-spatialAnalysis").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
+
+
+
 
 					$('.jimu-widget-Measurement').show();
 
@@ -92,6 +98,9 @@
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-spatialAnalysis").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					topic.publish('openRolling', 'Rolling');
 
@@ -121,6 +130,9 @@
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-spatialAnalysis").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					topic.publish('openSplitScreen', 'SplitScreen');
 
@@ -150,6 +162,9 @@
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-spatialAnalysis").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					topic.publish('openSign', 'Sign');
 
@@ -181,6 +196,9 @@
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-spatialAnalysis").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					$('.jimu-widget-CoorPosition').show();
 
@@ -200,7 +218,9 @@
 					topic.publish('closeSplitScreen', 'SplitScreen');
 					// 关闭标记
 					topic.publish('closeSign', 'Sign');
+
 					topic.publish('closeFlyRoute', 'FlyRoute');
+
 					$('.jimu-widget-CoorPosition').hide();
 					// 关闭可视
 					topic.publish('closev', '');
@@ -208,11 +228,15 @@
 					topic.publish('closep', '');
 					// 关闭坡度
 					topic.publish('closes', '');
+
 					$(".jimu-widget-visibleArea").hide();
 					$(".jimu-widget-profileAnalysis").hide();
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-spatialAnalysis").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					$('.jimu-widget-MapPrinting').show();
 
@@ -232,6 +256,7 @@
 					topic.publish('closeFlyRoute', 'FlyRoute');
 					$('.jimu-widget-CoorPosition').hide();
 					$('.jimu-widget-MapPrinting').hide();
+					$('.tool-y-box').stop().hide();
 					// 关闭可视
 					topic.publish('closev', '');
 					// 关闭剖面
@@ -240,9 +265,11 @@
 					topic.publish('closes', '');
 					$(".jimu-widget-profileAnalysis").hide();
 					$(".jimu-widget-slope").hide();
-					$('.tool-y-box').stop().hide();
 					$(".jimu-widget-visibleArea").hide();
-					
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
+
 					$(".jimu-widget-spatialAnalysis").show();
 				})
 
diff --git a/widgets/Tool/css/style.css b/widgets/Tool/css/style.css
index d1a52a0..5733e7c 100644
--- a/widgets/Tool/css/style.css
+++ b/widgets/Tool/css/style.css
@@ -9,7 +9,7 @@
   /* border-radius: 6px 0 0 6px; */
   text-align: center;
   cursor: pointer;
-  z-index: 13 !important
+  z-index: 14 !important
 }
 
 .jimu-widget-Tool .tool-bar {
diff --git a/widgets/modelDiagram/Widget.html b/widgets/modelDiagram/Widget.html
new file mode 100644
index 0000000..1afd03c
--- /dev/null
+++ b/widgets/modelDiagram/Widget.html
@@ -0,0 +1,58 @@
+<div>
+	<!-- <div id="modelDiagramToolbar" class="param-container tool-bar">
+		<div style="width:215px;">
+			<select id="modelDiagramSelOpt" class="selectpicker show-tick form-control">
+				<option selected value = "1">实体方式加载</option>
+				<option value="2">实例化方式加载</option>
+			</select>
+		</div>
+	</div> -->
+	<!-- <div id="cesiumContainer" class="fullSize"></div> -->
+    <!-- <div id="loadingOverlay"><h1>Loading...</h1></div>
+    <div id="toolbarcesium">//工具栏
+      <table>
+        <tbody>
+          <tr>
+            <td>Silhouette</td>
+            <td><input type="checkbox" data-bind="checked: silhouette"></td>
+          </tr>
+          <tr>
+            <td>Black and White</td>
+            <td>
+              <input type="checkbox" data-bind="checked: blackAndWhiteShow">
+            </td>
+            <td>
+              <input type="range" min="1" max="10" step="1" data-bind="value: blackAndWhiteGradations, valueUpdate: 'input'">
+            </td>
+          </tr>
+          <tr>
+            <td>Brightness</td>
+            <td>
+              <input type="checkbox" data-bind="checked: brightnessShow">
+            </td>
+            <td>
+              <input type="range" min="0" max="1" step="0.01" data-bind="value: brightnessValue, valueUpdate: 'input'">
+            </td>
+          </tr>
+          <tr>
+            <td>Night Vision</td>
+            <td>
+              <input type="checkbox" data-bind="checked: nightVisionShow">
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div> -->
+    <div class="modelDiagramMain">
+      <input type="number" class="closemodoinput" id="modelDiagramjdu"  value="116" placeholder="经度">
+      <input type="number" class="closemodoinput" id="modelDiagramwdu"  value="29" placeholder="纬度">
+      <input type="number" class="closemodoinput"  id="modelDiagramgdu" value="1000" placeholder="高度">
+      <div class="seemodo">跟踪</div>
+      <div class="closemodo">添加/删除</div>
+      <div class="beginPlay">自动行走</div>
+      <div class="stopPlay">stop</div>
+    </div>
+	<i class="layui-icon closesmodelDiagram">
+		&#x1006;
+	</i>
+</div>
\ No newline at end of file
diff --git a/widgets/modelDiagram/Widget.js b/widgets/modelDiagram/Widget.js
new file mode 100644
index 0000000..d2cca48
--- /dev/null
+++ b/widgets/modelDiagram/Widget.js
@@ -0,0 +1,466 @@
+///////////////////////////////////////////////////////////////////////////
+// Copyright © 2019 zhongsong. All Rights Reserved.
+// 模块描述:显示坐标
+///////////////////////////////////////////////////////////////////////////
+define([
+	'dojo/_base/declare',
+	'dojo/_base/lang',
+	'dojo/_base/array',
+	'dojo/_base/html',
+	'dojo/topic',
+	'jimu/BaseWidget',
+	'jimu/utils',
+	'jimu/css!libs/zTree_v3/css/zTreeStyle/zTreeStyle.css',
+	'libs/zTree_v3/js/jquery.ztree.all'
+],
+	function (declare,
+		lang,
+		array,
+		html,
+		topic,
+		BaseWidget,
+		aspect,
+		string,
+		utils
+	) {
+		return declare([BaseWidget], {
+			baseClass: 'jimu-widget-modelDiagram',
+			name: 'modelDiagram',
+			layers: {},
+			startup: function () {
+				var that = this;
+				// 暴露在外的接口
+				// that.beginModelDiagram();
+				// that.beginCesium();
+
+				$('.seemodo').click(() => {
+					that.seemodo();
+				})
+
+				$('.closemodo').click(() => {
+					that.closeModo();
+				})
+				$('.beginPlay').click(() => {
+					that.beginPlay();
+				})
+				$('.stopPlay').click(() => {
+					that.stopPlay();
+				})
+				$('.closesmodelDiagram').click(() => {
+					console.log(3423)
+					$('.jimu-widget-modelDiagram').hide();
+					if (that.openEntity) {
+						that.map.entities.removeAll();
+					}
+				})
+
+			},
+			beginCesium: function (a = 116.058987, b = 28.973468, g = 1000) {
+				var viewer = this.map
+					, that = this
+					, url = "./images/gltf/Cesium_Man.glb";
+				// var startPosition = new Cesium.Cartesian3(
+				// 	116.058987,
+				// 	28.973468,
+				// 	1000
+				// );
+				// var endPosition = new Cesium.Cartesian3(
+				// 	116.158987,
+				// 	29.073468,
+				// 	1000
+				// );
+				// var position = Cesium.Cartesian3.fromDegrees(116.058987, 28.973468);
+				//动态 //缺少viewer.timeline时间轴
+				//Make sure viewer is at the desired time.
+				//Make sure viewer is at the desired time.
+				// var start = Cesium.JulianDate.fromDate(new Date(2018, 11, 12, 15));
+				// var totalSeconds = 10;
+				// var stop = Cesium.JulianDate.addSeconds(
+				// 	start,
+				// 	totalSeconds,
+				// 	new Cesium.JulianDate()
+				// );
+				// viewer.clock.startTime = start.clone();
+				// viewer.clock.stopTime = stop.clone();
+				// viewer.clock.currentTime = start.clone();
+				// viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
+				// // console.log(viewer.timeline,111)
+				// viewer.timeline.zoomTo = function (startTime, stopTime) {
+				// 	//>>includeStart('debug', pragmas.debug);
+				// 	if (!defined(startTime)) {
+				// 		throw new DeveloperError("startTime is required.");
+				// 	}
+				// 	if (!defined(stopTime)) {
+				// 		throw new DeveloperError("stopTime is required");
+				// 	}
+				// 	if (JulianDate.lessThanOrEquals(stopTime, startTime)) {
+				// 		throw new DeveloperError("Start time must come before end time.");
+				// 	}
+				// 	//>>includeEnd('debug');
+
+				// 	this._startJulian = startTime;
+				// 	this._endJulian = stopTime;
+				// 	this._timeBarSecondsSpan = JulianDate.secondsDifference(stopTime, startTime);
+
+				// 	// If clock is not unbounded, clamp timeline range to clock.
+				// 	if (this._clock && this._clock.clockRange !== ClockRange$1.UNBOUNDED) {
+				// 		var clockStart = this._clock.startTime;
+				// 		var clockEnd = this._clock.stopTime;
+				// 		var clockSpan = JulianDate.secondsDifference(clockEnd, clockStart);
+				// 		var startOffset = JulianDate.secondsDifference(
+				// 			clockStart,
+				// 			this._startJulian
+				// 		);
+				// 		var endOffset = JulianDate.secondsDifference(clockEnd, this._endJulian);
+
+				// 		if (this._timeBarSecondsSpan >= clockSpan) {
+				// 			// if new duration longer than clock range duration, clamp to full range.
+				// 			this._timeBarSecondsSpan = clockSpan;
+				// 			this._startJulian = this._clock.startTime;
+				// 			this._endJulian = this._clock.stopTime;
+				// 		} else if (startOffset > 0) {
+				// 			// if timeline start is before clock start, shift right
+				// 			this._endJulian = JulianDate.addSeconds(
+				// 				this._endJulian,
+				// 				startOffset,
+				// 				new JulianDate()
+				// 			);
+				// 			this._startJulian = clockStart;
+				// 			this._timeBarSecondsSpan = JulianDate.secondsDifference(
+				// 				this._endJulian,
+				// 				this._startJulian
+				// 			);
+				// 		} else if (endOffset < 0) {
+				// 			// if timeline end is after clock end, shift left
+				// 			this._startJulian = JulianDate.addSeconds(
+				// 				this._startJulian,
+				// 				endOffset,
+				// 				new JulianDate()
+				// 			);
+				// 			this._endJulian = clockEnd;
+				// 			this._timeBarSecondsSpan = JulianDate.secondsDifference(
+				// 				this._endJulian,
+				// 				this._startJulian
+				// 			);
+				// 		}
+				// 	}
+
+				// 	this._makeTics();
+
+				// 	var evt = document.createEvent("Event");
+				// 	evt.initEvent("setzoom", true, true);
+				// 	evt.startJulian = this._startJulian;
+				// 	evt.endJulian = this._endJulian;
+				// 	evt.epochJulian = this._epochJulian;
+				// 	evt.totalSpan = this._timeBarSecondsSpan;
+				// 	evt.mainTicSpan = this._mainTicSpan;
+				// 	this._topDiv.dispatchEvent(evt);
+				// }
+				// viewer.timeline.zoomTo(start, stop);
+
+				// // Create a path for our vehicle by lerping between two positions.
+				// var position = new Cesium.SampledPositionProperty();
+				// var startPosition = Cesium.Cartesian3.fromDegrees(116.058987, 28.973468, 1000);
+				// var endPosition = Cesium.Cartesian3.fromDegrees(116.158987, 29.073468, 1000);
+				// // var startPosition = new Cesium.Cartesian3(
+				// // 	-2379556.799372864,
+				// // 	-4665528.205030263,
+				// // 	3628013.106599678
+				// // );
+				// // var endPosition = new Cesium.Cartesian3(
+				// // 	-2379603.7074103747,
+				// // 	-4665623.48990283,
+				// // 	3627860.82704567
+				// // );
+				// // A velocity vector property will give us the entity's speed and direction at any given time.
+				// var velocityVectorProperty = new Cesium.VelocityVectorProperty(
+				// 	position,
+				// 	false
+				// );
+				// var velocityVector = new Cesium.Cartesian3();
+				// // Store the wheel's rotation over time in a SampledProperty.
+				// var wheelAngleProperty = new Cesium.SampledProperty(Number);
+				// var wheelAngle = 0;
+
+				// var numberOfSamples = 100;
+				// for (var i = 0; i <= numberOfSamples; ++i) {
+				// 	var factor = i / numberOfSamples;
+				// 	var time = Cesium.JulianDate.addSeconds(
+				// 		start,
+				// 		factor * totalSeconds,
+				// 		new Cesium.JulianDate()
+				// 	);
+
+				// 	// Lerp using a non-linear factor so that the vehicle accelerates.
+				// 	var locationFactor = Math.pow(factor, 2);
+				// 	var location = Cesium.Cartesian3.lerp(
+				// 		startPosition,
+				// 		endPosition,
+				// 		locationFactor,
+				// 		new Cesium.Cartesian3()
+				// 	);
+				// 	position.addSample(time, location);
+				// 	// Rotate the wheels based on how fast the vehicle is moving at each timestep.
+				// 	velocityVectorProperty.getValue(time, velocityVector);
+				// 	var metersPerSecond = Cesium.Cartesian3.magnitude(velocityVector);
+				// 	var wheelRadius = 0.52; //in meters.
+				// 	var circumference = Math.PI * wheelRadius * 2;
+				// 	var rotationsPerSecond = metersPerSecond / circumference;
+
+				// 	wheelAngle +=
+				// 		((Math.PI * 2 * totalSeconds) / numberOfSamples) *
+				// 		rotationsPerSecond;
+				// 	wheelAngleProperty.addSample(time, wheelAngle);
+				// }
+
+				// function updateSpeedLabel(time, result) {
+				// 	velocityVectorProperty.getValue(time, velocityVector);
+				// 	var metersPerSecond = Cesium.Cartesian3.magnitude(velocityVector);
+				// 	var kmPerHour = Math.round(metersPerSecond * 3.6);
+
+				// 	return kmPerHour + " km/hr";
+				// }
+
+				// var rotationProperty = new Cesium.CallbackProperty(function (
+				// 	time,
+				// 	result
+				// ) {
+				// 	return Cesium.Quaternion.fromAxisAngle(
+				// 		Cesium.Cartesian3.UNIT_X,
+				// 		wheelAngleProperty.getValue(time),
+				// 		result
+				// 	);
+				// },
+				// 	false);
+
+				// var wheelTransformation = new Cesium.NodeTransformationProperty({
+				// 	rotation: rotationProperty,
+				// });
+
+				// var nodeTransformations = {
+				// 	Wheels: wheelTransformation,
+				// 	Wheels_mid: wheelTransformation,
+				// 	Wheels_rear: wheelTransformation,
+				// };
+
+				// // Add our vehicle model.
+				// var vehicleEntity = viewer.entities.add({
+				// 	position: position,
+				// 	orientation: new Cesium.VelocityOrientationProperty(position), // Automatically set the vehicle's orientation to the direction it's facing.
+				// 	model: {
+				// 		uri: url,
+				// 		runAnimations: false,
+				// 		nodeTransformations: nodeTransformations,
+				// 	},
+				// 	label: {
+				// 		text: new Cesium.CallbackProperty(updateSpeedLabel, false),
+				// 		font: "20px sans-serif",
+				// 		showBackground: true,
+				// 		distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
+				// 			0.0,
+				// 			100.0
+				// 		),
+				// 		eyeOffset: new Cesium.Cartesian3(0, 3.5, 0),
+				// 	},
+				// });
+
+				// viewer.trackedEntity = vehicleEntity;
+				// vehicleEntity.viewFrom = new Cesium.Cartesian3(-10.0, 7.0, 4.0);
+
+				//静态
+				// var position = Cesium.Cartesian3.fromDegrees(116.058987, 28.973468, 1000);
+				var position = Cesium.Cartesian3.fromDegrees(a, b, g);
+				viewer.trackedEntity = viewer.entities.add({//viewer.trackedEntity跟随
+					name: url,
+					position: position,
+					model: {
+						uri: url,
+					},
+				});
+				that.entityPeople = viewer.trackedEntity;
+
+				// var viewModel = {// 以下是工具栏
+				// 	blackAndWhiteShow: false,
+				// 	blackAndWhiteGradations: 5.0,
+				// 	brightnessShow: false,
+				// 	brightnessValue: 0.5,
+				// 	nightVisionShow: false,
+				// 	silhouette: false,
+				// };
+
+				// Cesium.knockout.track(viewModel);
+				// var toolbar = document.getElementById("toolbarcesium");
+				// Cesium.knockout.applyBindings(viewModel, toolbar);
+				// for (var name in viewModel) {
+				// 	if (viewModel.hasOwnProperty(name)) {
+				// 		Cesium.knockout
+				// 			.getObservable(viewModel, name)
+				// 			.subscribe(updatePostProcess);
+				// 	}
+				// }
+
+				// if (
+				// 	!Cesium.PostProcessStageLibrary.isSilhouetteSupported(viewer.scene)
+				// ) {
+				// 	window.alert(
+				// 		"This browser does not support the silhouette post process."
+				// 	);
+				// }
+
+				// var stages = viewer.scene.postProcessStages;
+				// var silhouette = stages.add(
+				// 	Cesium.PostProcessStageLibrary.createSilhouetteStage()
+				// );
+				// var blackAndWhite = stages.add(
+				// 	Cesium.PostProcessStageLibrary.createBlackAndWhiteStage()
+				// );
+				// var brightness = stages.add(
+				// 	Cesium.PostProcessStageLibrary.createBrightnessStage()
+				// );
+				// var nightVision = stages.add(
+				// 	Cesium.PostProcessStageLibrary.createNightVisionStage()
+				// );
+
+				// function updatePostProcess() {
+				// 	silhouette.enabled = Boolean(viewModel.silhouette);
+				// 	silhouette.uniforms.color = Cesium.Color.YELLOW;
+				// 	blackAndWhite.enabled = Boolean(viewModel.blackAndWhiteShow);
+				// 	blackAndWhite.uniforms.gradations = Number(
+				// 		viewModel.blackAndWhiteGradations
+				// 	);
+				// 	brightness.enabled = Boolean(viewModel.brightnessShow);
+				// 	brightness.uniforms.brightness = Number(viewModel.brightnessValue);
+				// 	nightVision.enabled = Boolean(viewModel.nightVisionShow);
+				// }
+				// updatePostProcess();
+
+			},
+			entityPeople: '',
+			seeEntity: true,
+			openEntity: false,
+			time: '',
+			beginPlay: function () {
+				var postion = [116.058987, 28.973468, 1000]
+					, a = 116.058987
+					, b = 28.973468
+					, g = 1000;
+				this.time = setInterval(() => {
+
+					if (this.openEntity) {
+						// this.map.entities.remove(this.entityPeople)//删除entity
+						// this.map.entities.remove(this.map.trackedEntity)//删除entity
+						this.map.entities.removeAll();
+					} else {
+						a += 0.01;
+						b += 0.01;
+						// g += 0.01;
+						this.beginCesium(a, b);
+					}
+					this.openEntity = !this.openEntity;
+					console.log(this.openEntity)
+				}, 1000);
+			},
+			stopPlay: function () {
+				this.map.entities.removeAll();
+				clearInterval(this.time);
+			},
+			seemodo: function () {
+				var that = this;
+				if (that.seeEntity) {
+					this.map.trackedEntity = that.entityPeople;//目标视野跟踪
+				} else {
+					this.map.trackedEntity = '';
+				}
+				that.seeEntity = !that.seeEntity;
+				console.log(that.seeEntity)
+				// console.log('seedom')
+				// this.map.entities.remove(this.entityPeople)//删除entity
+			},
+			closeModo: function () {
+				if (this.openEntity) {
+					// this.map.entities.remove(this.entityPeople)//删除entity
+					// this.map.entities.remove(this.map.trackedEntity)//删除entity
+					this.map.entities.removeAll();
+				} else {
+					var a = $('#modelDiagramjdu').val() == '' ? 116.058987 : +$('#modelDiagramjdu').val();
+					var b = $('#modelDiagramwdu').val() == '' ? 28.973468 : +$('#modelDiagramwdu').val();
+					var g = $('#modelDiagramgdu').val() == '' ? 1000 : +$('#modelDiagramgdu').val();
+					// console.log([a, b, g])
+					this.beginCesium(a, b, g);
+				}
+				this.openEntity = !this.openEntity;
+				console.log(this.openEntity)
+				// var that = this;
+				// if (that.seeEntity) {
+				// 	this.map.trackedEntity = that.entityPeople;//目标视野跟踪
+				// } else {
+				// 	this.map.trackedEntity = '';
+				// }
+				// viewer.entities.remove(that.entityPeople)//删除entity
+
+				// viewer.entities.removeById(id)//根据id删除entity
+
+				// viewer.entities.removeAll()//清空所有entity
+
+				// viewer.entities.getById(id)// 获取enetity
+
+				// viewer.entities.contains(entity)// 是否包含
+				// viewer.entities.removeById('')
+			},
+			beginModelDiagram: function () {
+				var that = this
+					, viewer = that.map
+					, scene = viewer.scene;
+				// scene.globe.show = false;
+				viewer.shouldAnimate = true;
+				var collect = new Cesium.InstanceLayer(scene._context)
+					, url = "./images/gltf/walk.gltf"
+					, gltf = viewer.entities.add({
+						name: "gltf",
+						position: new Cesium.Cartesian3.fromDegrees(115.783206 - 0.002034006, 28.810602 - 0.005072179, 800),
+						model: {
+							uri: url
+						}
+					});
+				viewer.zoomTo(gltf);
+				$("#modelDiagramSelOpt").change(function () {
+					var value = $(this).val();
+					if (value === "1") {
+						collect.removeInstance(url, [collect._instances._array[0]._array[0].id]);
+						viewer.entities._show = true;
+					} else {
+						viewer.entities._show = false;
+						collect.add(url,
+							{
+								position: new Cesium.Cartesian3.fromDegrees(115.783206 - 0.002034006, 28.810602 - 0.005072179, 1000)
+							});
+
+					}
+				})
+			},
+			onClose: function () {
+				//面板关闭的时候触发 (when this panel is closed trigger)
+			},
+
+			onMinimize: function () {
+				this.resize();
+			},
+
+			onMaximize: function () {
+				this.resize();
+			},
+
+			resize: function () {
+
+			},
+
+
+			destroy: function () {
+				//销毁的时候触发
+				//todo
+				//do something before this func
+				this.inherited(arguments);
+			}
+
+		});
+	});
\ No newline at end of file
diff --git a/widgets/modelDiagram/css/style.css b/widgets/modelDiagram/css/style.css
new file mode 100644
index 0000000..e896f1d
--- /dev/null
+++ b/widgets/modelDiagram/css/style.css
@@ -0,0 +1,74 @@
+.jimu-widget-modelDiagram {
+  position: absolute !important;
+  font-size: 14px;
+  height: 40px !important;
+  width: 280px !important;
+  /* 240px */
+  background: rgb(254, 254, 254);
+  color: #838383;
+  border-radius: 6px;
+  text-align: center;
+  /* cursor: pointer; */
+  z-index: 11 !important;
+  top: 72px !important;
+  bottom: auto !important;
+  right: 60px !important;
+  left: auto !important;
+  box-shadow: 0 0 8px #fff;
+  display: none;
+}
+
+.jimu-widget-modelDiagram .seemodo {
+  border: 1px solid salmon;
+  display: none;
+}
+
+.jimu-widget-modelDiagram .closemodo {
+  line-height: 30px;
+  width: 80px;
+  height: 30px;
+  font-size: 16px;
+  border-radius: 5px;
+  box-shadow: 2px 2px 15px -5px #378ef1;
+  /* border: 1px solid rgb(128, 124, 124); */
+}
+
+.jimu-widget-modelDiagram .modelDiagramMain {
+  width:230px;
+  height: 40px;
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+  position: absolute;
+  top: 1.5px;
+  left: 10px;
+  cursor: pointer;
+}
+.jimu-widget-modelDiagram .closemodoinput{
+  width: 50px;
+}
+
+.jimu-widget-modelDiagram .closemodo:hover {
+  box-shadow: 2px 2px 20px -5px #1679eb;
+}
+
+.jimu-widget-modelDiagram .beginPlay {
+  border: 1px solid salmon;
+  display: none;
+}
+
+.jimu-widget-modelDiagram .stopPlay {
+  border: 1px solid salmon;
+  display: none;
+}
+
+.jimu-widget-modelDiagram .closesmodelDiagram {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  cursor: pointer;
+}
+
+.jimu-widget-modelDiagram .closesmodelDiagram:hover {
+  color: red;
+}
\ No newline at end of file
diff --git a/widgets/modelDiagram/manifest.json b/widgets/modelDiagram/manifest.json
new file mode 100644
index 0000000..a020c86
--- /dev/null
+++ b/widgets/modelDiagram/manifest.json
@@ -0,0 +1,17 @@
+{
+  "name": "modelDiagram",
+  "2D": true,
+  "3D": true,
+  "platform": "HTML",
+  "version": "2.10",
+  "wabVersion": "2.10",
+  "author": "yuanjy",
+  "description": "",
+  "copyright": "",
+  "license": "",
+  "properties": {
+    "hasConfig": false,
+    "inPanel": false,
+    "hasVersionManager": false
+  }
+}
\ No newline at end of file
diff --git a/widgets/modelDiagram/nls/es/strings.js b/widgets/modelDiagram/nls/es/strings.js
new file mode 100644
index 0000000..bc40d8c
--- /dev/null
+++ b/widgets/modelDiagram/nls/es/strings.js
@@ -0,0 +1,5 @@
+define(
+   ({
+    _widgetLabel: "modelDiagram"
+  })
+);
\ No newline at end of file
diff --git a/widgets/modelDiagram/nls/strings.js b/widgets/modelDiagram/nls/strings.js
new file mode 100644
index 0000000..2b85ddc
--- /dev/null
+++ b/widgets/modelDiagram/nls/strings.js
@@ -0,0 +1,7 @@
+define({
+  root: ({
+    _widgetLabel: "modelDiagram"
+  }),
+  "es": 1,
+  "zh-cn": 1
+});
\ No newline at end of file
diff --git a/widgets/modelDiagram/nls/zh-cn/strings.js b/widgets/modelDiagram/nls/zh-cn/strings.js
new file mode 100644
index 0000000..d553472
--- /dev/null
+++ b/widgets/modelDiagram/nls/zh-cn/strings.js
@@ -0,0 +1,5 @@
+define(
+   ({
+    _widgetLabel: "模型gif"
+  })
+);
\ No newline at end of file
diff --git a/widgets/spatialAnalysis/Widget.js b/widgets/spatialAnalysis/Widget.js
index 04bb9d3..284bb05 100644
--- a/widgets/spatialAnalysis/Widget.js
+++ b/widgets/spatialAnalysis/Widget.js
@@ -35,15 +35,16 @@
 					{
 						name: '可视分析',
 						classs: 'visibleArea-tool',
-						img: '../../images/addL/ksy.png'
+						img: './images/addL/ksy.png'
 					}, {
 						name: '剖面分析',
 						classs: 'profileAnalysis-tool',
-						img: '../../images/addL/剖面分析.png'
-					}, {
-						name: '坡度分析',
-						classs: 'slope-tool',
-						img: '../../images/addL/pdpx.png'
+						img: './images/addL/剖面分析.png'
+					},
+					{
+						name: '模型渲染--占位',
+						classs: 'modelDiagram-tool',
+						img: './images/addL/pdpx.png'
 					}
 				];
 				var dom = $('#spatialAnalysis-main');
@@ -94,6 +95,9 @@
 					$(".jimu-widget-profileAnalysis").hide();
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					$(".jimu-widget-visibleArea").show();
 				})
@@ -120,6 +124,9 @@
 					$(".jimu-widget-visibleArea").hide();
 					$(".jimu-widget-slope").hide();
 					$('.tool-y-box').stop().hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					$(".jimu-widget-profileAnalysis").show();
 				})
@@ -140,16 +147,50 @@
 					// 关闭可视
 					topic.publish('closev', '');
 					// 关闭剖面
-					topic.publish ('closep', '');
+					topic.publish('closep', '');
 					// 关闭坡度
 					// topic.publish('closes', '');
 					$(".jimu-widget-visibleArea").hide();
 					$(".jimu-widget-profileAnalysis").hide();
 					$('.tool-y-box').stop().hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
 
 					$(".jimu-widget-slope").show();
 					topic.publish('getbeginSlope', this.beginSlope);
 				})
+				//模型
+				$('.modelDiagram-tool').click(function () {
+					that.map.scene.globe.depthTestAgainstTerrain = true;
+					// 关闭量算
+					topic.publish('closeMeasurement', 'Measurement');
+					// 关闭卷帘
+					topic.publish('closeRolling', 'Rolling');
+					// 关闭分屏
+					topic.publish('closeSplitScreen', 'SplitScreen');
+					// 关闭标记
+					topic.publish('closeSign', 'Sign');
+					topic.publish('closeFlyRoute', 'FlyRoute');
+					$('.jimu-widget-CoorPosition').hide();
+					$('.jimu-widget-MapPrinting').hide();
+					// 关闭可视
+					topic.publish('closev', '');
+					// 关闭剖面
+					topic.publish('closep', '');
+					// 关闭坡度
+					// topic.publish('closes', '');
+					$(".jimu-widget-visibleArea").hide();
+					$(".jimu-widget-profileAnalysis").hide();
+					$('.tool-y-box').stop().hide();
+					$(".jimu-widget-slope").hide();
+					//关闭飞行
+					$('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
+					topic.publish('closeFly', 'closeFly');
+
+					$('.jimu-widget-modelDiagram').show();
+					// topic.publish('getbeginSlope', this.beginSlope);
+				})
 
 			},
 
diff --git a/widgets/visualAngle/Widget.js b/widgets/visualAngle/Widget.js
index 5438f0e..dbe59e0 100644
--- a/widgets/visualAngle/Widget.js
+++ b/widgets/visualAngle/Widget.js
@@ -29,9 +29,7 @@
 			layers: {},
 			startup: function () {
 				// 暴露在外的接口
-				var that = this,
-					isFixed = false,
-					isFly = false
+				var that = this
 					, noFixed = () => {
 						// $(this).addClass('on').siblings().removeClass('on');
 						// 控制视角平移:
@@ -80,38 +78,62 @@
 					$('.jimu-widget-MapPrinting').hide();
 					$('.tool-y-box').stop().hide();
 					noFixed();
-					if (isFly) {
+					// console.log(that.isFly)
+					if (that.isFly) {
 						$(this).removeClass('on');
-						console.log('关闭飞行')
+						// console.log('关闭飞行')
 						topic.publish('closeFlyRoute', 'FlyRoute');
 					} else {
 						$(this).addClass('on').siblings().removeClass('on');
-						console.log('开启飞行')
+						// console.log('开启飞行')
 						topic.publish('openFlyRoute', 'FlyRoute');
+
+						// 关闭可视
+						topic.publish('closev', '');
+						// 关闭剖面
+						topic.publish('closep', '');
+						// 关闭坡度
+						topic.publish('closes', '');
+						$(".jimu-widget-profileAnalysis").hide();
+						$(".jimu-widget-slope").hide();
+						$(".jimu-widget-visibleArea").hide();
+						$(".jimu-widget-spatialAnalysis").hide();
+
 					}
-					isFixed = false;
-					isFly = !isFly;
+					that.isFixed = false;
+					that.isFly = !that.isFly;
 				})
 				$(".v-a-Three").click(function () {
-					if (isFixed) {
+					if (that.isFixed) {
 						$(this).removeClass('on');
 						topic.publish('closeFlyRoute', 'FlyRoute');
 						noFixed();
-						console.log('关闭固定')
+						// console.log('关闭固定')
 					} else {
-						console.log('开启固定')
+						// console.log('开启固定')
 						topic.publish('closeFlyRoute', 'FlyRoute');
 						$(this).addClass('on').siblings().removeClass('on');
 						that.map.scene.screenSpaceCameraController.enableRotate = false
 						that.map.scene.screenSpaceCameraController.enableZoom = true
 						that.map.scene.screenSpaceCameraController.enableTilt = false
 					}
-					isFly = false;
-					isFixed = !isFixed;
+					that.isFly = false;
+					that.isFixed = !that.isFixed;
 				})
+				topic.subscribe("closeFly", lang.hitch(this, this.closeFly));
+				topic.subscribe("closeSee", lang.hitch(this, this.closeSee));
 
 			},
-
+			isFly: false,
+			isFixed: false,
+			closeFly: function () {
+				this.isFly = false;
+				// console.log(23435)
+			},
+			closeSee: function () {
+				this.isFixed = false;
+				// console.log(23435)
+			},
 			closeToolBox: function (item) {
 				// if (item != this.name) {
 				// 	$('.tool-y-box').hide();

--
Gitblit v1.9.3