Переглянути джерело

解决geojson无法覆盖3dtiles上

wdq 9 місяців тому
батько
коміт
0aa01efe77
6 змінених файлів з 686 додано та 111 видалено
  1. 1 0
      .gitignore
  2. 552 22
      package-lock.json
  3. 1 0
      package.json
  4. 38 21
      src/components/Edge.vue
  5. 2 2
      src/components/Layers.vue
  6. 92 66
      src/components/Map.vue

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 node_modules/
+dist/

+ 552 - 22
package-lock.json

@@ -9,6 +9,7 @@
       "version": "0.1.0",
       "dependencies": {
         "axios": "^1.7.7",
+        "cesium": "^1.121.1",
         "dayjs": "^1.11.6",
         "element-plus": "^2.8.2",
         "vue": "^3.2.13",
@@ -182,6 +183,49 @@
         "node": ">=6.0.0"
       }
     },
+    "node_modules/@cesium/engine": {
+      "version": "11.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@cesium/engine/-/engine-11.0.0.tgz",
+      "integrity": "sha512-0z3mJNNly407h3/bAvGoGnjA0ygprkVz32z9x1VNmPXf9AuybKu7Q4wRrChUhC/qsNj3L45kP6KqyDuHSe2bhw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@tweenjs/tween.js": "^25.0.0",
+        "@zip.js/zip.js": "^2.7.34",
+        "autolinker": "^4.0.0",
+        "bitmap-sdf": "^1.0.3",
+        "dompurify": "^3.0.2",
+        "draco3d": "^1.5.1",
+        "earcut": "^3.0.0",
+        "grapheme-splitter": "^1.0.4",
+        "jsep": "^1.3.8",
+        "kdbush": "^4.0.1",
+        "ktx-parse": "^0.7.0",
+        "lerc": "^2.0.0",
+        "mersenne-twister": "^1.1.0",
+        "meshoptimizer": "^0.21.0",
+        "pako": "^2.0.4",
+        "protobufjs": "^7.1.0",
+        "rbush": "^4.0.0",
+        "topojson-client": "^3.1.0",
+        "urijs": "^1.19.7"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/@cesium/widgets": {
+      "version": "8.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@cesium/widgets/-/widgets-8.0.0.tgz",
+      "integrity": "sha512-Rnid5BbLBZjwFdbr3lgOwK3fhql/BeEbf5l9ZZE+Zc7V8Fb6wgKM8QmrL+bbJ+BtuiELp+SkNxcF97Ktifxb4g==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@cesium/engine": "^11.0.0",
+        "nosleep.js": "^0.12.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
     "node_modules/@ctrl/tinycolor": {
       "version": "3.6.1",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
@@ -376,6 +420,70 @@
         "url": "https://opencollective.com/popperjs"
       }
     },
+    "node_modules/@protobufjs/aspromise": {
+      "version": "1.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+      "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/base64": {
+      "version": "1.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/base64/-/base64-1.1.2.tgz",
+      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/codegen": {
+      "version": "2.0.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/eventemitter": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+      "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/fetch": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+      "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@protobufjs/aspromise": "^1.1.1",
+        "@protobufjs/inquire": "^1.1.0"
+      }
+    },
+    "node_modules/@protobufjs/float": {
+      "version": "1.0.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/float/-/float-1.0.2.tgz",
+      "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/inquire": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+      "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/path": {
+      "version": "1.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/path/-/path-1.1.2.tgz",
+      "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/pool": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/pool/-/pool-1.1.0.tgz",
+      "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@protobufjs/utf8": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+      "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
+      "license": "BSD-3-Clause"
+    },
     "node_modules/@sideway/address": {
       "version": "4.1.5",
       "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.5.tgz",
@@ -430,6 +538,12 @@
         "node": ">=10.13.0"
       }
     },
+    "node_modules/@tweenjs/tween.js": {
+      "version": "25.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@tweenjs/tween.js/-/tween.js-25.0.0.tgz",
+      "integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==",
+      "license": "MIT"
+    },
     "node_modules/@types/body-parser": {
       "version": "1.19.5",
       "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz",
@@ -576,7 +690,6 @@
       "version": "20.14.10",
       "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.10.tgz",
       "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==",
-      "dev": true,
       "dependencies": {
         "undici-types": "~5.26.4"
       }
@@ -1324,6 +1437,17 @@
       "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
       "dev": true
     },
+    "node_modules/@zip.js/zip.js": {
+      "version": "2.7.52",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@zip.js/zip.js/-/zip.js-2.7.52.tgz",
+      "integrity": "sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q==",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "bun": ">=0.7.0",
+        "deno": ">=1.0.0",
+        "node": ">=16.5.0"
+      }
+    },
     "node_modules/accepts": {
       "version": "1.3.8",
       "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
@@ -1417,8 +1541,6 @@
       "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.16.0.tgz",
       "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
       "dev": true,
-      "optional": true,
-      "peer": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
         "json-schema-traverse": "^1.0.0",
@@ -1434,9 +1556,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
       "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-      "dev": true,
-      "optional": true,
-      "peer": true
+      "dev": true
     },
     "node_modules/ajv-keywords": {
       "version": "3.5.2",
@@ -1576,6 +1696,15 @@
         "node": ">= 4.0.0"
       }
     },
+    "node_modules/autolinker": {
+      "version": "4.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/autolinker/-/autolinker-4.0.0.tgz",
+      "integrity": "sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==",
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.3.0"
+      }
+    },
     "node_modules/autoprefixer": {
       "version": "10.4.19",
       "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz",
@@ -1677,6 +1806,12 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/bitmap-sdf": {
+      "version": "1.0.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
+      "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==",
+      "license": "MIT"
+    },
     "node_modules/bl": {
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
@@ -1930,6 +2065,23 @@
         "node": ">=4"
       }
     },
+    "node_modules/cesium": {
+      "version": "1.121.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/cesium/-/cesium-1.121.1.tgz",
+      "integrity": "sha512-WpdaGFd8qCOHiE9khV0sWWjCMXAX1U9Aou8MzMC/F0Akp6YqcOk4HLk4LLhZKeOjO/Bh27iTIW2mxEZ5+dtCxg==",
+      "license": "Apache-2.0",
+      "workspaces": [
+        "packages/engine",
+        "packages/widgets"
+      ],
+      "dependencies": {
+        "@cesium/engine": "^11.0.0",
+        "@cesium/widgets": "^8.0.0"
+      },
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
     "node_modules/chalk": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
@@ -3045,6 +3197,12 @@
         "url": "https://github.com/fb55/domhandler?sponsor=1"
       }
     },
+    "node_modules/dompurify": {
+      "version": "3.1.6",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/dompurify/-/dompurify-3.1.6.tgz",
+      "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==",
+      "license": "(MPL-2.0 OR Apache-2.0)"
+    },
     "node_modules/domutils": {
       "version": "2.8.0",
       "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
@@ -3084,12 +3242,24 @@
       "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
       "dev": true
     },
+    "node_modules/draco3d": {
+      "version": "1.5.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/draco3d/-/draco3d-1.5.7.tgz",
+      "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
+      "license": "Apache-2.0"
+    },
     "node_modules/duplexer": {
       "version": "0.1.2",
       "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz",
       "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
       "dev": true
     },
+    "node_modules/earcut": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/earcut/-/earcut-3.0.0.tgz",
+      "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==",
+      "license": "ISC"
+    },
     "node_modules/easy-stack": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
@@ -3807,6 +3977,12 @@
       "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
       "dev": true
     },
+    "node_modules/grapheme-splitter": {
+      "version": "1.0.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+      "license": "MIT"
+    },
     "node_modules/gzip-size": {
       "version": "6.0.0",
       "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz",
@@ -4486,6 +4662,15 @@
       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
       "dev": true
     },
+    "node_modules/jsep": {
+      "version": "1.3.9",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jsep/-/jsep-1.3.9.tgz",
+      "integrity": "sha512-i1rBX5N7VPl0eYb6+mHNp52sEuaS2Wi8CDYx1X5sn9naevL78+265XJqy1qENEk7mRKwS06NHpUqiBwR7qeodw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10.16.0"
+      }
+    },
     "node_modules/json-parse-better-errors": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -4528,6 +4713,12 @@
         "graceful-fs": "^4.1.6"
       }
     },
+    "node_modules/kdbush": {
+      "version": "4.0.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/kdbush/-/kdbush-4.0.2.tgz",
+      "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
+      "license": "ISC"
+    },
     "node_modules/kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
@@ -4546,6 +4737,12 @@
         "node": ">= 8"
       }
     },
+    "node_modules/ktx-parse": {
+      "version": "0.7.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ktx-parse/-/ktx-parse-0.7.1.tgz",
+      "integrity": "sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ==",
+      "license": "MIT"
+    },
     "node_modules/launch-editor": {
       "version": "2.8.0",
       "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.8.0.tgz",
@@ -4565,6 +4762,12 @@
         "launch-editor": "^2.8.0"
       }
     },
+    "node_modules/lerc": {
+      "version": "2.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lerc/-/lerc-2.0.0.tgz",
+      "integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==",
+      "license": "Apache-2.0"
+    },
     "node_modules/less": {
       "version": "4.2.0",
       "resolved": "https://registry.npmmirror.com/less/-/less-4.2.0.tgz",
@@ -4855,6 +5058,12 @@
         "node": ">=4"
       }
     },
+    "node_modules/long": {
+      "version": "5.2.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/long/-/long-5.2.3.tgz",
+      "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==",
+      "license": "Apache-2.0"
+    },
     "node_modules/lower-case": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz",
@@ -4968,6 +5177,18 @@
         "node": ">= 8"
       }
     },
+    "node_modules/mersenne-twister": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/mersenne-twister/-/mersenne-twister-1.1.0.tgz",
+      "integrity": "sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==",
+      "license": "MIT"
+    },
+    "node_modules/meshoptimizer": {
+      "version": "0.21.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/meshoptimizer/-/meshoptimizer-0.21.0.tgz",
+      "integrity": "sha512-WabtlpnK/GgD0GMwYd1fBTfYHf4MIcQPEg6dt7y4GuDcY51RzLSkSNE8ZogD7U3Vs2/fIf4z89TOLpA80EOnhg==",
+      "license": "MIT"
+    },
     "node_modules/methods": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
@@ -5375,6 +5596,12 @@
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==",
       "license": "BSD-3-Clause"
     },
+    "node_modules/nosleep.js": {
+      "version": "0.12.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/nosleep.js/-/nosleep.js-0.12.0.tgz",
+      "integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==",
+      "license": "MIT"
+    },
     "node_modules/npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -5594,6 +5821,12 @@
         "node": ">=6"
       }
     },
+    "node_modules/pako": {
+      "version": "2.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/pako/-/pako-2.1.0.tgz",
+      "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
+      "license": "(MIT AND Zlib)"
+    },
     "node_modules/param-case": {
       "version": "3.0.4",
       "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz",
@@ -6436,6 +6669,30 @@
         "node": ">=4"
       }
     },
+    "node_modules/protobufjs": {
+      "version": "7.4.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/protobufjs/-/protobufjs-7.4.0.tgz",
+      "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
+      "hasInstallScript": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@protobufjs/aspromise": "^1.1.2",
+        "@protobufjs/base64": "^1.1.2",
+        "@protobufjs/codegen": "^2.0.4",
+        "@protobufjs/eventemitter": "^1.1.0",
+        "@protobufjs/fetch": "^1.1.0",
+        "@protobufjs/float": "^1.0.2",
+        "@protobufjs/inquire": "^1.1.0",
+        "@protobufjs/path": "^1.1.2",
+        "@protobufjs/pool": "^1.1.0",
+        "@protobufjs/utf8": "^1.1.0",
+        "@types/node": ">=13.7.0",
+        "long": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
     "node_modules/proxy-addr": {
       "version": "2.0.7",
       "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -6531,6 +6788,12 @@
         }
       ]
     },
+    "node_modules/quickselect": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/quickselect/-/quickselect-3.0.0.tgz",
+      "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==",
+      "license": "ISC"
+    },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
@@ -6573,6 +6836,15 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/rbush": {
+      "version": "4.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/rbush/-/rbush-4.0.1.tgz",
+      "integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==",
+      "license": "MIT",
+      "dependencies": {
+        "quickselect": "^3.0.0"
+      }
+    },
     "node_modules/read-pkg": {
       "version": "5.2.0",
       "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -7542,6 +7814,26 @@
         "node": ">=0.6"
       }
     },
+    "node_modules/topojson-client": {
+      "version": "3.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/topojson-client/-/topojson-client-3.1.0.tgz",
+      "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+      "license": "ISC",
+      "dependencies": {
+        "commander": "2"
+      },
+      "bin": {
+        "topo2geo": "bin/topo2geo",
+        "topomerge": "bin/topomerge",
+        "topoquantize": "bin/topoquantize"
+      }
+    },
+    "node_modules/topojson-client/node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+      "license": "MIT"
+    },
     "node_modules/totalist": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz",
@@ -7560,8 +7852,7 @@
     "node_modules/tslib": {
       "version": "2.6.3",
       "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
-      "dev": true
+      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
     },
     "node_modules/type-fest": {
       "version": "0.6.0",
@@ -7588,8 +7879,7 @@
     "node_modules/undici-types": {
       "version": "5.26.5",
       "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
-      "dev": true
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
     },
     "node_modules/universalify": {
       "version": "2.0.1",
@@ -7648,6 +7938,12 @@
         "punycode": "^2.1.0"
       }
     },
+    "node_modules/urijs": {
+      "version": "1.19.11",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/urijs/-/urijs-1.19.11.tgz",
+      "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
+      "license": "MIT"
+    },
     "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -8466,6 +8762,41 @@
       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.8.tgz",
       "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w=="
     },
+    "@cesium/engine": {
+      "version": "11.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@cesium/engine/-/engine-11.0.0.tgz",
+      "integrity": "sha512-0z3mJNNly407h3/bAvGoGnjA0ygprkVz32z9x1VNmPXf9AuybKu7Q4wRrChUhC/qsNj3L45kP6KqyDuHSe2bhw==",
+      "requires": {
+        "@tweenjs/tween.js": "^25.0.0",
+        "@zip.js/zip.js": "^2.7.34",
+        "autolinker": "^4.0.0",
+        "bitmap-sdf": "^1.0.3",
+        "dompurify": "^3.0.2",
+        "draco3d": "^1.5.1",
+        "earcut": "^3.0.0",
+        "grapheme-splitter": "^1.0.4",
+        "jsep": "^1.3.8",
+        "kdbush": "^4.0.1",
+        "ktx-parse": "^0.7.0",
+        "lerc": "^2.0.0",
+        "mersenne-twister": "^1.1.0",
+        "meshoptimizer": "^0.21.0",
+        "pako": "^2.0.4",
+        "protobufjs": "^7.1.0",
+        "rbush": "^4.0.0",
+        "topojson-client": "^3.1.0",
+        "urijs": "^1.19.7"
+      }
+    },
+    "@cesium/widgets": {
+      "version": "8.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@cesium/widgets/-/widgets-8.0.0.tgz",
+      "integrity": "sha512-Rnid5BbLBZjwFdbr3lgOwK3fhql/BeEbf5l9ZZE+Zc7V8Fb6wgKM8QmrL+bbJ+BtuiELp+SkNxcF97Ktifxb4g==",
+      "requires": {
+        "@cesium/engine": "^11.0.0",
+        "nosleep.js": "^0.12.0"
+      }
+    },
     "@ctrl/tinycolor": {
       "version": "3.6.1",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
@@ -8620,6 +8951,60 @@
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
       "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
     },
+    "@protobufjs/aspromise": {
+      "version": "1.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+      "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
+    },
+    "@protobufjs/base64": {
+      "version": "1.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/base64/-/base64-1.1.2.tgz",
+      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+    },
+    "@protobufjs/codegen": {
+      "version": "2.0.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+    },
+    "@protobufjs/eventemitter": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+      "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
+    },
+    "@protobufjs/fetch": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+      "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+      "requires": {
+        "@protobufjs/aspromise": "^1.1.1",
+        "@protobufjs/inquire": "^1.1.0"
+      }
+    },
+    "@protobufjs/float": {
+      "version": "1.0.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/float/-/float-1.0.2.tgz",
+      "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
+    },
+    "@protobufjs/inquire": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+      "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
+    },
+    "@protobufjs/path": {
+      "version": "1.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/path/-/path-1.1.2.tgz",
+      "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
+    },
+    "@protobufjs/pool": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/pool/-/pool-1.1.0.tgz",
+      "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
+    },
+    "@protobufjs/utf8": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+      "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
+    },
     "@sideway/address": {
       "version": "4.1.5",
       "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.5.tgz",
@@ -8665,6 +9050,11 @@
       "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
       "dev": true
     },
+    "@tweenjs/tween.js": {
+      "version": "25.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@tweenjs/tween.js/-/tween.js-25.0.0.tgz",
+      "integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A=="
+    },
     "@types/body-parser": {
       "version": "1.19.5",
       "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz",
@@ -8809,7 +9199,6 @@
       "version": "20.14.10",
       "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.10.tgz",
       "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==",
-      "dev": true,
       "requires": {
         "undici-types": "~5.26.4"
       }
@@ -9426,6 +9815,11 @@
       "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
       "dev": true
     },
+    "@zip.js/zip.js": {
+      "version": "2.7.52",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@zip.js/zip.js/-/zip.js-2.7.52.tgz",
+      "integrity": "sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q=="
+    },
     "accepts": {
       "version": "1.3.8",
       "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
@@ -9481,14 +9875,15 @@
       "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
       "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
       "dev": true,
-      "requires": {},
+      "requires": {
+        "ajv": "^8.0.0"
+      },
       "dependencies": {
         "ajv": {
-          "version": "https://registry.npmmirror.com/ajv/-/ajv-8.16.0.tgz",
+          "version": "8.16.0",
+          "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.16.0.tgz",
           "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
           "dev": true,
-          "optional": true,
-          "peer": true,
           "requires": {
             "fast-deep-equal": "^3.1.3",
             "json-schema-traverse": "^1.0.0",
@@ -9500,9 +9895,7 @@
           "version": "1.0.0",
           "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
           "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-          "dev": true,
-          "optional": true,
-          "peer": true
+          "dev": true
         }
       }
     },
@@ -9599,6 +9992,14 @@
       "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
       "dev": true
     },
+    "autolinker": {
+      "version": "4.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/autolinker/-/autolinker-4.0.0.tgz",
+      "integrity": "sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==",
+      "requires": {
+        "tslib": "^2.3.0"
+      }
+    },
     "autoprefixer": {
       "version": "10.4.19",
       "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz",
@@ -9653,6 +10054,11 @@
       "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
       "dev": true
     },
+    "bitmap-sdf": {
+      "version": "1.0.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
+      "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg=="
+    },
     "bl": {
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
@@ -9835,6 +10241,15 @@
       "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==",
       "dev": true
     },
+    "cesium": {
+      "version": "1.121.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/cesium/-/cesium-1.121.1.tgz",
+      "integrity": "sha512-WpdaGFd8qCOHiE9khV0sWWjCMXAX1U9Aou8MzMC/F0Akp6YqcOk4HLk4LLhZKeOjO/Bh27iTIW2mxEZ5+dtCxg==",
+      "requires": {
+        "@cesium/engine": "^11.0.0",
+        "@cesium/widgets": "^8.0.0"
+      }
+    },
     "chalk": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
@@ -10625,6 +11040,11 @@
         "domelementtype": "^2.2.0"
       }
     },
+    "dompurify": {
+      "version": "3.1.6",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/dompurify/-/dompurify-3.1.6.tgz",
+      "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ=="
+    },
     "domutils": {
       "version": "2.8.0",
       "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
@@ -10658,12 +11078,22 @@
       "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
       "dev": true
     },
+    "draco3d": {
+      "version": "1.5.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/draco3d/-/draco3d-1.5.7.tgz",
+      "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ=="
+    },
     "duplexer": {
       "version": "0.1.2",
       "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz",
       "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
       "dev": true
     },
+    "earcut": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/earcut/-/earcut-3.0.0.tgz",
+      "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg=="
+    },
     "easy-stack": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
@@ -11228,6 +11658,11 @@
       "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
       "dev": true
     },
+    "grapheme-splitter": {
+      "version": "1.0.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
+    },
     "gzip-size": {
       "version": "6.0.0",
       "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz",
@@ -11706,6 +12141,11 @@
       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
       "dev": true
     },
+    "jsep": {
+      "version": "1.3.9",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jsep/-/jsep-1.3.9.tgz",
+      "integrity": "sha512-i1rBX5N7VPl0eYb6+mHNp52sEuaS2Wi8CDYx1X5sn9naevL78+265XJqy1qENEk7mRKwS06NHpUqiBwR7qeodw=="
+    },
     "json-parse-better-errors": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -11743,6 +12183,11 @@
         "universalify": "^2.0.0"
       }
     },
+    "kdbush": {
+      "version": "4.0.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/kdbush/-/kdbush-4.0.2.tgz",
+      "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA=="
+    },
     "kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
@@ -11755,6 +12200,11 @@
       "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
       "dev": true
     },
+    "ktx-parse": {
+      "version": "0.7.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ktx-parse/-/ktx-parse-0.7.1.tgz",
+      "integrity": "sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ=="
+    },
     "launch-editor": {
       "version": "2.8.0",
       "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.8.0.tgz",
@@ -11774,6 +12224,11 @@
         "launch-editor": "^2.8.0"
       }
     },
+    "lerc": {
+      "version": "2.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lerc/-/lerc-2.0.0.tgz",
+      "integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg=="
+    },
     "less": {
       "version": "4.2.0",
       "resolved": "https://registry.npmmirror.com/less/-/less-4.2.0.tgz",
@@ -11989,6 +12444,11 @@
         }
       }
     },
+    "long": {
+      "version": "5.2.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/long/-/long-5.2.3.tgz",
+      "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
+    },
     "lower-case": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz",
@@ -12088,6 +12548,16 @@
       "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
       "dev": true
     },
+    "mersenne-twister": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/mersenne-twister/-/mersenne-twister-1.1.0.tgz",
+      "integrity": "sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA=="
+    },
+    "meshoptimizer": {
+      "version": "0.21.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/meshoptimizer/-/meshoptimizer-0.21.0.tgz",
+      "integrity": "sha512-WabtlpnK/GgD0GMwYd1fBTfYHf4MIcQPEg6dt7y4GuDcY51RzLSkSNE8ZogD7U3Vs2/fIf4z89TOLpA80EOnhg=="
+    },
     "methods": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
@@ -12386,6 +12856,11 @@
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
     },
+    "nosleep.js": {
+      "version": "0.12.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/nosleep.js/-/nosleep.js-0.12.0.tgz",
+      "integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA=="
+    },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -12541,6 +13016,11 @@
       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
       "dev": true
     },
+    "pako": {
+      "version": "2.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/pako/-/pako-2.1.0.tgz",
+      "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
+    },
     "param-case": {
       "version": "3.0.4",
       "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz",
@@ -13111,6 +13591,25 @@
         }
       }
     },
+    "protobufjs": {
+      "version": "7.4.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/protobufjs/-/protobufjs-7.4.0.tgz",
+      "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
+      "requires": {
+        "@protobufjs/aspromise": "^1.1.2",
+        "@protobufjs/base64": "^1.1.2",
+        "@protobufjs/codegen": "^2.0.4",
+        "@protobufjs/eventemitter": "^1.1.0",
+        "@protobufjs/fetch": "^1.1.0",
+        "@protobufjs/float": "^1.0.2",
+        "@protobufjs/inquire": "^1.1.0",
+        "@protobufjs/path": "^1.1.2",
+        "@protobufjs/pool": "^1.1.0",
+        "@protobufjs/utf8": "^1.1.0",
+        "@types/node": ">=13.7.0",
+        "long": "^5.0.0"
+      }
+    },
     "proxy-addr": {
       "version": "2.0.7",
       "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -13178,6 +13677,11 @@
       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
       "dev": true
     },
+    "quickselect": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/quickselect/-/quickselect-3.0.0.tgz",
+      "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g=="
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
@@ -13213,6 +13717,14 @@
         }
       }
     },
+    "rbush": {
+      "version": "4.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/rbush/-/rbush-4.0.1.tgz",
+      "integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==",
+      "requires": {
+        "quickselect": "^3.0.0"
+      }
+    },
     "read-pkg": {
       "version": "5.2.0",
       "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -13947,6 +14459,21 @@
       "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
       "dev": true
     },
+    "topojson-client": {
+      "version": "3.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/topojson-client/-/topojson-client-3.1.0.tgz",
+      "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+      "requires": {
+        "commander": "2"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/commander/-/commander-2.20.3.tgz",
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        }
+      }
+    },
     "totalist": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz",
@@ -13962,8 +14489,7 @@
     "tslib": {
       "version": "2.6.3",
       "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
-      "dev": true
+      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
     },
     "type-fest": {
       "version": "0.6.0",
@@ -13984,8 +14510,7 @@
     "undici-types": {
       "version": "5.26.5",
       "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
-      "dev": true
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
     },
     "universalify": {
       "version": "2.0.1",
@@ -14018,6 +14543,11 @@
         "punycode": "^2.1.0"
       }
     },
+    "urijs": {
+      "version": "1.19.11",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/urijs/-/urijs-1.19.11.tgz",
+      "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="
+    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",

+ 1 - 0
package.json

@@ -8,6 +8,7 @@
   },
   "dependencies": {
     "axios": "^1.7.7",
+    "cesium": "^1.121.1",
     "dayjs": "^1.11.6",
     "element-plus": "^2.8.2",
     "vue": "^3.2.13",

+ 38 - 21
src/components/Edge.vue

@@ -122,17 +122,27 @@ export default {
 
     show() {
       if (edgeQJ.geojsonDataSource) edgeQJ.geojsonDataSource.show = true;
+      if (edgeQJ.lineEntityCollection) edgeQJ.lineEntityCollection.show = true;
       if (edgeQJ.edgeEntity) edgeQJ.edgeEntity.show = true;
     },
     hide() {
       if (edgeQJ.geojsonDataSource) edgeQJ.geojsonDataSource.show = false;
+      if (edgeQJ.lineEntityCollection) edgeQJ.lineEntityCollection.show = false;
       if (edgeQJ.edgeEntity) edgeQJ.edgeEntity.show = false;
     },
     remove() {
       if (edgeQJ.geojsonDataSource != null) {
+        viewer.dataSources.remove(edgeQJ.geojsonDataSource);
+        edgeQJ.geojsonDataSource = null;
+      }
+      if (edgeQJ.lineEntityCollection != null) {
+        // viewer.dataSources.remove(edgeQJ.geojsonDataSource);
+        edgeQJ.lineEntityCollection.values.map(function(item) {
+          viewer.entities.remove(viewer.entities.getById(item._id));
+        });
+        edgeQJ.lineEntityCollection.removeAll();
+        edgeQJ.lineEntityCollection = null;
       }
-      viewer.dataSources.remove(edgeQJ.geojsonDataSource);
-      edgeQJ.geojsonDataSource = null;
     },
     openClick() {
       let that = this;
@@ -183,8 +193,15 @@ export default {
       //     alpha: 0.7
       //   }
       // };
-      SkyScenery.GeoJsonDataSource.load(url).then(function(dataSource) {
+      SkyScenery.GeoJsonDataSource.load(url, {
+        clampToGround: true
+      }).then(function(dataSource) {
         var entities = dataSource.entities.values;
+        viewer.dataSources.add(dataSource);
+        edgeQJ.geojsonDataSource = dataSource;
+
+        let lineEntityCollection = new SkyScenery.EntityCollection();
+
         for (var i = 0; i < entities.length; i++) {
           var entity = entities[i];
           //   if (entity.billboard) {
@@ -204,15 +221,6 @@ export default {
           //     ).withAlpha(options.polyline.alpha); // 颜色
           //   }
           if (entity.polygon) {
-            // viewer.scene.globe.depthTestAgainstTerrain = true; //深度检测
-            entity.polygon.heightReference =
-                SkyScenery.HeightReference.CLAMP_TO_GROUND;
-            // entity.polygon.extrudedHeightReference =
-            //     SkyScenery.HeightReference.CLAMP_TO_GROUND;
-              // SkyScenery.HeightReference.NONE;
-            entity.polygon.perPositionHeight = true;
-            // entity.polygon.zIndex = 2;
-
             // entity.polygon.height = 6;
             // entity.polygon.outline = true; // 边框是否显示
             // entity.polygon.outlineColor = SkyScenery.Color.fromCssColorString(
@@ -222,19 +230,28 @@ export default {
             // entity.polygon.material = SkyScenery.Color.fromCssColorString(
             //   options.polygon.innerColor
             // ).withAlpha(options.polygon.alpha); // 填充色
+            // entity.polygon.zIndex = 99;
+
+            let line = viewer.entities.add({
+              polyline: {
+                positions: entity.polygon.hierarchy._value.positions,
+                width: 2,
+                material: SkyScenery.Color.fromCssColorString("#fff200"),
+                clampToGround: true, // 这个是线覆盖模型的关键
+                zIndex: 1000, // 这个是层级,但是必须clampToGround: true
+                show: true
+              }
+            });
+            lineEntityCollection.add(line);
 
-            // entity.polygon.outline = true;
-            // entity.polygon.outlineWidth = 5; // 边框宽度
-            // entity.polygon.height = 5;
-            // entity.polygon.material = new SkyScenery.ImageMaterialProperty({
-            //   image: "/static/image/b2.png", // 图片路径
-            //   transparent: true // 是否透明
-            // });
+            entity.polygon.material = new SkyScenery.ImageMaterialProperty({
+              image: "/static/image/b2.png", // 图片路径
+              transparent: true // 是否透明
+            });
           }
           entity.type = "edge";
         }
-        viewer.dataSources.add(dataSource);
-        edgeQJ.geojsonDataSource = dataSource;
+        edgeQJ.lineEntityCollection = lineEntityCollection;
       });
     },
 

+ 2 - 2
src/components/Layers.vue

@@ -188,8 +188,8 @@ export default {
             entity.billboard = undefined;
             entity.billboard = new SkyScenery.BillboardGraphics({
               image: options.point.imgUrl,
-              width: 50,
-              height: 50,
+              width: 48,
+              height: 48,
               pixelOffset: new SkyScenery.Cartesian2(0, -25),
               heightReference: SkyScenery.HeightReference.CLAMP_TO_GROUND
             });

+ 92 - 66
src/components/Map.vue

@@ -10,7 +10,7 @@ export default {
       // viewer3DTiles实例《systemConfig.data3DTiles keys,tile》
       viewer3DTiles: {},
       // 3DTiles options集合《systemConfig.data3DTiles keys,options》
-      keysByOptions: {},
+      keysByOptions: {}
     };
   },
   mounted() {
@@ -109,6 +109,8 @@ export default {
               ctx.fillRect(0, 0, width, height);
               return canvas.toDataURL();
             })("#ffffff00"),
+            tileWidth: document.createElement("canvas").width,
+            tileHeight: document.createElement("canvas").height,
             rectangle: SkyScenery.Rectangle.fromDegrees(
               -180.0,
               -90.0,
@@ -127,6 +129,9 @@ export default {
           scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
           infoBox: false, //是否显示点击要素之后显示的信息
           shouldAnimate: false //是否自动播放
+          // contextOptions: {
+          //   requestWebgl1: true
+          // }
         });
         setTimeout(() => {
           // 根据配置文件中的配置信息加载底图
@@ -146,8 +151,8 @@ export default {
             orientation: {
               heading: SkyScenery.Math.toRadians(356.03124515798294), // 方向
               pitch: SkyScenery.Math.toRadians(-45.31422437550821), // 倾斜角度
-              roll: SkyScenery.Math.toRadians(0.0047792745453184024),
-            },
+              roll: SkyScenery.Math.toRadians(0.0047792745453184024)
+            }
           });
 
           this.$store.commit("createdMap", true);
@@ -249,7 +254,7 @@ export default {
         //     }),
         //   },
         // });
-      } catch (error) {
+      } catch (error) { 
         console.log("createMap error:", error);
         window.location.reload();
       }
@@ -260,7 +265,7 @@ export default {
      * @author LiuMengxiang
      * 加载影像底图和影像注记
      */
-    loadTheWorldMapImage(url) {
+    async loadTheWorldMapImage(url) {
       // if (url.indexOf("//t0.") != -1) {
       //   url = url.replace("//t0.", "//t{s}.");
       // }
@@ -280,12 +285,14 @@ export default {
       //     maximumLevel: 18
       //   })
       // );
-      viewer.imageryLayers.addImageryProvider(
-        new SkyScenery.ArcGisMapServerImageryProvider({
-          url:
-            "https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"
-        })
-      );
+      // let layer = await SkyScenery.ArcGisMapServerImageryProvider.fromUrl(
+      //   "https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"
+      // );
+      let layer = new SkyScenery.ArcGisMapServerImageryProvider({
+        url:
+          "https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"
+      });
+      viewer.imageryLayers.addImageryProvider(layer);
     },
 
     // 加载geojson数据
@@ -379,7 +386,7 @@ export default {
      * @param {*} url 3Dtiles的systemConfig.data3DTiles keys
      * @param {*} flyto 是否自动飞行到3Dtiles
      */
-    add3DTiles(keys, flyto) {
+    async add3DTiles(keys, flyto) {
       let that = this;
       if (this.viewer3DTiles[keys]) {
         this.viewer3DTiles[keys].show = true;
@@ -395,10 +402,21 @@ export default {
           maximumScreenSpaceError: 16,
           maximumNumberOfLoadedTiles: 2000
         };
+
+        // Common settings for the dynamicScreenSpaceError optimization
+        // const tile = await SkyScenery.Cesium3DTileset.fromUrl(
+        //   this.keysByOptions[keys].url + "/tileset.json",
+        //   option
+        // );
         var tile = new SkyScenery.Cesium3DTileset(option);
         viewer.scene.primitives.add(tile);
 
-        tile.readyPromise.then(function () {
+        // // 设置相机视角
+        // if (flyto) {
+        //   viewer.zoomTo(tile);
+        // }
+
+        tile.readyPromise.then(function() {
           // 设置相机视角
           if (flyto) {
             viewer.zoomTo(tile);
@@ -418,61 +436,61 @@ export default {
      */
     update3DTilesStyleByKeys(tileset, options) {
       try {
-        console.log("update3DTilesStyleByKeys options", tileset, options);
-        tileset.readyPromise.then(function () {
-          // 设置样式
-          var cartographic = SkyScenery.Cartographic.fromCartesian(
-            tileset.boundingSphere.center
-          );
-          var lon = SkyScenery.Math.toDegrees(cartographic.longitude);
-          var lat = SkyScenery.Math.toDegrees(cartographic.latitude);
-          var height = cartographic.height;
-          var surface = SkyScenery.Cartesian3.fromDegrees(lon, lat, height);
-          var offset = SkyScenery.Cartesian3.fromDegrees(
-            lon + options.lon,
-            lat + options.lat,
-            height + options.height
-          );
+        // console.log("update3DTilesStyleByKeys options", tileset, options);
+        // tileset.readyPromise.then(function() {
+        // 设置样式
+        var cartographic = SkyScenery.Cartographic.fromCartesian(
+          tileset.boundingSphere.center
+        );
+        var lon = SkyScenery.Math.toDegrees(cartographic.longitude);
+        var lat = SkyScenery.Math.toDegrees(cartographic.latitude);
+        var height = cartographic.height;
+        var surface = SkyScenery.Cartesian3.fromDegrees(lon, lat, height);
+        var offset = SkyScenery.Cartesian3.fromDegrees(
+          lon + options.lon,
+          lat + options.lat,
+          height + options.height
+        );
 
-          var translation = SkyScenery.Cartesian3.subtract(
-            offset,
-            surface,
-            new SkyScenery.Cartesian3()
-          );
-          tileset.modelMatrix = SkyScenery.Matrix4.fromTranslation(translation);
+        var translation = SkyScenery.Cartesian3.subtract(
+          offset,
+          surface,
+          new SkyScenery.Cartesian3()
+        );
+        tileset.modelMatrix = SkyScenery.Matrix4.fromTranslation(translation);
 
-          var m = tileset._root.transform;
+        var m = tileset._root.transform;
 
-          if (options.rx != 0) {
-            const mx = SkyScenery.Matrix3.fromRotationX(
-              SkyScenery.Math.toRadians(options.rx)
-            );
-            const rotate = SkyScenery.Matrix4.fromRotationTranslation(mx);
-            SkyScenery.Matrix4.multiply(m, rotate, m);
-          }
+        if (options.rx != 0) {
+          const mx = SkyScenery.Matrix3.fromRotationX(
+            SkyScenery.Math.toRadians(options.rx)
+          );
+          const rotate = SkyScenery.Matrix4.fromRotationTranslation(mx);
+          SkyScenery.Matrix4.multiply(m, rotate, m);
+        }
 
-          if (options.ry != 0) {
-            const my = SkyScenery.Matrix3.fromRotationY(
-              SkyScenery.Math.toRadians(options.ry)
-            );
-            const rotate = SkyScenery.Matrix4.fromRotationTranslation(my);
-            SkyScenery.Matrix4.multiply(m, rotate, m);
-          }
+        if (options.ry != 0) {
+          const my = SkyScenery.Matrix3.fromRotationY(
+            SkyScenery.Math.toRadians(options.ry)
+          );
+          const rotate = SkyScenery.Matrix4.fromRotationTranslation(my);
+          SkyScenery.Matrix4.multiply(m, rotate, m);
+        }
 
-          if (options.rz != 0) {
-            const mz = SkyScenery.Matrix3.fromRotationZ(
-              SkyScenery.Math.toRadians(options.rz)
-            );
-            const rotate = SkyScenery.Matrix4.fromRotationTranslation(mz);
-            SkyScenery.Matrix4.multiply(m, rotate, m);
-          }
+        if (options.rz != 0) {
+          const mz = SkyScenery.Matrix3.fromRotationZ(
+            SkyScenery.Math.toRadians(options.rz)
+          );
+          const rotate = SkyScenery.Matrix4.fromRotationTranslation(mz);
+          SkyScenery.Matrix4.multiply(m, rotate, m);
+        }
 
-          if (options.scale != 1) {
-            const _scale = SkyScenery.Matrix4.fromUniformScale(options.scale);
-            SkyScenery.Matrix4.multiply(m, _scale, m);
-          }
-          tileset._root.transform = m;
-        });
+        if (options.scale != 1) {
+          const _scale = SkyScenery.Matrix4.fromUniformScale(options.scale);
+          SkyScenery.Matrix4.multiply(m, _scale, m);
+        }
+        tileset._root.transform = m;
+        // });
       } catch (error) {
         console.error(error);
       }
@@ -489,7 +507,9 @@ export default {
       }
     },
     adjust3DTilesPosition(tileset, options) {
-      var cartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
+      var cartographic = Cesium.Cartographic.fromCartesian(
+        tileset.boundingSphere.center
+      );
       var lon = Cesium.Math.toDegrees(cartographic.longitude);
       var lat = Cesium.Math.toDegrees(cartographic.latitude);
       var height = cartographic.height;
@@ -511,19 +531,25 @@ export default {
       var m = tileset._root.transform;
 
       if (options.rx != 0) {
-        const mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(options.rx));
+        const mx = Cesium.Matrix3.fromRotationX(
+          Cesium.Math.toRadians(options.rx)
+        );
         const rotate = Cesium.Matrix4.fromRotationTranslation(mx);
         Cesium.Matrix4.multiply(m, rotate, m);
       }
 
       if (options.ry != 0) {
-        const my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(options.ry));
+        const my = Cesium.Matrix3.fromRotationY(
+          Cesium.Math.toRadians(options.ry)
+        );
         const rotate = Cesium.Matrix4.fromRotationTranslation(my);
         Cesium.Matrix4.multiply(m, rotate, m);
       }
 
       if (options.rz != 0) {
-        const mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(options.rz));
+        const mz = Cesium.Matrix3.fromRotationZ(
+          Cesium.Math.toRadians(options.rz)
+        );
         const rotate = Cesium.Matrix4.fromRotationTranslation(mz);
         Cesium.Matrix4.multiply(m, rotate, m);
       }