surprise
2024-01-08 7e6b37afd1295c71bca1de595426330aff88420d
代码提交
已添加24个文件
已修改30个文件
4951 ■■■■■ 文件已修改
package-lock.json 1429 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/api.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/model/工人.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/model/施工车辆.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/model/桶.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/model/路障.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/model/锥桶.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/mapGeo.js 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/mapInfo.js 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/mapOL.js 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/mapViewer.js 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/measure.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/menuGrid.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/model.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/test03-01.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/Layer/zhuanghao.js 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree/Layer.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree/measureCoord.vue 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree/menuQuery.vue 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree/messageInfo.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree/modelEdit.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/layerTree/zhaiHaiInfo.vue 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/left/leftmenu.vue 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/map/history.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/map/viewer.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/menulist.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/tools/measure.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/tools/plotting.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/tools/roam.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/tools/special copy.vue 1247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/tools/special.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/right/@/assets/img/new/yingxiang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/right/right-bottom.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/right/right-top.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/right/switchImagerLayer.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/index.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/mapSplit.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/CimSDK/Workers/field/rendermapWorker.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/SmartEarthSDK/Workers/field/rendermapWorker.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/SmartEarthSDK/Workers/prop/property_prop.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/data/layerData.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/html/AnalysisResultEchartLine.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/image/工人.png 补丁 | 查看 | 原始文档 | blame | 历史
static/image/施工车辆.png 补丁 | 查看 | 原始文档 | blame | 历史
static/image/桶.png 补丁 | 查看 | 原始文档 | blame | 历史
static/image/路障.png 补丁 | 查看 | 原始文档 | blame | 历史
static/image/锥桶.png 补丁 | 查看 | 原始文档 | blame | 历史
static/img/test03-01.png 补丁 | 查看 | 原始文档 | blame | 历史
static/layers.json 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -142,6 +142,1284 @@
      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
      "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
    },
    "@turf/along": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/along/-/along-6.5.0.tgz",
      "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==",
      "requires": {
        "@turf/bearing": "^6.5.0",
        "@turf/destination": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/angle": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/angle/-/angle-6.5.0.tgz",
      "integrity": "sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==",
      "requires": {
        "@turf/bearing": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/rhumb-bearing": "^6.5.0"
      }
    },
    "@turf/area": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/area/-/area-6.5.0.tgz",
      "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/bbox": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/bbox/-/bbox-6.5.0.tgz",
      "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/bbox-clip": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/bbox-clip/-/bbox-clip-6.5.0.tgz",
      "integrity": "sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/bbox-polygon": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/bbox-polygon/-/bbox-polygon-6.5.0.tgz",
      "integrity": "sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/bearing": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/bearing/-/bearing-6.5.0.tgz",
      "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/bezier-spline": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/bezier-spline/-/bezier-spline-6.5.0.tgz",
      "integrity": "sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/boolean-clockwise": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-clockwise/-/boolean-clockwise-6.5.0.tgz",
      "integrity": "sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/boolean-contains": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-contains/-/boolean-contains-6.5.0.tgz",
      "integrity": "sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/boolean-point-on-line": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/boolean-crosses": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz",
      "integrity": "sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==",
      "requires": {
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-intersect": "^6.5.0",
        "@turf/polygon-to-line": "^6.5.0"
      }
    },
    "@turf/boolean-disjoint": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-disjoint/-/boolean-disjoint-6.5.0.tgz",
      "integrity": "sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==",
      "requires": {
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/line-intersect": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/polygon-to-line": "^6.5.0"
      }
    },
    "@turf/boolean-equal": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-equal/-/boolean-equal-6.5.0.tgz",
      "integrity": "sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==",
      "requires": {
        "@turf/clean-coords": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "geojson-equality": "0.1.6"
      }
    },
    "@turf/boolean-intersects": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-intersects/-/boolean-intersects-6.5.0.tgz",
      "integrity": "sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==",
      "requires": {
        "@turf/boolean-disjoint": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/boolean-overlap": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-overlap/-/boolean-overlap-6.5.0.tgz",
      "integrity": "sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-intersect": "^6.5.0",
        "@turf/line-overlap": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "geojson-equality": "0.1.6"
      }
    },
    "@turf/boolean-parallel": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-parallel/-/boolean-parallel-6.5.0.tgz",
      "integrity": "sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==",
      "requires": {
        "@turf/clean-coords": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/line-segment": "^6.5.0",
        "@turf/rhumb-bearing": "^6.5.0"
      }
    },
    "@turf/boolean-point-in-polygon": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz",
      "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/boolean-point-on-line": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz",
      "integrity": "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/boolean-within": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/boolean-within/-/boolean-within-6.5.0.tgz",
      "integrity": "sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/boolean-point-on-line": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/buffer": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/buffer/-/buffer-6.5.0.tgz",
      "integrity": "sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/center": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/projection": "^6.5.0",
        "d3-geo": "1.7.1",
        "turf-jsts": "*"
      }
    },
    "@turf/center": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/center/-/center-6.5.0.tgz",
      "integrity": "sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/center-mean": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/center-mean/-/center-mean-6.5.0.tgz",
      "integrity": "sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/center-median": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/center-median/-/center-median-6.5.0.tgz",
      "integrity": "sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==",
      "requires": {
        "@turf/center-mean": "^6.5.0",
        "@turf/centroid": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/center-of-mass": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/center-of-mass/-/center-of-mass-6.5.0.tgz",
      "integrity": "sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==",
      "requires": {
        "@turf/centroid": "^6.5.0",
        "@turf/convex": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/centroid": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/centroid/-/centroid-6.5.0.tgz",
      "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/circle": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/circle/-/circle-6.5.0.tgz",
      "integrity": "sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==",
      "requires": {
        "@turf/destination": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/clean-coords": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/clean-coords/-/clean-coords-6.5.0.tgz",
      "integrity": "sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/clone": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/clone/-/clone-6.5.0.tgz",
      "integrity": "sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/clusters": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/clusters/-/clusters-6.5.0.tgz",
      "integrity": "sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/clusters-dbscan": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/clusters-dbscan/-/clusters-dbscan-6.5.0.tgz",
      "integrity": "sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "density-clustering": "1.3.0"
      }
    },
    "@turf/clusters-kmeans": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/clusters-kmeans/-/clusters-kmeans-6.5.0.tgz",
      "integrity": "sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "skmeans": "0.9.7"
      }
    },
    "@turf/collect": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/collect/-/collect-6.5.0.tgz",
      "integrity": "sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "rbush": "2.x"
      },
      "dependencies": {
        "quickselect": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-1.1.1.tgz",
          "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
        },
        "rbush": {
          "version": "2.0.2",
          "resolved": "https://registry.npmmirror.com/rbush/-/rbush-2.0.2.tgz",
          "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
          "requires": {
            "quickselect": "^1.0.1"
          }
        }
      }
    },
    "@turf/combine": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/combine/-/combine-6.5.0.tgz",
      "integrity": "sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/concave": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/concave/-/concave-6.5.0.tgz",
      "integrity": "sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/tin": "^6.5.0",
        "topojson-client": "3.x",
        "topojson-server": "3.x"
      }
    },
    "@turf/convex": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/convex/-/convex-6.5.0.tgz",
      "integrity": "sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "concaveman": "*"
      }
    },
    "@turf/destination": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/destination/-/destination-6.5.0.tgz",
      "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/difference": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/difference/-/difference-6.5.0.tgz",
      "integrity": "sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "polygon-clipping": "^0.15.3"
      }
    },
    "@turf/dissolve": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/dissolve/-/dissolve-6.5.0.tgz",
      "integrity": "sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "polygon-clipping": "^0.15.3"
      }
    },
    "@turf/distance": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/distance/-/distance-6.5.0.tgz",
      "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/distance-weight": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/distance-weight/-/distance-weight-6.5.0.tgz",
      "integrity": "sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==",
      "requires": {
        "@turf/centroid": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/ellipse": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/ellipse/-/ellipse-6.5.0.tgz",
      "integrity": "sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/rhumb-destination": "^6.5.0",
        "@turf/transform-rotate": "^6.5.0"
      }
    },
    "@turf/envelope": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/envelope/-/envelope-6.5.0.tgz",
      "integrity": "sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/bbox-polygon": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/explode": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/explode/-/explode-6.5.0.tgz",
      "integrity": "sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/flatten": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/flatten/-/flatten-6.5.0.tgz",
      "integrity": "sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/flip": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/flip/-/flip-6.5.0.tgz",
      "integrity": "sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/great-circle": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/great-circle/-/great-circle-6.5.0.tgz",
      "integrity": "sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/helpers": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/helpers/-/helpers-6.5.0.tgz",
      "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw=="
    },
    "@turf/hex-grid": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/hex-grid/-/hex-grid-6.5.0.tgz",
      "integrity": "sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==",
      "requires": {
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/intersect": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/interpolate": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/interpolate/-/interpolate-6.5.0.tgz",
      "integrity": "sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/centroid": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/hex-grid": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/point-grid": "^6.5.0",
        "@turf/square-grid": "^6.5.0",
        "@turf/triangle-grid": "^6.5.0"
      }
    },
    "@turf/intersect": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/intersect/-/intersect-6.5.0.tgz",
      "integrity": "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "polygon-clipping": "^0.15.3"
      }
    },
    "@turf/invariant": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/invariant/-/invariant-6.5.0.tgz",
      "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/isobands": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/isobands/-/isobands-6.5.0.tgz",
      "integrity": "sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==",
      "requires": {
        "@turf/area": "^6.5.0",
        "@turf/bbox": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/explode": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "object-assign": "*"
      }
    },
    "@turf/isolines": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/isolines/-/isolines-6.5.0.tgz",
      "integrity": "sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "object-assign": "*"
      }
    },
    "@turf/kinks": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/kinks/-/kinks-6.5.0.tgz",
      "integrity": "sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/length": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/length/-/length-6.5.0.tgz",
      "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==",
      "requires": {
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/line-arc": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-arc/-/line-arc-6.5.0.tgz",
      "integrity": "sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==",
      "requires": {
        "@turf/circle": "^6.5.0",
        "@turf/destination": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/line-chunk": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-chunk/-/line-chunk-6.5.0.tgz",
      "integrity": "sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/length": "^6.5.0",
        "@turf/line-slice-along": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/line-intersect": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-intersect/-/line-intersect-6.5.0.tgz",
      "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-segment": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "geojson-rbush": "3.x"
      }
    },
    "@turf/line-offset": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-offset/-/line-offset-6.5.0.tgz",
      "integrity": "sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/line-overlap": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-overlap/-/line-overlap-6.5.0.tgz",
      "integrity": "sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==",
      "requires": {
        "@turf/boolean-point-on-line": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-segment": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/nearest-point-on-line": "^6.5.0",
        "deep-equal": "1.x",
        "geojson-rbush": "3.x"
      }
    },
    "@turf/line-segment": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-segment/-/line-segment-6.5.0.tgz",
      "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/line-slice": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-slice/-/line-slice-6.5.0.tgz",
      "integrity": "sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/nearest-point-on-line": "^6.5.0"
      }
    },
    "@turf/line-slice-along": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-slice-along/-/line-slice-along-6.5.0.tgz",
      "integrity": "sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==",
      "requires": {
        "@turf/bearing": "^6.5.0",
        "@turf/destination": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/line-split": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-split/-/line-split-6.5.0.tgz",
      "integrity": "sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-intersect": "^6.5.0",
        "@turf/line-segment": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/nearest-point-on-line": "^6.5.0",
        "@turf/square": "^6.5.0",
        "@turf/truncate": "^6.5.0",
        "geojson-rbush": "3.x"
      }
    },
    "@turf/line-to-polygon": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/line-to-polygon/-/line-to-polygon-6.5.0.tgz",
      "integrity": "sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/mask": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/mask/-/mask-6.5.0.tgz",
      "integrity": "sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "polygon-clipping": "^0.15.3"
      }
    },
    "@turf/meta": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/meta/-/meta-6.5.0.tgz",
      "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/midpoint": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/midpoint/-/midpoint-6.5.0.tgz",
      "integrity": "sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==",
      "requires": {
        "@turf/bearing": "^6.5.0",
        "@turf/destination": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/moran-index": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/moran-index/-/moran-index-6.5.0.tgz",
      "integrity": "sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==",
      "requires": {
        "@turf/distance-weight": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/nearest-point": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/nearest-point/-/nearest-point-6.5.0.tgz",
      "integrity": "sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/nearest-point-on-line": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz",
      "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==",
      "requires": {
        "@turf/bearing": "^6.5.0",
        "@turf/destination": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-intersect": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/nearest-point-to-line": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/nearest-point-to-line/-/nearest-point-to-line-6.5.0.tgz",
      "integrity": "sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/point-to-line-distance": "^6.5.0",
        "object-assign": "*"
      }
    },
    "@turf/planepoint": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/planepoint/-/planepoint-6.5.0.tgz",
      "integrity": "sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/point-grid": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/point-grid/-/point-grid-6.5.0.tgz",
      "integrity": "sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==",
      "requires": {
        "@turf/boolean-within": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/point-on-feature": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/point-on-feature/-/point-on-feature-6.5.0.tgz",
      "integrity": "sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==",
      "requires": {
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/center": "^6.5.0",
        "@turf/explode": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/nearest-point": "^6.5.0"
      }
    },
    "@turf/point-to-line-distance": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/point-to-line-distance/-/point-to-line-distance-6.5.0.tgz",
      "integrity": "sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==",
      "requires": {
        "@turf/bearing": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/projection": "^6.5.0",
        "@turf/rhumb-bearing": "^6.5.0",
        "@turf/rhumb-distance": "^6.5.0"
      }
    },
    "@turf/points-within-polygon": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/points-within-polygon/-/points-within-polygon-6.5.0.tgz",
      "integrity": "sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==",
      "requires": {
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/polygon-smooth": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/polygon-smooth/-/polygon-smooth-6.5.0.tgz",
      "integrity": "sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/polygon-tangents": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/polygon-tangents/-/polygon-tangents-6.5.0.tgz",
      "integrity": "sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/boolean-within": "^6.5.0",
        "@turf/explode": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/nearest-point": "^6.5.0"
      }
    },
    "@turf/polygon-to-line": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz",
      "integrity": "sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/polygonize": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/polygonize/-/polygonize-6.5.0.tgz",
      "integrity": "sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==",
      "requires": {
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/envelope": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/projection": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/projection/-/projection-6.5.0.tgz",
      "integrity": "sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/random": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/random/-/random-6.5.0.tgz",
      "integrity": "sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/rectangle-grid": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/rectangle-grid/-/rectangle-grid-6.5.0.tgz",
      "integrity": "sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==",
      "requires": {
        "@turf/boolean-intersects": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/rewind": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/rewind/-/rewind-6.5.0.tgz",
      "integrity": "sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==",
      "requires": {
        "@turf/boolean-clockwise": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/rhumb-bearing": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/rhumb-bearing/-/rhumb-bearing-6.5.0.tgz",
      "integrity": "sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/rhumb-destination": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/rhumb-destination/-/rhumb-destination-6.5.0.tgz",
      "integrity": "sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/rhumb-distance": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/rhumb-distance/-/rhumb-distance-6.5.0.tgz",
      "integrity": "sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0"
      }
    },
    "@turf/sample": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/sample/-/sample-6.5.0.tgz",
      "integrity": "sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/sector": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/sector/-/sector-6.5.0.tgz",
      "integrity": "sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==",
      "requires": {
        "@turf/circle": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/line-arc": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/shortest-path": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/shortest-path/-/shortest-path-6.5.0.tgz",
      "integrity": "sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/bbox-polygon": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/clean-coords": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/transform-scale": "^6.5.0"
      }
    },
    "@turf/simplify": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/simplify/-/simplify-6.5.0.tgz",
      "integrity": "sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==",
      "requires": {
        "@turf/clean-coords": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/square": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/square/-/square-6.5.0.tgz",
      "integrity": "sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==",
      "requires": {
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/square-grid": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/square-grid/-/square-grid-6.5.0.tgz",
      "integrity": "sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/rectangle-grid": "^6.5.0"
      }
    },
    "@turf/standard-deviational-ellipse": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-6.5.0.tgz",
      "integrity": "sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==",
      "requires": {
        "@turf/center-mean": "^6.5.0",
        "@turf/ellipse": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/points-within-polygon": "^6.5.0"
      }
    },
    "@turf/tag": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/tag/-/tag-6.5.0.tgz",
      "integrity": "sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==",
      "requires": {
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/tesselate": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/tesselate/-/tesselate-6.5.0.tgz",
      "integrity": "sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "earcut": "^2.0.0"
      }
    },
    "@turf/tin": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/tin/-/tin-6.5.0.tgz",
      "integrity": "sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==",
      "requires": {
        "@turf/helpers": "^6.5.0"
      }
    },
    "@turf/transform-rotate": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/transform-rotate/-/transform-rotate-6.5.0.tgz",
      "integrity": "sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==",
      "requires": {
        "@turf/centroid": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/rhumb-bearing": "^6.5.0",
        "@turf/rhumb-destination": "^6.5.0",
        "@turf/rhumb-distance": "^6.5.0"
      }
    },
    "@turf/transform-scale": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/transform-scale/-/transform-scale-6.5.0.tgz",
      "integrity": "sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==",
      "requires": {
        "@turf/bbox": "^6.5.0",
        "@turf/center": "^6.5.0",
        "@turf/centroid": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/rhumb-bearing": "^6.5.0",
        "@turf/rhumb-destination": "^6.5.0",
        "@turf/rhumb-distance": "^6.5.0"
      }
    },
    "@turf/transform-translate": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/transform-translate/-/transform-translate-6.5.0.tgz",
      "integrity": "sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==",
      "requires": {
        "@turf/clone": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/rhumb-destination": "^6.5.0"
      }
    },
    "@turf/triangle-grid": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/triangle-grid/-/triangle-grid-6.5.0.tgz",
      "integrity": "sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==",
      "requires": {
        "@turf/distance": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/intersect": "^6.5.0"
      }
    },
    "@turf/truncate": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/truncate/-/truncate-6.5.0.tgz",
      "integrity": "sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0"
      }
    },
    "@turf/turf": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/turf/-/turf-6.5.0.tgz",
      "integrity": "sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==",
      "requires": {
        "@turf/along": "^6.5.0",
        "@turf/angle": "^6.5.0",
        "@turf/area": "^6.5.0",
        "@turf/bbox": "^6.5.0",
        "@turf/bbox-clip": "^6.5.0",
        "@turf/bbox-polygon": "^6.5.0",
        "@turf/bearing": "^6.5.0",
        "@turf/bezier-spline": "^6.5.0",
        "@turf/boolean-clockwise": "^6.5.0",
        "@turf/boolean-contains": "^6.5.0",
        "@turf/boolean-crosses": "^6.5.0",
        "@turf/boolean-disjoint": "^6.5.0",
        "@turf/boolean-equal": "^6.5.0",
        "@turf/boolean-intersects": "^6.5.0",
        "@turf/boolean-overlap": "^6.5.0",
        "@turf/boolean-parallel": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/boolean-point-on-line": "^6.5.0",
        "@turf/boolean-within": "^6.5.0",
        "@turf/buffer": "^6.5.0",
        "@turf/center": "^6.5.0",
        "@turf/center-mean": "^6.5.0",
        "@turf/center-median": "^6.5.0",
        "@turf/center-of-mass": "^6.5.0",
        "@turf/centroid": "^6.5.0",
        "@turf/circle": "^6.5.0",
        "@turf/clean-coords": "^6.5.0",
        "@turf/clone": "^6.5.0",
        "@turf/clusters": "^6.5.0",
        "@turf/clusters-dbscan": "^6.5.0",
        "@turf/clusters-kmeans": "^6.5.0",
        "@turf/collect": "^6.5.0",
        "@turf/combine": "^6.5.0",
        "@turf/concave": "^6.5.0",
        "@turf/convex": "^6.5.0",
        "@turf/destination": "^6.5.0",
        "@turf/difference": "^6.5.0",
        "@turf/dissolve": "^6.5.0",
        "@turf/distance": "^6.5.0",
        "@turf/distance-weight": "^6.5.0",
        "@turf/ellipse": "^6.5.0",
        "@turf/envelope": "^6.5.0",
        "@turf/explode": "^6.5.0",
        "@turf/flatten": "^6.5.0",
        "@turf/flip": "^6.5.0",
        "@turf/great-circle": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/hex-grid": "^6.5.0",
        "@turf/interpolate": "^6.5.0",
        "@turf/intersect": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "@turf/isobands": "^6.5.0",
        "@turf/isolines": "^6.5.0",
        "@turf/kinks": "^6.5.0",
        "@turf/length": "^6.5.0",
        "@turf/line-arc": "^6.5.0",
        "@turf/line-chunk": "^6.5.0",
        "@turf/line-intersect": "^6.5.0",
        "@turf/line-offset": "^6.5.0",
        "@turf/line-overlap": "^6.5.0",
        "@turf/line-segment": "^6.5.0",
        "@turf/line-slice": "^6.5.0",
        "@turf/line-slice-along": "^6.5.0",
        "@turf/line-split": "^6.5.0",
        "@turf/line-to-polygon": "^6.5.0",
        "@turf/mask": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "@turf/midpoint": "^6.5.0",
        "@turf/moran-index": "^6.5.0",
        "@turf/nearest-point": "^6.5.0",
        "@turf/nearest-point-on-line": "^6.5.0",
        "@turf/nearest-point-to-line": "^6.5.0",
        "@turf/planepoint": "^6.5.0",
        "@turf/point-grid": "^6.5.0",
        "@turf/point-on-feature": "^6.5.0",
        "@turf/point-to-line-distance": "^6.5.0",
        "@turf/points-within-polygon": "^6.5.0",
        "@turf/polygon-smooth": "^6.5.0",
        "@turf/polygon-tangents": "^6.5.0",
        "@turf/polygon-to-line": "^6.5.0",
        "@turf/polygonize": "^6.5.0",
        "@turf/projection": "^6.5.0",
        "@turf/random": "^6.5.0",
        "@turf/rewind": "^6.5.0",
        "@turf/rhumb-bearing": "^6.5.0",
        "@turf/rhumb-destination": "^6.5.0",
        "@turf/rhumb-distance": "^6.5.0",
        "@turf/sample": "^6.5.0",
        "@turf/sector": "^6.5.0",
        "@turf/shortest-path": "^6.5.0",
        "@turf/simplify": "^6.5.0",
        "@turf/square": "^6.5.0",
        "@turf/square-grid": "^6.5.0",
        "@turf/standard-deviational-ellipse": "^6.5.0",
        "@turf/tag": "^6.5.0",
        "@turf/tesselate": "^6.5.0",
        "@turf/tin": "^6.5.0",
        "@turf/transform-rotate": "^6.5.0",
        "@turf/transform-scale": "^6.5.0",
        "@turf/transform-translate": "^6.5.0",
        "@turf/triangle-grid": "^6.5.0",
        "@turf/truncate": "^6.5.0",
        "@turf/union": "^6.5.0",
        "@turf/unkink-polygon": "^6.5.0",
        "@turf/voronoi": "^6.5.0"
      }
    },
    "@turf/union": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/union/-/union-6.5.0.tgz",
      "integrity": "sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "polygon-clipping": "^0.15.3"
      }
    },
    "@turf/unkink-polygon": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/unkink-polygon/-/unkink-polygon-6.5.0.tgz",
      "integrity": "sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==",
      "requires": {
        "@turf/area": "^6.5.0",
        "@turf/boolean-point-in-polygon": "^6.5.0",
        "@turf/helpers": "^6.5.0",
        "@turf/meta": "^6.5.0",
        "rbush": "^2.0.1"
      },
      "dependencies": {
        "quickselect": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-1.1.1.tgz",
          "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
        },
        "rbush": {
          "version": "2.0.2",
          "resolved": "https://registry.npmmirror.com/rbush/-/rbush-2.0.2.tgz",
          "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
          "requires": {
            "quickselect": "^1.0.1"
          }
        }
      }
    },
    "@turf/voronoi": {
      "version": "6.5.0",
      "resolved": "https://registry.npmmirror.com/@turf/voronoi/-/voronoi-6.5.0.tgz",
      "integrity": "sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==",
      "requires": {
        "@turf/helpers": "^6.5.0",
        "@turf/invariant": "^6.5.0",
        "d3-voronoi": "1.1.2"
      }
    },
    "@types/geojson": {
      "version": "7946.0.8",
      "resolved": "https://registry.npmmirror.com/@types/geojson/-/geojson-7946.0.8.tgz",
      "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA=="
    },
    "@types/json-schema": {
      "version": "7.0.11",
      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -1775,7 +3053,6 @@
      "version": "1.0.0",
      "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.0.tgz?cache=0&sync_timestamp=1604117087261&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.0.tgz",
      "integrity": "sha1-JBJwVLs/m9y0sfuCQYGGBy93uM4=",
      "dev": true,
      "requires": {
        "function-bind": "^1.1.1",
        "get-intrinsic": "^1.0.0"
@@ -2134,8 +3411,7 @@
    "commander": {
      "version": "2.17.1",
      "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1607931342826&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz",
      "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
      "dev": true
      "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78="
    },
    "commondir": {
      "version": "1.0.1",
@@ -2196,6 +3472,17 @@
        "inherits": "^2.0.3",
        "readable-stream": "^2.2.2",
        "typedarray": "^0.0.6"
      }
    },
    "concaveman": {
      "version": "1.2.1",
      "resolved": "https://registry.npmmirror.com/concaveman/-/concaveman-1.2.1.tgz",
      "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==",
      "requires": {
        "point-in-polygon": "^1.1.0",
        "rbush": "^3.0.1",
        "robust-predicates": "^2.0.4",
        "tinyqueue": "^2.0.3"
      }
    },
    "connect-history-api-fallback": {
@@ -3397,6 +4684,24 @@
        "type": "^1.0.1"
      }
    },
    "d3-array": {
      "version": "1.2.4",
      "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-1.2.4.tgz",
      "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
    },
    "d3-geo": {
      "version": "1.7.1",
      "resolved": "https://registry.npmmirror.com/d3-geo/-/d3-geo-1.7.1.tgz",
      "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==",
      "requires": {
        "d3-array": "1"
      }
    },
    "d3-voronoi": {
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz",
      "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw=="
    },
    "de-indent": {
      "version": "1.0.2",
      "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
@@ -3436,7 +4741,6 @@
      "version": "1.1.1",
      "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606860754950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz",
      "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
      "dev": true,
      "requires": {
        "is-arguments": "^1.0.4",
        "is-date-object": "^1.0.1",
@@ -3455,7 +4759,6 @@
      "version": "1.1.3",
      "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
      "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
      "dev": true,
      "requires": {
        "object-keys": "^1.0.12"
      }
@@ -3554,6 +4857,11 @@
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
      "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
    },
    "density-clustering": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/density-clustering/-/density-clustering-1.3.0.tgz",
      "integrity": "sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ=="
    },
    "depd": {
      "version": "1.1.2",
@@ -3928,7 +5236,6 @@
      "version": "1.2.1",
      "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz",
      "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=",
      "dev": true,
      "requires": {
        "is-callable": "^1.1.4",
        "is-date-object": "^1.0.1",
@@ -4638,6 +5945,26 @@
        "globule": "^1.0.0"
      }
    },
    "geojson-equality": {
      "version": "0.1.6",
      "resolved": "https://registry.npmmirror.com/geojson-equality/-/geojson-equality-0.1.6.tgz",
      "integrity": "sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==",
      "requires": {
        "deep-equal": "^1.0.0"
      }
    },
    "geojson-rbush": {
      "version": "3.2.0",
      "resolved": "https://registry.npmmirror.com/geojson-rbush/-/geojson-rbush-3.2.0.tgz",
      "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==",
      "requires": {
        "@turf/bbox": "*",
        "@turf/helpers": "6.x",
        "@turf/meta": "6.x",
        "@types/geojson": "7946.0.8",
        "rbush": "^3.0.1"
      }
    },
    "geotiff": {
      "version": "2.0.7",
      "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.7.tgz",
@@ -4674,7 +6001,6 @@
      "version": "1.0.2",
      "resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.0.2.tgz?cache=0&sync_timestamp=1608274324399&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.0.2.tgz",
      "integrity": "sha1-aCDaIm5QskiU4IhZRp3Gg2FUXUk=",
      "dev": true,
      "requires": {
        "function-bind": "^1.1.1",
        "has": "^1.0.3",
@@ -4808,8 +6134,7 @@
    "has-symbols": {
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz",
      "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=",
      "dev": true
      "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg="
    },
    "has-unicode": {
      "version": "2.0.1",
@@ -5387,7 +6712,6 @@
      "version": "1.1.0",
      "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz",
      "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=",
      "dev": true,
      "requires": {
        "call-bind": "^1.0.0"
      }
@@ -5416,8 +6740,7 @@
    "is-callable": {
      "version": "1.2.2",
      "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.2.tgz",
      "integrity": "sha1-x8ZxXNItTdtI0+GZcCI6zquwgNk=",
      "dev": true
      "integrity": "sha1-x8ZxXNItTdtI0+GZcCI6zquwgNk="
    },
    "is-color-stop": {
      "version": "1.1.0",
@@ -5453,8 +6776,7 @@
    "is-date-object": {
      "version": "1.0.2",
      "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz",
      "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=",
      "dev": true
      "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4="
    },
    "is-descriptor": {
      "version": "0.1.6",
@@ -5579,7 +6901,6 @@
      "version": "1.1.1",
      "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.1.tgz?cache=0&sync_timestamp=1596555709354&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.1.1.tgz",
      "integrity": "sha1-xvmKrMVG9s7FRooHt7FTq1ZKV7k=",
      "dev": true,
      "requires": {
        "has-symbols": "^1.0.1"
      }
@@ -5615,7 +6936,6 @@
      "version": "1.0.3",
      "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz",
      "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=",
      "dev": true,
      "requires": {
        "has-symbols": "^1.0.1"
      }
@@ -7499,8 +8819,7 @@
    "object-assign": {
      "version": "4.1.1",
      "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
      "dev": true
      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
    },
    "object-copy": {
      "version": "0.1.0",
@@ -7527,14 +8846,12 @@
    "object-inspect": {
      "version": "1.9.0",
      "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.9.0.tgz?cache=0&sync_timestamp=1606804265193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.9.0.tgz",
      "integrity": "sha1-yQUh104RJ7ZyZt7TOUrWEWmGUzo=",
      "dev": true
      "integrity": "sha1-yQUh104RJ7ZyZt7TOUrWEWmGUzo="
    },
    "object-is": {
      "version": "1.1.4",
      "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.4.tgz?cache=0&sync_timestamp=1606460471250&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.4.tgz",
      "integrity": "sha1-Y9bIPACkP0y8lDTrl1fIpbhWUGg=",
      "dev": true,
      "requires": {
        "call-bind": "^1.0.0",
        "define-properties": "^1.1.3"
@@ -7543,8 +8860,7 @@
    "object-keys": {
      "version": "1.1.1",
      "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz",
      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=",
      "dev": true
      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4="
    },
    "object-visit": {
      "version": "1.0.1",
@@ -7559,7 +8875,6 @@
      "version": "4.1.2",
      "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115104654&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz",
      "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=",
      "dev": true,
      "requires": {
        "call-bind": "^1.0.0",
        "define-properties": "^1.1.3",
@@ -7988,6 +9303,27 @@
      "dev": true,
      "requires": {
        "find-up": "^2.1.0"
      }
    },
    "point-in-polygon": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/point-in-polygon/-/point-in-polygon-1.1.0.tgz",
      "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw=="
    },
    "polygon-clipping": {
      "version": "0.15.7",
      "resolved": "https://registry.npmmirror.com/polygon-clipping/-/polygon-clipping-0.15.7.tgz",
      "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==",
      "requires": {
        "robust-predicates": "^3.0.2",
        "splaytree": "^3.1.0"
      },
      "dependencies": {
        "robust-predicates": {
          "version": "3.0.2",
          "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz",
          "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
        }
      }
    },
    "portfinder": {
@@ -10678,7 +12014,6 @@
      "version": "1.3.0",
      "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz",
      "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=",
      "dev": true,
      "requires": {
        "define-properties": "^1.1.3",
        "es-abstract": "^1.17.0-next.1"
@@ -10688,7 +12023,6 @@
          "version": "1.17.7",
          "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.7.tgz?cache=0&sync_timestamp=1601503225168&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes-abstract%2Fdownload%2Fes-abstract-1.17.7.tgz",
          "integrity": "sha1-pN5hsvZpifx0IWdsHLl4dXOs5Uw=",
          "dev": true,
          "requires": {
            "es-to-primitive": "^1.2.1",
            "function-bind": "^1.1.1",
@@ -10911,6 +12245,11 @@
        "hash-base": "^3.0.0",
        "inherits": "^2.0.1"
      }
    },
    "robust-predicates": {
      "version": "2.0.4",
      "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-2.0.4.tgz",
      "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg=="
    },
    "run-queue": {
      "version": "1.0.3",
@@ -11340,6 +12679,11 @@
        }
      }
    },
    "skmeans": {
      "version": "0.9.7",
      "resolved": "https://registry.npmmirror.com/skmeans/-/skmeans-0.9.7.tgz",
      "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg=="
    },
    "slash": {
      "version": "1.0.0",
      "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz",
@@ -11711,6 +13055,11 @@
        }
      }
    },
    "splaytree": {
      "version": "3.1.2",
      "resolved": "https://registry.npmmirror.com/splaytree/-/splaytree-3.1.2.tgz",
      "integrity": "sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A=="
    },
    "split-string": {
      "version": "3.1.0",
      "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
@@ -11855,7 +13204,6 @@
      "version": "1.0.3",
      "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.3.tgz?cache=0&sync_timestamp=1606008054045&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.3.tgz",
      "integrity": "sha1-oivVPMpcfPRNfJ1ccyEYhz1s0Ys=",
      "dev": true,
      "requires": {
        "call-bind": "^1.0.0",
        "define-properties": "^1.1.3"
@@ -11865,7 +13213,6 @@
      "version": "1.0.3",
      "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.3.tgz?cache=0&sync_timestamp=1606008053958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.3.tgz",
      "integrity": "sha1-m0y1kOEjuzZWRAHVmCQpjeUP1ao=",
      "dev": true,
      "requires": {
        "call-bind": "^1.0.0",
        "define-properties": "^1.1.3"
@@ -12140,6 +13487,11 @@
      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
      "dev": true
    },
    "tinyqueue": {
      "version": "2.0.3",
      "resolved": "https://registry.npmmirror.com/tinyqueue/-/tinyqueue-2.0.3.tgz",
      "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="
    },
    "to-arraybuffer": {
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
@@ -12189,6 +13541,22 @@
      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
      "dev": true
    },
    "topojson-client": {
      "version": "3.1.0",
      "resolved": "https://registry.npmmirror.com/topojson-client/-/topojson-client-3.1.0.tgz",
      "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
      "requires": {
        "commander": "2"
      }
    },
    "topojson-server": {
      "version": "3.0.1",
      "resolved": "https://registry.npmmirror.com/topojson-server/-/topojson-server-3.0.1.tgz",
      "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==",
      "requires": {
        "commander": "2"
      }
    },
    "toposort": {
      "version": "1.0.7",
      "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz",
@@ -12230,6 +13598,11 @@
      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
      "dev": true
    },
    "turf-jsts": {
      "version": "1.2.3",
      "resolved": "https://registry.npmmirror.com/turf-jsts/-/turf-jsts-1.2.3.tgz",
      "integrity": "sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA=="
    },
    "type": {
      "version": "1.2.0",
      "resolved": "https://registry.npm.taobao.org/type/download/type-1.2.0.tgz",
package.json
@@ -10,6 +10,7 @@
    "build": "node build/build.js"
  },
  "dependencies": {
    "@turf/turf": "^6.5.0",
    "animate.css": "^4.1.1",
    "axios": "^0.21.1",
    "echarts": "^5.4.2",
src/api/api.js
@@ -23,7 +23,7 @@
  return service.put('system/user/profile/updatePwd', params);
}
export function Op_SelectByPage(params){
export function Op_SelectByPage(params) {
  //请求地址
  return service.get("/Op/SelectByPage", { params: params });
}
@@ -31,10 +31,14 @@
  //请求地址
  return service.post("/Op/Insert", params);
}
export function Op_UpdateById(params){
export function Op_UpdateById(params) {
  //请求地址
  return service.post("/Op/UpdateById", params);
}
export function kuanDeng_mp_getMpByLocation(params) {
  return service.get("https://apis.kuandeng.net/v1/search/mp/getMpByLocation?locations=" + params.lon + "," + params.lat + "&dataVersion=JSJK_210000");
}
//京办登录
src/assets/img/model/¹¤ÈË.png
src/assets/img/model/Ê©¹¤³µÁ¾.png
src/assets/img/model/Ͱ.png
src/assets/img/model/·ÕÏ.png
src/assets/img/model/׶Ͱ.png
src/assets/js/Layer/mapGeo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
var source = []
const mapGeo = {
    init(res) {
        switch (res.type) {
            case "WangGe":
                this.addWangGeGeoJson(res);
                break;
            case "ZhuangHao":
                this.addZhuangHaoGeoJson(res)
                break;
            case "PingQuXian":
                this.addPingQuXianGeoJson(res)
                break;
            case "ZhongQuXian":
                this.addZhongQuXianGeoJson(res)
                break;
            case "zhaiHai":
                this.addzhaiHaiGeoJson(res)
                break;
        }
    },
    delGeoSource(res) {
        if (res.type == "zhaiHai") {
            Viewer.dataSources.remove(Viewer.dataSources.getByName("zhaiHai2")[0])
            Viewer.dataSources.remove(Viewer.dataSources.getByName("zhaiHai1")[0])
            Viewer.dataSources.remove(Viewer.dataSources.getByName("zhaiHai3")[0])
        } else {
            Viewer.dataSources.remove(Viewer.dataSources.getByName(res.type)[0])
        }
    },
    addzhaiHaiGeoJson(res) {
        var url1 = layerData.config.Model_URL + res.urls[0];
        var url2 = layerData.config.Model_URL + res.urls[1];
        var url3 = layerData.config.Model_URL + res.urls[2];
        var color = Cesium.Color.fromCssColorString("rgb(255,0,255)")
        var data1 = Cesium.GeoJsonDataSource.load(url1, //要加载的 url、GeoJSON å¯¹è±¡æˆ– TopoJSON å¯¹è±¡ã€‚
            {
                stroke: color, //折线和多边形轮廓的默认颜色。
                fill: Cesium.Color.WHITE.withAlpha(0.2), //多边形内部的默认颜色。
                strokeWidth: 3, //折线和多边形轮廓的默认宽度。
            }
        )
        data1.then((dataSource) => {
            dataSource.name = "zhaiHai1"
            Viewer.dataSources.add(
                dataSource
            );
        })
        var data2 = Cesium.GeoJsonDataSource.load(url2, //要加载的 url、GeoJSON å¯¹è±¡æˆ– TopoJSON å¯¹è±¡ã€‚
            {
                stroke: color, //折线和多边形轮廓的默认颜色。
                fill: Cesium.Color.WHITE.withAlpha(0.2), //多边形内部的默认颜色。
                strokeWidth: 3, //折线和多边形轮廓的默认宽度。
            }
        )
        data2.then((dataSource) => {
            dataSource.name = "zhaiHai2"
            Viewer.dataSources.add(
                dataSource
            );
        })
        var data3 = Cesium.GeoJsonDataSource.load(url3, //要加载的 url、GeoJSON å¯¹è±¡æˆ– TopoJSON å¯¹è±¡ã€‚
            {
                stroke: color, //折线和多边形轮廓的默认颜色。
                fill: Cesium.Color.WHITE.withAlpha(0.2), //多边形内部的默认颜色。
                strokeWidth: 3, //折线和多边形轮廓的默认宽度。
            }
        )
        data3.then((dataSource) => {
            dataSource.name = "zhaiHai3"
            Viewer.dataSources.add(
                dataSource
            );
        })
    },
    addZhongQuXianGeoJson(res) {
        var url = layerData.config.Model_URL + res.urls;
        var data = Cesium.GeoJsonDataSource.load(url, //要加载的 url、GeoJSON å¯¹è±¡æˆ– TopoJSON å¯¹è±¡ã€‚
            {
                stroke: Cesium.Color.ORANGE, //折线和多边形轮廓的默认颜色。
                fill: Cesium.Color.WHITE.withAlpha(0.2), //多边形内部的默认颜色。
                strokeWidth: 3, //折线和多边形轮廓的默认宽度。
            }
        )
        data.then((dataSource) => {
            dataSource.name = res.type
            Viewer.dataSources.add(
                dataSource
            );
        })
    },
    addPingQuXianGeoJson(res) {
        var url = layerData.config.Model_URL + res.urls;
        var data = Cesium.GeoJsonDataSource.load(url, //要加载的 url、GeoJSON å¯¹è±¡æˆ– TopoJSON å¯¹è±¡ã€‚
            {
                stroke: Cesium.Color.SKYBLUE, //折线和多边形轮廓的默认颜色。
                fill: Cesium.Color.WHITE.withAlpha(0.2), //多边形内部的默认颜色。
                strokeWidth: 3, //折线和多边形轮廓的默认宽度。
            }
        )
        data.then((dataSource) => {
            dataSource.name = res.type
            Viewer.dataSources.add(
                dataSource
            );
        })
    },
    addWangGeGeoJson(res) {
        var url = layerData.config.Model_URL + res.urls;
        var data = Cesium.GeoJsonDataSource.load(url, //要加载的 url、GeoJSON å¯¹è±¡æˆ– TopoJSON å¯¹è±¡ã€‚
            {
                stroke: Cesium.Color.RED, //折线和多边形轮廓的默认颜色。
                fill: Cesium.Color.WHITE.withAlpha(0.2), //多边形内部的默认颜色。
                strokeWidth: 3, //折线和多边形轮廓的默认宽度。
            }
        )
        data.then((dataSource) => {
            dataSource.name = res.type
            Viewer.dataSources.add(
                dataSource
            );
        })
    },
    addZhuangHaoGeoJson(res) {
        var url = layerData.config.Model_URL + res.urls;
        var img = layerData.config.Model_URL + '/Data/img/img1.png';
        var source1 = Cesium.GeoJsonDataSource.load(url)
        source1.then((dataSource) => {
            dataSource.name = res.type
            Viewer.dataSources.add(
                dataSource
            );
            const entities = dataSource.entities.values;
            // è®¾ç½®èšåˆå‚æ•°
            dataSource.clustering.enabled = true;
            dataSource.clustering.pixelRange = 20;
            dataSource.clustering.minimumClusterSize = 2;
            for (var i = 0; i < entities.length; i++) {
                const entity = entities[i];
                entity.billboard = {
                    image: img,
                    color: Cesium.Color.AQUA,
                    width: 32,
                    height: 32,
                    pixelOffset: new Cesium.Cartesian3(0, -40, 0),
                };
                entity.label = {
                    text: entity.name,
                    font: '14px',
                    pixelOffset: new Cesium.Cartesian3(0, -80, 0),
                    fillColor: Cesium.Color.BLIUE,
                };
            }
            // æ·»åŠ ç›‘å¬å‡½æ•°
            dataSource.clustering.clusterEvent.addEventListener(
                function (clusteredEntities, cluster) {
                    // å…³é—­è‡ªå¸¦çš„æ˜¾ç¤ºèšåˆæ•°é‡çš„æ ‡ç­¾
                    cluster.label.show = false;
                    cluster.billboard.show = false;
                    cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;
                }
            )
        })
    },
}
export default mapGeo;
src/assets/js/Layer/mapInfo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import store from "../../../store";
const mapInfo = {
    listArr: [
        '桩号_Point',
    ],
    mssageInfo: null,
    Init(html) {
        if (!html) return;
        var xmlDoc = this.getXMLNode(html)
        if (xmlDoc.length == 0) return
        this.showMapInfo(xmlDoc);
    },
    setRestLayer() {
        store.state.showZhaiHaiImg = null;
        store.state.isshowZhaiHai = false;
        store.state.showMessageInfo = false;
        this.mssageInfo = null
    },
    setGeoJsonInfo(res) {
        if (res.projectId && res.frameNo) {
            this.setRestLayer();
            store.state.showZhaiHaiImg = res;
            store.state.isshowZhaiHai = true;
        } else {
            var val_name = res._propertyNames;
            var val = [];
            for (var i = 0; i < val_name.length; i++) {
                var obj = {
                    name: val_name[i],
                    value: res[val_name[i]]._value,
                }
                val.push(obj)
            }
            if (val.length == 0) return
            this.showMapInfo(val);
        }
    },
    showMapInfo(res) {
        this.setRestLayer();
        setTimeout(() => {
            this.mssageInfo = res;
            store.state.showMessageInfo = true;
        }, 100);
    },
    getXMLNode(html) {
        let str = html;
        //创建文档对象
        let xmlDoc = new DOMParser().parseFromString(str, "text/xml");
        let finds = xmlDoc.getElementsByTagName('Featureinfo');
        var val = []//获取find节点
        for (let i = 0; i < finds.length; i++) {     //循环节点
            let finder = finds[i];
            this.getfun(finder, val);
        }
        return val
    },
    getfun(res, val) {
        var child = res.childNodes;
        for (var i = 0; i < child.length; i++) {
            var node = child[i].childNodes;
            if (node.length > 1) {
                this.getfun(child[i], val)
            } else {
                val.push({
                    name: child[i].nodeName,
                    value: child[i].childNodes[0].nodeValue
                })
            }
        }
        return val;
    }
}
export default mapInfo;
src/assets/js/Layer/mapOL.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,217 @@
import VectorLayer from "ol/layer/Vector";
import VectorSource from "ol/source/Vector";
import Feature from "ol/Feature";
import Point from "ol/geom/Point";
import LineString from "ol/geom/LineString";
import {fromExtent } from "ol/geom/Polygon";
import { Polygon} from "ol/geom";
import { fromLonLat } from "ol/proj";
import { Circle, Fill, Icon, Stroke, Style, Text } from 'ol/style.js';
const mapOL = {
    removeLayerData(res){
        var layers =  window.map.getAllLayers();
        for(var i=0;i<layers.length;i++){
            if(res.id === layers[i].values_.id){
                window.map.removeLayer(layers[i])
            }
        }
    },
    addLayerData(res) {
        var type = res.style.type;
        if (!type) return
        this.removeLayerData(res)
        switch (type) {
            case 'label':
                this.addLabellayer(res);
                break;
            case 'billboard':
                this.addBillboardlayer(res);
                break;
            case 'polyline':
                this.addPolylinelayer(res);
                break;
            case 'rectangle':
                this.addRectanglelayer(res);
                break;
            case 'polygon':
                this.addPolygonlayer(res);
                break;
        }
    },
    CesiumTo84(x, y, z) {
        var ellipsoid = Viewer.scene.globe.ellipsoid;
        var cartographic = ellipsoid.cartesianToCartographic({ x: x, y: y, z: z });
        var lat = Cesium.Math.toDegrees(cartographic.latitude);
        var lng = Cesium.Math.toDegrees(cartographic.longitude);
        var alt = cartographic.height;
        return [lng, lat, alt ]
    },
    addLabellayer(res) {
        var style = res.style;
        var val = this.CesiumTo84(style.position.x, style.position.y, style.position.z)
        const labelFeature = new Feature({
            geometry: new Point([val[0], val[1]]),
        });
        const labelStyle = new Style({
            text: new Text({
                text: style.text,
                font: style.font,
                fill: new Fill({
                    color: style.fillColor,
                }),
                stroke: new Stroke({
                    color: style.outlineColor,
                    width: style.outlineWidth,
                }),
            }),
        });
        labelFeature.setStyle([labelStyle])
        const vectorSource = new VectorSource({
            features: [labelFeature],
        });
        var vectorLayer = new VectorLayer({
            id: res.id,
            source: vectorSource,
        });
        window.map.addLayer(vectorLayer)
    },
    addBillboardlayer(res) {
        var style = res.style;
        var val = this.CesiumTo84(style.position.x, style.position.y, style.position.z)
        const imgFeature = new Feature({
            geometry: new Point([val[0], val[1]]),
        });
        const imgStyle = new Style({
            image: new Icon({
                scale: style.scale,
                src: style.image,
            }),
        });
        imgFeature.setStyle([imgStyle])
        const vectorSource = new VectorSource({
            features: [imgFeature],
        });
        var vectorLayer = new VectorLayer({
            id: res.id,
            source: vectorSource,
        });
        window.map.addLayer(vectorLayer)
    },
    addPolylinelayer(res) {
        var style = res.style;
        var positon = style.positions;
        var geom = [];
        for (var i in positon) {
            var lonlat = positon[i];
            var val = this.CesiumTo84(lonlat.x, lonlat.y, lonlat.z);
            geom.push([val[0], val[1]])
        }
        const lineFeature = new Feature({
            geometry: new LineString(geom),
            name: "Line"
        });
        const lineStyle = new Style({
            stroke: new Stroke({
                color: style.color,
                width: style.outlineWidth == 0 ? 2 : style.outlineWidth,
            }),
        });
        lineFeature.setStyle([lineStyle])
        const vectorSource = new VectorSource({
            features: [lineFeature],
        });
        var vectorLayer = new VectorLayer({
            id: res.id,
            source: vectorSource,
        });
        window.map.addLayer(vectorLayer)
    },
    addRectanglelayer(res) {
        var style = res.style;
        var east = Cesium.Math.toDegrees(
            style.coordinates.east
        );
        var north = Cesium.Math.toDegrees(
            style.coordinates.north
        );
        var west = Cesium.Math.toDegrees(
            style.coordinates.west
        );
        var south = Cesium.Math.toDegrees(
            style.coordinates.south
        );
        var rectFeature = new Feature({
            geometry: new fromExtent([east, south, west, north])
        });
        const rectStyle = new Style({
            //填充色
            fill: new Fill({
                color:  style.color,
            }),
            //边线颜色
            stroke: new Stroke({
                color:  style.outlineColor,
                width: 1
            }),
        });
        rectFeature.setStyle(rectStyle)
        const vectorSource = new VectorSource({
            features: [rectFeature],
        });
        var vectorLayer = new VectorLayer({
            id: res.id,
            source: vectorSource,
        });
        window.map.addLayer(vectorLayer)
    },
    addPolygonlayer(res) {
        var style = res.style;
        console.log(style)
        var positon= style.positions;
        var geom = [];
        for (var i in positon) {
            var lonlat = positon[i];
            var val = this.CesiumTo84(lonlat.x, lonlat.y, lonlat.z);
            geom.push([val[0], val[1]])
        }
        if(geom[0]!= geom[geom.length-1]){
            geom.push(geom[0])
        }
           var std =[];
           std.push(geom)
        var rectFeature = new Feature({
            geometry: new Polygon(std)
        });
        const rectStyle = new Style({
            //填充色
            fill: new Fill({
                color:  style.color,
            }),
            //边线颜色
            stroke: new Stroke({
                color:  style.outlineColor,
                width: 1
            }),
        });
        rectFeature.setStyle(rectStyle)
        const vectorSource = new VectorSource({
            features: [rectFeature],
        });
        var vectorLayer = new VectorLayer({
            id: res.id,
            source: vectorSource,
        });
        window.map.addLayer(vectorLayer)
    },
}
export default mapOL;
src/assets/js/Layer/mapViewer.js
@@ -1,4 +1,5 @@
import store from "../../../store";
import mapInfo from "./mapInfo";
import model from "./model";
const mapViewer = {
    leftClick: null,
@@ -10,7 +11,9 @@
    addLeftClick() {
        this.leftClick = new Cesium.ScreenSpaceEventHandler(window.Viewer.canvas);
        this.leftClick.setInputAction(function (event) {
            let cartesian =  window.Viewer.camera.pickEllipsoid(event.position);
            let nPickFeature = Viewer.scene.pick(event.position);
            let cartesian = window.Viewer.camera.pickEllipsoid(event.position);
            let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
            let lng = Cesium.Math.toDegrees(cartographic.longitude); // ç»åº¦
            let lat = Cesium.Math.toDegrees(cartographic.latitude); // çº¬åº¦
@@ -24,18 +27,34 @@
                roll: 0,
                scale: 1,
            };
            if(store.state.addModelFlag){
            store.state.coordinate = coordinate;
            if (store.state.addModelFlag) {
                model.setModelCoord(coordinate);
            }
            if(store.state.isMeasureFlag){
                store.state.measureCoordObj = coordinate;
                store.state.isShowMeasureCoord= true;
            }
            if (Cesium.defined(nPickFeature)) {
                if(nPickFeature.id && nPickFeature.id.properties){
                    mapInfo.setGeoJsonInfo(nPickFeature.id.properties)
                }
            }
            if(store.state.isQueryFalag){
                console.log(coordinate)
                store.state.isQyeryCoord = coordinate;
            }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
    },
    addRightClick() {
        this.rightClick = new Cesium.ScreenSpaceEventHandler(window.Viewer.canvas);
        this.rightClick.setInputAction(function (event) {
            let pickedObject = window.Viewer.scene.pick(event.position);
            console.log(pickedObject)
            store.state.isMeasureFlag = false;
        }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
    },
}
src/assets/js/Layer/measure.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
import Viewer from "../../../components/map/viewer.vue";
const measure = {
    imgLabel: [],
    addImgLabel(res) {
        // const label = sgworld.factory.createLabel({
        //     lon: res.lon,
        //     lat: res.lat,
        //     alt: 20,
        //     text: res.dis,
        //     image: "./test03-01.png",
        //     // æ–‡æœ¬åç§»é‡
        //     pixelOffset: new SmartEarth.Cesium.Cartesian2(0, -50),
        //     // å›¾ç‰‡åç§»é‡
        //     iPixelOffset: new SmartEarth.Cesium.Cartesian2(0, -20)
        // });
        // this.imgLabel.push(label)
    },
    deleteImgLabel() {
        // for (var i = 0; i< this.imgLabel.length; i++) {
        //     var label = this.imgLabel[i];
        //     for(var j = 0; j<Viewer.entities._entities._array.length;j++){
        //         if(Viewer.entities._entities._array[j].id == label.entity.id){
        //             Viewer.entities.remove(Viewer.entities._entities._array[j])
        //         }
        //     }
        // }
        // this.imgLabel=[];
    }
}
export default measure;
src/assets/js/Layer/menuGrid.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
const menuGrid = {
    init() {
        console.log(123)
        var grid = sgworld.Creator.createSimpleGraphic(
            "rectangle",
            {
                // clampToGround: false
            }, entity => {
            })
    },
}
export default menuGrid;
src/assets/js/Layer/model.js
@@ -10,6 +10,14 @@
        this.title = item;
        this.setModelMouseMove();
    },
    deleteAll() {
        if (!this.modelLayer) return;
        for (var i = 0; i < this.modelLayer._primitives.length; i++) {
            this.modelLayer.remove(this.modelLayer._primitives[i]);
            i--;
        }
        this.modelLayer = null;
    },
    setModelCoord(res) {
        store.state.addModelFlag = false;
        this.setModelMouseMove();
@@ -62,6 +70,7 @@
        this.getModelLayer();
        var modelMatrix = this.getModelMatrix(res.style);
        var url = layerData.config.Model_URL + res.style.url;
        var model = this.modelLayer.add(Cesium.Model.fromGltf({
            id: res.id,
            url: url,
@@ -80,7 +89,7 @@
        for (var i = 0; i < this.modelLayer._primitives.length; i++) {
            var model = this.modelLayer._primitives[i]
            if (model.id == res.id) {
            if (model.id === res.id) {
                this.modelLayer.remove(this.modelLayer._primitives[i]);
            }
        }
src/assets/js/Layer/test03-01.png
src/assets/js/Layer/zhuanghao.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
const zhData = {
    data: [
        { "value": "1050+000", "lon": 120.236193, "lat": 32.023175, "alt": 13.874103 },
        { "value": "1050+100", "lon": 120.236513, "lat": 32.022301, "alt": 13.874103 },
        { "value": "1050+200", "lon": 120.236837, "lat": 32.021413, "alt": 13.874103 },
        { "value": "1050+300", "lon": 120.237136, "lat": 32.020592, "alt": 13.874103 },
        { "value": "1050+400", "lon": 120.237454, "lat": 32.019719, "alt": 13.874103 },
        { "value": "1050+500", "lon": 120.237769, "lat": 32.018874, "alt": 13.874103 },
        { "value": "1050+600", "lon": 120.238103, "lat": 32.017975, "alt": 13.874103 },
        { "value": "1050+700", "lon": 120.238408, "lat": 32.017154, "alt": 13.874103 },
        { "value": "1050+800", "lon": 120.238739, "lat": 32.01625, "alt": 13.874103 },
        { "value": "1050+900", "lon": 120.239023, "lat": 32.015465, "alt": 13.874103 },
        { "value": "1051+000", "lon": 120.239327, "lat": 32.014617, "alt": 13.874103 },
        { "value": "1051+100", "lon": 120.239631, "lat": 32.013719, "alt": 13.874103 },
        { "value": "1051+200", "lon": 120.239857, "lat": 32.013009, "alt": 13.874103 },
        { "value": "1051+300", "lon": 120.240124, "lat": 32.012116, "alt": 13.874103 },
        { "value": "1051+400", "lon": 120.240387, "lat": 32.011165, "alt": 13.874103 },
        { "value": "1051+500", "lon": 120.240613, "lat": 32.010049, "alt": 13.874103 },
        { "value": "1051+600", "lon": 120.240774, "lat": 32.009161, "alt": 13.874103 },
        { "value": "1051+700", "lon": 120.241055, "lat": 32.008296, "alt": 13.8741025925 },
        { "value": "1051+800", "lon": 120.241211, "lat": 32.007445, "alt": 13.195145607000001 },
        { "value": "1051+900", "lon": 120.241343, "lat": 32.0067, "alt": 12.6165876389 },
        { "value": "1052+000", "lon": 120.241424, "lat": 32.005901, "alt": 11.9407968521 },
        { "value": "1052+100", "lon": 120.241581, "lat": 32.004963, "alt": 11.632371902499999 },
        { "value": "1052+200", "lon": 120.241761, "lat": 32.004085, "alt": 14.4451198578 },
        { "value": "1052+300", "lon": 120.241923, "lat": 32.003181, "alt": 16.110471725499998 },
        { "value": "1052+400", "lon": 120.242074, "lat": 32.002269, "alt": 16.478689193699999 },
        { "value": "1052+500", "lon": 120.242225, "lat": 32.001396, "alt": 16.709852218599998 },
        { "value": "1052+600", "lon": 120.242369, "lat": 32.000568, "alt": 16.709852218599998 },
        { "value": "1052+700", "lon": 120.242551, "lat": 31.999642, "alt": 16.709852218599998 },
        { "value": "1052+800", "lon": 120.242743, "lat": 31.998794, "alt": 16.709852218599998 },
        { "value": "1052+900", "lon": 120.242949, "lat": 31.997912, "alt": 16.709852218599998 },
        { "value": "1053+000", "lon": 120.243173, "lat": 31.997058, "alt": 16.709852218599998 },
        { "value": "1053+100", "lon": 120.243443, "lat": 31.996109, "alt": 16.709852218599998 },
        { "value": "1053+200", "lon": 120.243715, "lat": 31.995199, "alt": 16.709852218599998 },
        { "value": "1053+300", "lon": 120.243969, "lat": 31.994404, "alt": 16.709852218599998 },
        { "value": "1053+400", "lon": 120.244294, "lat": 31.99348, "alt": 16.709852218599998 },
        { "value": "1053+500", "lon": 120.244607, "lat": 31.992624, "alt": 16.709852218599998 },
        { "value": "1053+600", "lon": 120.244944, "lat": 31.991762, "alt": 16.709852218599998 },
        { "value": "1053+700", "lon": 120.245299, "lat": 31.990905, "alt": 16.709852218599998 },
        { "value": "1053+800", "lon": 120.245658, "lat": 31.99007, "alt": 16.709852218599998 },
        { "value": "1053+900", "lon": 120.246076, "lat": 31.989147, "alt": 16.709852218599998 },
        { "value": "1054+000", "lon": 120.246483, "lat": 31.988292, "alt": 16.709852218599998 },
        { "value": "1054+100", "lon": 120.246895, "lat": 31.987466, "alt": 16.709852218599998 },
        { "value": "1054+200", "lon": 120.247327, "lat": 31.986631, "alt": 16.709852218599998 },
        { "value": "1054+300", "lon": 120.247915, "lat": 31.985551, "alt": 16.709852218599998 },
        { "value": "1054+400", "lon": 120.248195, "lat": 31.98504, "alt": 16.709852218599998 },
        { "value": "1054+500", "lon": 120.248641, "lat": 31.984206, "alt": 16.709852218599998 },
        { "value": "1054+600", "lon": 120.249091, "lat": 31.983386, "alt": 16.709852218599998 },
        { "value": "1054+700", "lon": 120.249526, "lat": 31.982585, "alt": 16.709852218599998 },
        { "value": "1054+800", "lon": 120.249966, "lat": 31.981759, "alt": 16.709852218599998 },
        { "value": "1054+900", "lon": 120.250414, "lat": 31.980919, "alt": 16.709852218599998 },
        { "value": "1055+000", "lon": 120.250851, "lat": 31.980089, "alt": 16.709852218599998 },
        { "value": "1055+100", "lon": 120.25129, "lat": 31.979273, "alt": 16.709852218599998 },
        { "value": "1055+200", "lon": 120.251733, "lat": 31.978453, "alt": 16.709852218599998 },
        { "value": "1055+300", "lon": 120.252173, "lat": 31.977638, "alt": 16.709852218599998 },
        { "value": "1055+400", "lon": 120.252608, "lat": 31.976833, "alt": 16.709852218599998 },
        { "value": "1055+500", "lon": 120.25297, "lat": 31.976174, "alt": 16.709852218599998 },
        { "value": "1055+600", "lon": 120.253387, "lat": 31.975382, "alt": 16.709852218599998 },
        { "value": "1055+700", "lon": 120.253838, "lat": 31.974543, "alt": 16.709852218599998 },
        { "value": "1055+800", "lon": 120.254284, "lat": 31.973717, "alt": 16.709852218599998 },
        { "value": "1055+900", "lon": 120.254794, "lat": 31.972756, "alt": 16.709852218599998 },
        { "value": "1056+000", "lon": 120.255095, "lat": 31.972097, "alt": 16.709852218599998 },
        { "value": "1056+100", "lon": 120.255515, "lat": 31.971231, "alt": 16.709852218599998 },
        { "value": "1056+200", "lon": 120.256005, "lat": 31.970429, "alt": 16.709852218599998 },
        { "value": "1056+300", "lon": 120.256484, "lat": 31.969579, "alt": 16.709852218599998 },
        { "value": "1056+400", "lon": 120.256919, "lat": 31.96878, "alt": 16.709852218599998 },
        { "value": "1056+500", "lon": 120.257362, "lat": 31.967971, "alt": 16.709852218599998 },
        { "value": "1056+600", "lon": 120.257792, "lat": 31.967166, "alt": 16.709852218599998 },
        { "value": "1056+700", "lon": 120.258283, "lat": 31.966256, "alt": 16.709852218599998 },
        { "value": "1056+800", "lon": 120.258693, "lat": 31.9654, "alt": 16.709852218599998 },
        { "value": "1056+900", "lon": 120.259122, "lat": 31.964611, "alt": 16.709852218599998 },
        { "value": "1057+000", "lon": 120.259625, "lat": 31.963774, "alt": 16.709852218599998 },
        { "value": "1057+100", "lon": 120.260034, "lat": 31.963017, "alt": 16.709852218599998 },
        { "value": "1057+200", "lon": 120.260429, "lat": 31.962285, "alt": 16.709852218599998 },
        { "value": "1057+300", "lon": 120.260867, "lat": 31.961468, "alt": 16.709852218599998 },
        { "value": "1057+400", "lon": 120.2613, "lat": 31.960662, "alt": 16.709852218599998 },
        { "value": "1057+500", "lon": 120.261733, "lat": 31.959852, "alt": 16.709852218599998 },
        { "value": "1057+600", "lon": 120.262199, "lat": 31.958985, "alt": 16.709852218599998 },
        { "value": "1057+700", "lon": 120.262641, "lat": 31.958162, "alt": 20.419439315799998 },
        { "value": "1057+800", "lon": 120.263083, "lat": 31.957342, "alt": 25.1487751007 },
        { "value": "1057+900", "lon": 120.263539, "lat": 31.956495, "alt": 30.774362564099999 },
        { "value": "1058+000", "lon": 120.264, "lat": 31.955635, "alt": 36.906631469700002 },
        { "value": "1058+100", "lon": 120.26446, "lat": 31.954774, "alt": 43.127822876000003 },
        { "value": "1058+200", "lon": 120.264913, "lat": 31.953932, "alt": 46.632724762000002 },
        { "value": "1058+300", "lon": 120.265349, "lat": 31.953114, "alt": 49.689373016399998 },
        { "value": "1058+400", "lon": 120.265786, "lat": 31.952301, "alt": 52.800041198700001 },
        { "value": "1058+500", "lon": 120.266229, "lat": 31.951482, "alt": 193.290725708 },
        { "value": "1058+600", "lon": 120.266532, "lat": 31.950922, "alt": 57.504016876199998 },
        { "value": "1058+700", "lon": 120.266995, "lat": 31.950057, "alt": 59.774166107200003 },
        { "value": "1058+800", "lon": 120.267458, "lat": 31.949195, "alt": 61.832244873 },
        { "value": "1058+900", "lon": 120.267924, "lat": 31.948323, "alt": 64.506950378400006 },
        { "value": "1059+000", "lon": 120.268383, "lat": 31.947459, "alt": 65.622138977099993 },
        { "value": "1059+100", "lon": 120.268714, "lat": 31.946836, "alt": 66.28465271 },
        { "value": "1059+200", "lon": 120.269191, "lat": 31.945966, "alt": 66.740493774399994 },
        { "value": "1059+300", "lon": 120.269659, "lat": 31.945101, "alt": 67.038345336899994 },
        { "value": "1059+400", "lon": 120.270114, "lat": 31.944238, "alt": 66.820884704600005 },
        { "value": "1059+500", "lon": 120.270493, "lat": 31.943512, "alt": 66.550170898399998 },
        { "value": "1059+600", "lon": 120.270954, "lat": 31.942647, "alt": 65.999832153300005 },
        { "value": "1059+700", "lon": 120.271436, "lat": 31.941751, "alt": 65.308151245100007 },
        { "value": "1059+800", "lon": 120.271886, "lat": 31.940912, "alt": 64.024765014600007 },
        { "value": "1059+900", "lon": 120.272358, "lat": 31.940034, "alt": 62.4715614319 },
        { "value": "1060+000", "lon": 120.272824, "lat": 31.939168, "alt": 60.201644897500003 },
        { "value": "1060+100", "lon": 120.273267, "lat": 31.938339, "alt": 58.084266662600001 },
        { "value": "1060+200", "lon": 120.273802, "lat": 31.937337, "alt": 55.740924835199998 },
        { "value": "1060+300", "lon": 120.274241, "lat": 31.936508, "alt": 55.740925 },
        { "value": "1060+400", "lon": 120.27467, "lat": 31.935689, "alt": 55.740925 },
        { "value": "1060+500", "lon": 120.27511, "lat": 31.934861, "alt": 55.740925 },
        { "value": "1060+600", "lon": 120.275547, "lat": 31.934052, "alt": 55.740925 },
        { "value": "1060+700", "lon": 120.27594, "lat": 31.93332, "alt": 55.740925 },
        { "value": "1060+800", "lon": 120.276386, "lat": 31.932513, "alt": 55.740925 },
        { "value": "1060+900", "lon": 120.276805, "lat": 31.931717, "alt": 55.740925 },
        { "value": "1061+000", "lon": 120.27713, "lat": 31.931113, "alt": 55.740925 },
        { "value": "1061+100", "lon": 120.277607, "lat": 31.930438, "alt": 55.740925 },
        { "value": "1061+200", "lon": 120.278157, "lat": 31.929557, "alt": 55.740925 },
        { "value": "1061+300", "lon": 120.278596, "lat": 31.928878, "alt": 55.740925 },
        { "value": "1061+400", "lon": 120.279217, "lat": 31.92785, "alt": 55.740925 },
        { "value": "1061+500", "lon": 120.279718, "lat": 31.927132, "alt": 55.740925 },
        { "value": "1061+600", "lon": 120.280311, "lat": 31.926338, "alt": 55.740925 },
        { "value": "1061+700", "lon": 120.28096, "lat": 31.925491, "alt": 55.740925 },
        { "value": "1061+800", "lon": 120.28155, "lat": 31.924714, "alt": 55.740925 },
        { "value": "1061+900", "lon": 120.282201, "lat": 31.923877, "alt": 55.740925 },
        { "value": "1062+000", "lon": 120.282721, "lat": 31.92326, "alt": 55.740925 },
        { "value": "1062+100", "lon": 120.283335, "lat": 31.922504, "alt": 55.740925 },
        { "value": "1062+200", "lon": 120.283865, "lat": 31.921831, "alt": 55.740925 },
        { "value": "1062+300", "lon": 120.284462, "lat": 31.921045, "alt": 55.740925 },
        { "value": "1062+400", "lon": 120.284929, "lat": 31.920421, "alt": 55.740925 },
        { "value": "1062+500", "lon": 120.285564, "lat": 31.919545, "alt": 55.740925 },
        { "value": "1062+600", "lon": 120.286075, "lat": 31.918817, "alt": 55.740925 },
        { "value": "1062+700", "lon": 120.286664, "lat": 31.917935, "alt": 55.740925 },
        { "value": "1062+800", "lon": 120.287156, "lat": 31.917189, "alt": 55.740925 },
        { "value": "1062+900", "lon": 120.287688, "lat": 31.916341, "alt": 55.740925 },
    ]
}
export default zhData;
src/components/index.vue
@@ -23,6 +23,7 @@
    </div>
    <viewer1 class="mapViewer" id="mapOl" :key="switchKey" v-show="viewer1Show" :style="viewer1Style" />
    <viewer class="mapViewer" id="mapView" ref="mapViewer" :style="viewerStyle" />
    <measure-coord v-show="$store.state.isShowMeasureCoord"></measure-coord>
    <div class="controlPanel" :style="{
      width: `${size}`,
      height: `${size}`,
@@ -53,6 +54,8 @@
    <div id="imageModel" class="imageModel">
      <img id="myImage" class="image" src="">
    </div>
    <message-info v-if="$store.state.showMessageInfo"></message-info>
    <zhai-hai-info  v-if="$store.state.isshowZhaiHai"></zhai-hai-info>
  </div>
</template>
@@ -70,7 +73,9 @@
import signalling from "@/components/menu/signalling";
import bottommenu from "@/components/menu/bottom-menu";
import { mapState, mapMutations } from "vuex";
import messageInfo from "@/components/left/layerTree/messageInfo.vue";
import measureCoord from "@/components/left/layerTree/measureCoord.vue";
import zhaiHaiInfo from "./left/layerTree/zhaiHaiInfo.vue";
export default {
  name: "index",
  components: {
@@ -85,7 +90,10 @@
    setting,
    qycharts,
    History,
    signalling
    signalling,
    messageInfo,
    measureCoord,
    zhaiHaiInfo
  },
  data() {
    return {
src/components/left/layerTree.vue
@@ -1569,6 +1569,7 @@
          break;
        case "wmse":
          layer = sgworld.Creator.CreateWMSImageFeatureLayer(
            treeNode.name,
            {
@@ -1576,7 +1577,8 @@
              url: treeNode.urls,
              queryParameters: {
                layers: treeNode.layer || ""
              }
              },
            },
            {},
            "0",
src/components/left/layerTree/Layer.vue
@@ -19,8 +19,8 @@
            <el-button class="button-user" type="primary" icon="el-icon-upload" title="上传至服务器"
              @click.stop="saveHistoryPlot"></el-button>
            <!-- <el-button class="button-user historyBtn" type="primary" icon="el-icon-s-order" title="历史记录"
              @click.stop="histotyPlotting"></el-button> -->
            <el-button class="button-user historyBtn" type="primary" icon="el-icon-s-order" title="获取最新数据"
              @click.stop="histotyPlotting"></el-button>
          </el-upload>
        </div>
@@ -99,6 +99,7 @@
import SaveScene from "./SaveScene.vue";
import { Op_SelectByPage, Op_Insert, Op_UpdateById } from '../../../api/api.js'
import model from "../../../assets/js/Layer/model";
import mapOL from "../../../assets/js/Layer/mapOL";
// å·¥ç¨‹æ ‘工具
let _treeTool;
function arrGroup(arr, fn) {
@@ -195,7 +196,8 @@
      Bus.$emit("checkTab", "index/add/treeLayer", false);
    },
    closeLayer() {
      this.$parent.hideLayer();
      this.$store.state.isShowLayer= false
      // this.$parent.hideLayer();
    },
    // å®šä¹‰ä¸­è½¬ç«™äº‹ä»¶
    initBusEvent() {
@@ -389,6 +391,9 @@
    },
    // åŠ è½½åŽ†å²æ ‡ç»˜æ•°æ®
    async histotyPlotting() {
      this.setTreeData([]);
      this.initData({});
      model.deleteAll();
      const data = await Op_SelectByPage({ pageSize: 1000000, pageIndex: 1, name: '' });
      if (data.status == 200 && data.data.length > 0) {
        var val_data = data.data;
@@ -550,6 +555,7 @@
        if (addData && node._children) {
          node._children.forEach((item) => {
            _treeTool.addData(item);
            console.log(item)
            this.setAddGLBLayer(item);
          });
        } else {
@@ -586,6 +592,12 @@
          model.addModelLayer(treeNode);
        } else {
          model.setDelGLBModel(treeNode);
        }
      } else if (treeNode.sourceType == "SimpleGraphic") {
        if (isCheck) {
          mapOL.addLayerData(treeNode);
        } else {
          mapOL.removeLayerD(treeNode);
        }
      }
      // åªèƒ½åŒæ—¶åŠ è½½ä¸€ä¸ªåœ°å½¢
@@ -809,6 +821,8 @@
      if (res.sourceType == "GLB" && res.checked) {
        model.addModelLayer(res);
      } else if (res.sourceType == "SimpleGraphic" && res.checked) {
        mapOL.addLayerData(res);
      }
    },
    // æ·»åŠ æ¼”ç¤ºåŠ¨ç”»
@@ -943,6 +957,10 @@
      if (this.selectNode.sourceType === "GLB") {
        model.setDelGLBModel(this.selectNode)
      }
       if (this.selectNode.sourceType === "SimpleGraphic") {
        mapOL.removeLayerData(this.selectNode)
      }
      this.remove(this.selectNode);
      this.$refs.tree && this.$refs.tree.setCurrentKey(null);
src/components/left/layerTree/measureCoord.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,175 @@
<template>
  <div id="mapInfo" class="modelBox" v-drag>
    <div>
      <div class="modleTitle ">
        <div>坐标拾取</div>
        <div class="modelClose" @click="close"> X</div>
      </div>
    </div>
    <div class="modelContent">
      <div class="contentMessage" v-for="(item, index) in modelOption" :key="index">
        <div>{{ item.lon }},{{ item.lat }}</div>
        <div>{{ item.dis }}</div>
      </div>
    </div>
  </div>
</template>
<script>
import model from '../../../assets/js/Layer/model';
import mapInfo from '../../../assets/js/Layer/mapInfo';
import * as turf from '@turf/turf'
import measure from '../../../assets/js/Layer/measure';
export default {
  name: "modelEdit",
  components: {
    menuOpton: [],
  },
  computed: {
    Obj() {
      return this.$store.state.measureCoordObj;
    },
    proObj() {
      return this.$store.state.isShowMeasureCoord;
    }
  },
  watch: {
    Obj(newVal, oldVal) {
      if (newVal) {
        this.setMeasureCoord(newVal);
      }
    },
    proObj(newVal) {
      if (newVal == false) {
        this.modelOption = []
      }
    }
  },
  data() {
    return {
      modelOption: []
    };
  },
  mounted() {
  },
  destroyed() {
  },
  methods: {
    close() {
      this.$store.state.isShowMeasureCoord = false
      this.$store.state.isMeasureFlag = false
      this.$store.state.measureCoordObj = false
      measure.deleteImgLabel()
    },
    setMeasureCoord(res) {
      var dis = null
      if (this.modelOption.length > 0) {
        var obj = this.modelOption[this.modelOption.length - 1]
        var from = turf.point([obj.lon, obj.lat]);
        var to = turf.point([res.longitude, res.latitude]);
        var options = { units: 'meters' };
        var distance = turf.distance(from, to, options);
        dis = distance > 1000 ? parseFloat((distance / 1000)).toFixed(2) + "千米" : parseFloat((distance)).toFixed(2) + "ç±³";
      } else {
        dis = '0ç±³';
      }
      var obj={
        lon: res.longitude,
        lat: res.latitude,
        dis: dis
      }
      this.modelOption.push(obj);
      measure.addImgLabel(obj);
    },
  }
};
</script>
<style scoped lang="less">
.modelBox {
  width: 360px;
  height: 40%;
  border: 1px solid white;
  top: 30%;
  right: 60px;
  background-color: rgba(0, 0, 0, 0.6); // #0048fd69 !important
  z-index: 9999;
  position: absolute;
  .modleTitle {
    height: 42px;
    width: 90%;
    background: #0048fd69 !important;
    border-bottom: 1px solid white;
    color: white;
    font-weight: 700px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0% 5%;
    .modelClose {
      height: 16px;
      width: 16px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(128, 128, 128, 0.6);
      font-size: 14x;
    }
  }
  .modelContent {
    width: 90%;
    height: calc(95% - 42px);
    margin: 5%;
    // display: flex;
    // justify-content: space-between;
    overflow-y: auto;
    overflow-x: hidden;
    .contentMessage {
      width: 100%;
      color: white;
      display: flex;
      border: 1px solid white;
      border-top: transparent;
      div {
        // width: 50%;
        text-align: center;
        // margin-bottom: 5%;
        line-height: 50px;
      }
      div:first-child {
        width: 59%;
        border-right: 1px solid white;
      }
      div:last-child {
        width: 40%;
        border-right: 1px solid white;
      }
    }
    .contentMessage:first-child {
      border-top: 1px solid white;
      ;
    }
  }
}
</style>
src/components/left/layerTree/menuQuery.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,274 @@
<template>
  <div class="modelBox" v-drag>
    <div>
      <div class="modleTitle ">
        <div>桩号查询</div>
        <div class="modelClose" @click="$store.state.isShowMenuQuery = false"> X</div>
      </div>
    </div>
    <div class="modelContent">
      <div>
        <el-select v-model="formInline.type" @change="setTypeChange" placeholder="请选择" style="width: 100%;">
          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
          </el-option>
        </el-select>
      </div>
      <div class="contentBox" label-width="80px">
        <el-form :inline="true" :model="formInline" class="demo-form-inline">
          <el-form-item label="桩号:" v-if="formInline.type != '2'">
            <!-- <el-input v-model="formInline.zhuangHao" style="width: 270px" placeholder="请输入桩号..."></el-input> -->
            <el-autocomplete class="inline-input" v-model="formInline.zhuangHao" :fetch-suggestions="querySearch"
              placeholder="请输入内容" :trigger-on-focus="false" @select="handleSelect"></el-autocomplete>
          </el-form-item>
          <el-form-item label="经度:" v-if="formInline.type == '2'">
            <el-input v-model="formInline.lon" style="width: 270px" placeholder="请输入经度或拾取坐标..."></el-input>
          </el-form-item>
          <el-form-item label="维度:" v-if="formInline.type == '2'">
            <el-input v-model="formInline.lat" style="width: 270px" placeholder="请输入维度或拾取坐标..."></el-input>
          </el-form-item>
          <el-form-item>
            <div class="contentButton">
              <el-button size="small" @click="$store.state.isQueryFalag = true" v-show="formInline.type == '2'">拾取
              </el-button>
              <el-button size="small" @click="setQuery">查询</el-button>
            </div>
          </el-form-item>
        </el-form>
      </div>
      <div class="queryBox" v-show="queryData.length > 0" v-for="(item, key) in queryData" :key="key">
        <div>
          {{ item.name }}
        </div>
        <div>
          :
        </div>
        <div>
          {{ item.val }}
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import model from '../../../assets/js/Layer/model';
import zhData from '../../../assets/js/Layer/zhuanghao';
import { kuanDeng_mp_getMpByLocation } from '../../../api/api'
export default {
  name: "modelQuery",
  components: {},
  computed: {
    Obj() {
      return this.$store.state.isQyeryCoord;
    },
  },
  watch: {
    Obj(newVal, oldVal) {
      if (newVal) {
        this.formInline.lon= newVal.longitude;
        this.formInline.lat= newVal.latitude;
        this.$store.state.isQueryFalag = false;
        this.$store.state.isQyeryCoord = null;
      }
    },
  },
  data() {
    return {
      options: [{
        value: '1',
        label: '桩号查询'
      }, {
        value: '2',
        label: '坐标查询'
      }],
      formInline: {
        type: '1',
        zhuangHao: "",
        lon: "",
        lat: ""
      },
      restaurants: [],
      queryData: [],
    };
  },
  mounted() {
    this.setLayerStart();
  },
  destroyed() {
  },
  methods: {
    setTypeChange() {
      this.formInline.zhuangHao = "";
      this.formInline.lon = "";
      this.formInline.lat = "";
      this.queryData = [];
    },
    setQuery() {
      var coord = null;
      if (this.formInline.type == '1') {
        coord = this.getQueryItem(this.formInline.zhuangHao);
      } else {
        coord={
          lon:this.formInline.lon,
          lat:this.formInline.lat
        }
      }
      if (!coord) return;
      this.getQueryMessageInfo(coord)
    },
    async getQueryMessageInfo(coord) {
      this.queryData = [];
      const data = await kuanDeng_mp_getMpByLocation(coord)
      if (data.status == 200 && data.data.result.length > 0) {
        var val = data.data.result[0];
        if (!val.LINK_CODE) return;
        for (var key in val) {
          var qval = null;
          if (key === "UP_DOWN") {
            if (val[key] == '1') {
              qval = '上行'
            } else if (val[key] == '2') {
              qval = '下行'
            }
          } else {
            qval = val[key]
          }
          this.queryData.push({
            name: key,
            val: qval
          })
        }
      }
      if (this.queryData.length > 0 && this.formInline.type == '1') {
        Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(
            coord.lon,
            coord.lat,
            300
          ),
          orientation: {
            heading: 0,
            pitch: Cesium.Math.toRadians(-80.0),
            roll: 0,
          },
        });
      }
    },
    getQueryItem(res) {
      for (var i in this.restaurants) {
        if (this.restaurants[i].value === res) {
          var coord = this.restaurants[i];
          return {
            lon: coord.lon,
            lat: coord.lat,
            alt: coord.alt
          };
        }
      }
      return null;
    },
    setLayerStart() {
      this.restaurants = zhData.data;
    },
    querySearch(queryString, cb) {
      var restaurants = this.restaurants;
      var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
      // è°ƒç”¨ callback è¿”回建议列表的数据
      cb(results);
    },
    handleSelect(item) {
      this.queryItem = item;
    },
    createFilter(queryString) {
      return (restaurant) => {
        return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
      };
    },
  }
};
</script>
<style scoped lang="less">
.modelBox {
  width: 360px;
  height: 60%;
  border: 1px solid white;
  top: 70px;
  right: 20px;
  background-color: rgba(0, 0, 0, 0.6); // #0048fd69 !important
  z-index: 9999;
  position: absolute;
  .modleTitle {
    height: 42px;
    width: 90%;
    background: #0048fd69 !important;
    border-bottom: 1px solid white;
    color: white;
    font-weight: 700px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0% 5%;
    .modelClose {
      height: 16px;
      width: 16px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(128, 128, 128, 0.6);
      font-size: 14x;
    }
  }
  .modelContent {
    width: 90%;
    height: calc(95% - 42px);
    margin: 5%;
    /deep/.el-form-item__label {
      color: white;
    }
    .contentBox {
      padding: 10px 0px;
    }
    .contentButton {
      width: 325px;
      display: flex;
      justify-content: center;
    }
    .queryBox {
      display: flex;
      color: white;
      div {
        line-height: 40px;
      }
    }
  }
}
</style>
src/components/left/layerTree/messageInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
<template>
  <div id="mapInfo" class="modelBox" v-drag>
    <div>
      <div class="modleTitle ">
        <div>属性信息</div>
        <div class="modelClose" @click="$store.state.showMessageInfo = false"> X</div>
      </div>
    </div>
    <div class="modelContent">
      <div class="contentMessage" v-for="(item, index) in modelOption" :key="index">
        <div>{{ item.name }}</div>
        <div>{{ item.value }}</div>
      </div>
    </div>
  </div>
</template>
<script>
import model from '../../../assets/js/Layer/model';
import mapInfo from '../../../assets/js/Layer/mapInfo';
export default {
  name: "modelEdit",
  components: {
  },
  data() {
    return {
      modelOption: null
    };
  },
  mounted() {
    this.setLayerStart();
  },
  destroyed() {
  },
  methods: {
    setLayerStart() {
      this.modelOption = mapInfo.mssageInfo;
    },
  }
};
</script>
<style scoped lang="less">
.modelBox {
  width: 370px;
  height: 30%;
  border: 1px solid white;
  top: 30%;
  left: calc(50% - 180px);
  background-color: rgba(0, 0, 0, 0.6); // #0048fd69 !important
  z-index: 9999;
  position: absolute;
  .modleTitle {
    height: 42px;
    width: 90%;
    background: #0048fd69 !important;
    border-bottom: 1px solid white;
    color: white;
    font-weight: 700px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0% 5%;
    .modelClose {
      height: 16px;
      width: 16px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(128, 128, 128, 0.6);
      font-size: 14x;
    }
  }
  .modelContent {
    width: 88%;
    height: calc(95% - 62px);
    margin: 5%;
    // display: flex;
    // justify-content: space-between;
    overflow-y: auto;
    overflow-x: hidden;
    .contentMessage {
      width: 100%;
      color: white;
      display: flex;
      border: 1px solid white;
      border-top: transparent;
      div {
        width: calc(50% - 2px);
        text-align: center;
        // margin-bottom: 5%;
        line-height: 50px;
        border-right: 1px solid white;
      }
      div:first-child {
        border-right: 1px solid white;
      }
    }
    .contentMessage:first-child {
      border-top: 1px solid white;
      ;
    }
  }
}
</style>
src/components/left/layerTree/modelEdit.vue
@@ -13,11 +13,11 @@
        </el-form-item>
        <el-form-item label="经度">
          <el-input-number style="width: 100%;" @change="setModelFormChange(2)" v-model="modelOption.style.longitude"
            :step="0.001" />
            :step="0.00001" />
        </el-form-item>
        <el-form-item label="维度">
          <el-input-number style="width: 100%;" @change="setModelFormChange(2)" v-model="modelOption.style.latitude"
            :step="0.001" />
            :step="0.00001" />
        </el-form-item>
        <el-form-item label="高度">
          <el-input-number style="width: 100%;" @change="setModelFormChange(2)" :min="-100" :max="1000"
src/components/left/layerTree/zhaiHaiInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
<template>
  <div id="mapInfo" class="modelBox" v-drag>
    <div>
      <div class="modleTitle ">
        <div>属性信息</div>
        <div class="modelClose" @click="$store.state.isshowZhaiHai = false"> X</div>
      </div>
    </div>
    <div class="modelContent ">
      <div class="pdDialog" style="height: 100%;width: 100%; ">
        <canvas id="pdCanvas">
        </canvas>
    </div>
    </div>
  </div>
</template>
<script>
export default {
  name: "zhaiHaiInfo",
  components: {
  },
  data() {
    return {
      properties: null,
    };
  },
  mounted() {
    this.setLayerStart();
  },
  destroyed() {
  },
  methods: {
    setLayerStart() {
      this.properties = this.$store.state.showZhaiHaiImg;
      this.renderCanvas(this.properties)
    },
    renderCanvas(properties) {
      // å›¾ç‰‡åŠ è½½æˆåŠŸåŽ
      const imgs = new Image()
      let imgSrc = "http://222.128.27.75:18010/thumb/production/road_detection_v4/"
        + properties.projectId + "/distress_track_processor_v5/output/"
        + properties.trackId + "/bev_video/"
        + properties.trackId + ".mp4/thumb-"
        + (properties.frameNo - 1) * 10 + ".jpg"
      imgs.crossOrigin = 'Anonymous'
      imgs.setAttribute('crossOrigin', 'Anonymous')
      imgs.src = imgSrc;
      imgs.onerror = () => {
        console.error('图片加载失败!');
        return false
      }
      var that = this;
      imgs.onload = () => {
        let imgHeight = 0,
          imgWidth = 0;
        let gridSize = [
          properties.G_WIDTH || 40, properties.G_WIDTH || 44
        ]
        const canvas = document.getElementById('pdCanvas');
        if (!canvas) { return }
        const ctx = canvas.getContext('2d');
        const _frame = document.getElementsByClassName('pdDialog')[0];
        const canvasWidth = _frame.offsetWidth;
        const canvasHeight = _frame.offsetHeight;
        // console.log(imgs)
        // var originalHeight = imgs.HEIGHT||761 / 1;
        // var originalWidth = imgs.WIDTH||1523 / 1;
        var originalHeight = Number(properties.HEIGHT) || 800 / 1;
        var originalWidth = Number(properties.WIDTH) || 1600 / 1;
        // ç”»å¸ƒå®½é«˜æ¯”
        const canvasRatio = canvasWidth / canvasHeight;
        // å›¾ç‰‡çš„宽高比
        var whRatio = originalWidth / originalHeight;
        // å›¾ç‰‡ç›¸å¯¹äºŽç”»å¸ƒçš„尺寸进行调整
        // å¦‚果图片的宽高比大于画布的宽高比
        if (whRatio > canvasRatio) {
          imgWidth = canvasWidth;
          imgHeight = imgWidth / whRatio;
        } else {
          imgHeight = canvasHeight;
          imgWidth = imgHeight * whRatio;
        }
        whRatio = imgWidth / imgHeight;
        canvas.height = imgHeight;
        canvas.width = imgWidth;
        //绘制背景图
        ctx.drawImage(
          imgs,
          0,
          0,
          imgWidth,
          imgHeight
        )
        var scaleGridSizeX = imgWidth / originalWidth * gridSize[0];
        var scaleGridSizeY = imgHeight / originalHeight * gridSize[1];
        var scaleGridSize = [
          scaleGridSizeX, scaleGridSizeY
        ];
        that.drawMarker(ctx, scaleGridSize, properties);
      }
    },
    drawMarker(ctx, scaleGridSize, properties) {
      let width = scaleGridSize[0];
      let height = scaleGridSize[0];
      let _grids = [];
      var grid = properties.grids._value
      if (!Array.isArray(grid)) {
        _grids = JSON.parse(grid)
      } else {
        _grids =grid;
      }
      _grids.forEach(m => {
        let x = m[0] * width;
        let y = m[1] * height;
        let markerImg = new Image();
        let markerImgSrc = 'https://webapi.kuandeng.net/gs/pddemo/pdmarker/' + properties.type + '.png';
        markerImg.crossOrigin = 'Anonymous'
        markerImg.setAttribute('crossOrigin', 'Anonymous')
        markerImg.src = markerImgSrc;
        markerImg.onload = () => {
          ctx.drawImage(markerImg,
            x,
            y,
            width,
            height)
        }
      })
    }
  }
};
</script>
<style scoped lang="less">
.modelBox {
  width: 40%;
  height: 50%;
  border: 1px solid white;
  top: 25%;
  left: 30%;
  background-color: rgba(0, 0, 0, 0.6); // #0048fd69 !important
  z-index: 9999;
  position: absolute;
  .modleTitle {
    height: 42px;
    width: 90%;
    background: #0048fd69 !important;
    border-bottom: 1px solid white;
    color: white;
    font-weight: 700px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0% 5%;
    .modelClose {
      height: 16px;
      width: 16px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(128, 128, 128, 0.6);
      font-size: 14x;
    }
  }
  .modelContent {
    width: 100%;
    height: calc(100% - 42px);
    // margin: 1%;
    // display: flex;
    // justify-content: space-between;
  }
}
</style>
src/components/left/leftmenu.vue
@@ -1,15 +1,7 @@
<template>
  <div
    @click="showLeftMenu"
    :class="{ leftmenu: !isShowLeftPanel, leftmenu_active: isShowLeftPanel }"
    class="leftmenustyle"
  >
    <span
      class="closeLeftMenu"
      v-if="isShowLeftPanel"
      @click.stop="hideLeftMenu"
      >×</span
    >
  <div @click="showLeftMenu" :class="{ leftmenu: !isShowLeftPanel, leftmenu_active: isShowLeftPanel }"
    class="leftmenustyle">
    <span class="closeLeftMenu" v-if="isShowLeftPanel" @click.stop="hideLeftMenu">×</span>
    <img class="openLeftMenu" v-else src="@/assets/img/left/souselist4.png" />
    <div class="layerTreeContainer" v-show="isShowLeftPanel">
@@ -18,7 +10,7 @@
          <el-radio :label="1">组织机构</el-radio>
          <el-radio :label="2">业务要素</el-radio>
        </el-radio-group> -->
        <span>图层管理</span>
        <span>图层管理</span>
        <!-- <div @click="setTreeDataChange(1)">业务</div>
        <div @click="setTreeDataChange(2)">业务</div> -->
      </div>
@@ -28,17 +20,8 @@
        <el-button size="small" @click="setTreeDataChange(2)">图层2</el-button>
      </div> -->
      <div class="layerTree">
        <el-tree
          :data="treeData"
          node-key="id"
          ref="tree"
          :default-checked-keys="arr"
          style="min-width: 160px"
          show-checkbox
          :render-content="renderContent"
          :default-expanded-keys="defaultExpanded"
          @check="check"
        ></el-tree>
        <el-tree :data="treeData" node-key="id" ref="tree" :default-checked-keys="arr" style="min-width: 160px"
          show-checkbox :render-content="renderContent" :default-expanded-keys="defaultExpanded" @check="check"></el-tree>
      </div>
    </div>
  </div>
@@ -57,6 +40,8 @@
import { getmenu } from "../../api/api";
import keys from "@/assets/poiKeys1";
import store from "@/utils/store";
import mapInfo from "../../assets/js/Layer/mapInfo";
import mapGeo from "../../assets/js/Layer/mapGeo";
let colorTool;
let projectTreeData = [];
@@ -840,6 +825,7 @@
      // æ‰“勾选中
      let isCheck = data.checkedKeys.indexOf(treeNode.id) > -1;
      this.setVisiable(treeNode, isCheck);
      this.setGeoJSOnCheck(treeNode,isCheck);
      //选中之后传给vuex
      let selectedLayers = this.$refs.tree.getCheckedNodes();
      let filterSelectLayers = selectedLayers;
@@ -866,6 +852,11 @@
      // if (this.updateFlag) {
      return params;
      // }
    },
    setGeoJSOnCheck(treeNode, checked){
      if(!checked){
        mapGeo.delGeoSource(treeNode);
      }
    },
    setVisiable(treeNode, checked) {
      if (treeNode.sourceType == "BJ2000") {
@@ -977,7 +968,7 @@
          height: 310,
          url: "./static/html/layerProp.html",
          fn: {
            end: function () {},
            end: function () { },
          },
        });
      } else if (data._children) {
@@ -1195,9 +1186,8 @@
              treeNode.name,
              {
                id: treeNode.id,
                url: `${treeNode.urls}/${treeNode.tile || "{z}/{x}/{y}"}.${
                  treeNode.img || "png"
                }`,
                url: `${treeNode.urls}/${treeNode.tile || "{z}/{x}/{y}"}.${treeNode.img || "png"
                  }`,
                enablePickFeatures: false,
                level: treeNode.Level,
                minimumLevel: treeNode.minimumLevel,
@@ -1718,6 +1708,10 @@
            );
          }
          break;
        case 'GEOJSON':
          mapGeo.init(treeNode);
          break;
        case "wmse":
          // layer = sgworld.Creator.CreateWMSImageFeatureLayer(
          //   treeNode.name,
@@ -1736,6 +1730,12 @@
          //   true,
          //   function () {}
          // );
          var that = this;
          var getFeatureInfoFormat = new Cesium.GetFeatureInfoFormat("", null, function (html) {
            // that.getFeatureInfo(html)
            mapInfo.Init(html)
          });
          layer = sgworld.Creator.createImageryProvider(
            treeNode.name,
            "wms",
@@ -1743,16 +1743,19 @@
              id: treeNode.id,
              url: treeNode.urls,
              level: treeNode.Level,
              zIndex: 999,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              enablePickFeatures: false,
              layers: treeNode.layer || "",
              alpha: treeNode.alpha,
              parameters: {
                format: "image/png",
                transparent: true,
              },
              enablePickFeatures: true,
              getFeatureInfoParameters: { info_format: 'text/html' },
              getFeatureInfoFormats: [getFeatureInfoFormat],
            },
            "0",
            undefined,
@@ -1769,8 +1772,8 @@
          axios
            .get(
              treeNode.urls +
                "?version=1.3.0&request=GetFeature&format=json&typename=" +
                treeNode.layer
              "?version=1.3.0&request=GetFeature&format=json&typename=" +
              treeNode.layer
            )
            .then((data) => {
              let features = data.data.features;
@@ -2038,7 +2041,7 @@
              clampToGround: sgworld.Core.defaultValue(
                treeNode.clampToGround,
                treeNode.extrudedHeight === undefined &&
                  treeNode.height === undefined
                treeNode.height === undefined
              ),
              classificationType: treeNode.classificationType,
              near: sgworld.Core.defaultValue(treeNode.near, 0),
@@ -2169,7 +2172,7 @@
              de,
              "0",
              treeNode.checked,
              function () {}
              function () { }
            );
          } else if (treeNode.class === "polylineVolume") {
            de = {
@@ -2199,7 +2202,7 @@
              de,
              "0",
              treeNode.checked,
              function () {}
              function () { }
            );
          } else if (treeNode.class === "polyline") {
            de = {
@@ -2239,7 +2242,7 @@
                de,
                "0",
                treeNode.checked,
                function () {}
                function () { }
              );
          } else if (treeNode.class === "polygon") {
            de = {
@@ -2272,7 +2275,7 @@
                de,
                "0",
                treeNode.checked,
                function () {}
                function () { }
              );
          } else if (treeNode.class === "model") {
            de = {
@@ -2298,7 +2301,7 @@
              de,
              "0",
              treeNode.checked,
              function () {}
              function () { }
            );
          }
          layer && (treeNode.id = layer.treeobj.id);
@@ -2412,7 +2415,7 @@
          layer = sgworld.Creator.createS3MLayer(
            treeNode.urls,
            sgworld._Viewer.scene,
            function () {}
            function () { }
          );
          break;
        case "gltf":
@@ -2688,8 +2691,8 @@
      let imgUrl;
      new Cesium.GeoJsonDataSource.load(
        treeNode.urls +
          "?version=1.3.0&request=GetFeature&format=json&typename=" +
          treeNode.layer
        "?version=1.3.0&request=GetFeature&format=json&typename=" +
        treeNode.layer
      ).then((dataSource) => {
        // that.$set(treeNode, "disabled", false);
        Viewer.dataSources.add(dataSource);
@@ -3041,6 +3044,7 @@
  background-image: url("~@/assets/img/new/treeClose-y.png");
}
.leftmenu {
  background-image: url("~@/assets/img/new/treeClose.png");
  background-size: 100% 100%;
@@ -3100,7 +3104,7 @@
  background-color: rgba(255, 255, 255, 0.4) !important;
}
.el-tree /deep/ .is-current > .el-tree-node__content {
.el-tree /deep/ .is-current>.el-tree-node__content {
  background-color: rgba(255, 255, 255, 0.4) !important;
  font-size: 14px;
}
src/components/map/history.vue
@@ -34,12 +34,12 @@
    initMap() {
      var l1 = new Tile({
        source: new XYZ({
          url: "http://t3.tianditu.com/DataServer?T=cta_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561"// æ³¨è®°
          url: layerData.config.olTdtSl + layerData.config.tdtToken
        })
      });
      var l2 = new Tile({
        source: new XYZ({
          url: "http://t3.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561"  // è¡Œæ”¿åŒºåˆ’
          url: layerData.config.olTdtBZ + layerData.config.tdtToken
        })
      });
      window.map = new Map({
src/components/map/viewer.vue
@@ -44,6 +44,7 @@
import Bus from "@tools/Bus";
import mapViewer from "../../assets/js/Layer/mapViewer";
let activeLi, nLayer, LWLayer;
export default {
  name: "viewer",
@@ -59,7 +60,7 @@
      hb: "",
      jd: "",
      wd: "",
      switchImage: sanwei,
      switchImage: yingxiang,
      switchImagerLayer: false,
      size: "100%",
      scale: "1",
@@ -99,14 +100,17 @@
      window.sgworld = new SmartEarth.EarthCtrl(
        "sdkContainer",
        {
          StaticFileBaseUrl: "../../../static/CimSDK/",
         StaticFileBaseUrl: "../../../static/CimSDK/",
          // StaticFileBaseUrl: "../../../SW/static/CimSDK/",
          // StaticFileBaseUrl: "../../../YZXNCS/static/CimSDK/",
          // StaticFileBaseUrl: "../../../JSJKZHGS/static/CimSDK/",
        },
        {},
        {},
        () => {
          this.TdtIMageLayer();
          this.ArcgisImageryLayer();
          //先飞到亦庄行政区
          sgworld.Navigate.flyToPointsInterest({
            destination: {
@@ -132,6 +136,7 @@
      // Viewer.scene.screenSpaceCameraController.enableCollisionDetection = false;
      Viewer.scene.globe.translucency.frontFaceAlpha = 0.5;
      Viewer.scene.globe.undergroundColor = undefined;
      // Viewer.scene.screenSpaceCameraController.minimumZoomDistance =200;
      //开启编辑并启用属性弹窗
      sgworld.Creator.SimpleGraphic.setEdit(false, {
        editProp: false,
@@ -199,6 +204,9 @@
      that.initLayerOpen();
      //添加鼠标点击事件
      mapViewer.addClick();
    });
    let size = this.detectZoom();
    this.scale = (100 / size).toFixed(2);
@@ -374,17 +382,44 @@
      this.switchImagerLayer = !this.switchImagerLayer;
    },
    ArcgisImageryLayer() {
      sgworld.Creator.createArcGisImageryLayer(
        "ARCGIS",
        {
          url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
          enablePickFeatures: false,
        },
        "0",
        1,
        true,
        ""
      );
      // var layer= sgworld.Creator.createArcGisImageryLayer(
      //   "ARCGIS",
      //   {
      //     url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
      //     enablePickFeatures: false,
      //   },
      //   "0",
      //   1,
      //   true,
      //   ""
      // );
      var layer = Viewer.imageryLayers.addImageryProvider(new Cesium.ArcGisMapServerImageryProvider({
        url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
      }))
      layer.name = "ARCGIS"
    },
    TdtIMageLayer() {
      var layer = Viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
        url: layerData.config.tdtSl + layerData.config.tdtToken,
        layer: "tdtImgLayer",
        style: "default",
        format: "image/jpeg",
        name: '天地图',
        tileMatrixSetID: "GoogleMapsCompatible",
      }))
      layer.name = "天地图";
      layer.show= false;
      var layer1 = Viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
        url: layerData.config.tdtZj + layerData.config.tdtToken,
        layer: "tdtAnnoLayer",
        style: "default",
        format: "image/jpeg",
        name: '天地图',
        tileMatrixSetID: "GoogleMapsCompatible",
      }))
      layer1.name = "天地图"
      layer1.show= false;
    },
    //初始化弹窗事件
src/components/menu/menulist.vue
@@ -40,7 +40,14 @@
          />
          <span>模型</span>
        </div>  
        <div class="menubtn" @click="setGridQuery()">
          <img class="bhImg" title="格网" src="@/assets/img/right/cx-s.png" />
          <span>格网</span>
        </div>
        <div class="menubtn" @click="setMenuQuery()">
          <img class="bhImg" title="查询" src="@/assets/img/right/cx-s.png" />
          <span>查询</span>
        </div>
        <div class="menubtn" @click="setMenuTool(5)">
          <img class="bhImg" title="分析" src="@/assets/img/right/cx-s.png" />
          <span>分析</span>
@@ -245,6 +252,7 @@
import zt from "@/assets/img/left/specialanalyse4.png";
import fx from "@/assets/img/right/cx-s.png";
import tx from "@/assets/img/left/leftnav2.png";
import menuGrid from '@/assets/js/Layer/menuGrid'
export default {
  name: "menulist",
  components: {
@@ -298,6 +306,12 @@
    showSceneCard(){
      this.$store.commit("showSceneBox", "");
    },
    setMenuQuery(){
      this.$store.commit("setMenuQuery",true)
    },
    setGridQuery(){
      menuGrid.init();
    },
    closeAllHighLight(type) {
      // !(type == "plotting") && this.$refs.plotting.clearHighLight();
      // !(type == "roam") && this.$refs.roam.clearActive();
src/components/menu/tools/measure.vue
@@ -2,65 +2,31 @@
  <div class="measure" id="measure">
    <div class="measureTools">
      <div class="measureTool" @click="jl">
        <el-tooltip
          class="item"
          effect="dark"
          content="距离"
          placement="top-start"
          popper-class="item_tooltip"
        >
        <el-tooltip class="item" effect="dark" content="距离" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/jl1.png" />
          </el-button>
        </el-tooltip>
      </div>
      <div class="measureTool" @click="bmjl">
        <el-tooltip
          class="item"
          effect="dark"
          content="表面距离"
          placement="top-start"
          popper-class="item_tooltip"
        >
        <el-tooltip class="item" effect="dark" content="表面距离" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/bmjl1.png" /> </el-button
        ></el-tooltip>
            <img src="@/assets/img/right/ls/bmjl1.png" /> </el-button></el-tooltip>
      </div>
      <div class="measureTool" @click="mj">
        <el-tooltip
          class="item"
          effect="dark"
          content="面积"
          placement="top-start"
          popper-class="item_tooltip"
        >
        <el-tooltip class="item" effect="dark" content="面积" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/mj1.png" /> </el-button
        ></el-tooltip>
            <img src="@/assets/img/right/ls/mj1.png" /> </el-button></el-tooltip>
      </div>
      <div class="measureTool" @click="bmmj">
        <el-tooltip
          class="item"
          effect="dark"
          content="表面面积"
          placement="top-start"
          popper-class="item_tooltip"
        >
        <el-tooltip class="item" effect="dark" content="表面面积" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/bmmj1.png" /> </el-button
        ></el-tooltip>
            <img src="@/assets/img/right/ls/bmmj1.png" /> </el-button></el-tooltip>
      </div>
      <div class="measureTool" @click="height">
        <el-tooltip
          class="item"
          effect="dark"
          content="垂直高度"
          placement="top-start"
          popper-class="item_tooltip"
        >
        <el-tooltip class="item" effect="dark" content="垂直高度" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/gd1.png" /> </el-button
        ></el-tooltip>
            <img src="@/assets/img/right/ls/gd1.png" /> </el-button></el-tooltip>
      </div>
      <!-- <div
        :class="isOpen['tj'] ? 'measureTool active' : 'measureTool'"
@@ -71,29 +37,15 @@
          <label>体积</label>
        </el-button>
      </div> -->
      <!-- <div class="measureTool" @click="jd">
        <el-tooltip
          class="item"
          effect="dark"
          content="角度"
          placement="top-start"
          popper-class="item_tooltip"
        >
      <div class="measureTool" @click="zb">
        <el-tooltip class="item" effect="dark" content="坐标" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/jd1.png" /> </el-button
        ></el-tooltip>
      </div> -->
            <img src="@/assets/img/right/ls/jd1.png" /> </el-button></el-tooltip>
      </div>
      <div class="measureTool" @click="clearMeasure">
        <el-tooltip
          class="item"
          effect="dark"
          content="清除"
          placement="top-start"
          popper-class="item_tooltip"
        >
        <el-tooltip class="item" effect="dark" content="清除" placement="top-start" popper-class="item_tooltip">
          <el-button>
            <img src="@/assets/img/right/ls/qc-s.png" /> </el-button
        ></el-tooltip>
            <img src="@/assets/img/right/ls/qc-s.png" /> </el-button></el-tooltip>
      </div>
    </div>
  </div>
@@ -105,10 +57,12 @@
  width: 111%;
  margin-left: -15px;
}
.el-button:focus,
.el-button:hover {
  background: transparent;
}
.measure {
  position: absolute;
  left: 65px;
@@ -117,12 +71,14 @@
  /* border-radius: 30px; */
  box-shadow: 0px 0px 10px rgba(101, 180, 253, 0.8) inset;
  background-color: rgba(5, 39, 126, 0.7);
  width: 350px;
  width: 410px;
}
.measureTools {
  margin-left: 20px;
  overflow: hidden;
}
.measureTool {
  border: 1px solid #999;
  border-radius: 5px;
@@ -131,9 +87,11 @@
  height: 40px;
  margin: 5px;
}
.measureTool img{
    margin: 4px;
.measureTool img {
  margin: 4px;
}
.measureTools::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 5px;
@@ -158,6 +116,7 @@
  border-radius: 0;
  background: rgba(218, 218, 218, 0.1);
}
.measureTool:hover {
  background: rgba(0, 168, 255, 0.16);
}
@@ -165,9 +124,11 @@
.tool-title {
  margin: 1px 10px;
}
.tool-title label {
  vertical-align: top;
}
.measure label {
  margin-left: 10px;
  font-size: 17px;
@@ -176,6 +137,7 @@
  /* color: #3d3d3d; */
  color: white;
}
.el-button {
  padding: 0 !important;
  font-size: 24px;
@@ -184,14 +146,17 @@
  display: block;
  background: rgba(0, 0, 0, 0);
}
.el-button label {
  font-size: 14px;
}
.closeTool {
  position: absolute;
  bottom: 0;
  left: 0;
}
.active {
  background: rgba(0, 168, 255, 0.16);
}
@@ -222,7 +187,7 @@
      }
    };
  },
  mounted() {},
  mounted() { },
  methods: {
    // æ¸…除高亮
    clearActive() {
@@ -239,6 +204,11 @@
      this.$parent.isShowMeasure = false;
      this.$parent.isShow = false;
    },
    zb(){
      this.$store.state.isMeasureFlag= true;
    },
    //清除测量
    clearMeasure() {
      // å…³é—­å½“前的操作界面
@@ -247,7 +217,9 @@
        item.deleteObject();
      });
      measureData = [];
      this.$store.state.isShowMeasureCoord = false
      this.$store.state.isMeasureFlag = false
      this.$store.state.measureCoordObj = false
      volumetricMeasurementTool && volumetricMeasurementTool.cleanUp();
    },
    // è·ç¦»é‡ç®—
@@ -267,7 +239,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      // æ ¹æ®å½“前的高亮状态,决定当前操作是否要显示高亮
      this.isOpen["jl"] = true;
@@ -279,7 +251,7 @@
      measureData.push(m);
    },
    // è¡¨é¢è·ç¦»
    bmjl: function() {
    bmjl: function () {
      this.$parent.closeAllHighLight("measure");
      if (this.isOpen["bmjl"]) {
        this.isOpen["bmjl"] = false;
@@ -295,7 +267,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      this.isOpen["bmjl"] = true;
@@ -307,7 +279,7 @@
      measureData.push(m);
    },
    // è¡¨é¢é¢ç§¯
    bmmj: function() {
    bmmj: function () {
      this.$parent.closeAllHighLight("measure");
      if (this.isOpen["bmmj"]) {
        this.isOpen["bmmj"] = false;
@@ -323,7 +295,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      this.isOpen["bmmj"] = true;
      let m = sgworld.Command.execute(0, 8, colorAll, () => {
@@ -334,7 +306,7 @@
      measureData.push(m);
    },
    // é¢ç§¯
    mj: function() {
    mj: function () {
      this.$parent.closeAllHighLight("measure");
      if (this.isOpen["mj"]) {
        this.isOpen["mj"] = false;
@@ -350,7 +322,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      this.isOpen["mj"] = true;
@@ -378,7 +350,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      this.isOpen["jd"] = true;
@@ -405,7 +377,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      this.isOpen["czgd"] = true;
@@ -433,7 +405,7 @@
      layuiLayer.close(SmartEarthPopupData.layerProp);
      sgworld.drawObj &&
        (sgworld.drawObj.drawHandler && sgworld.drawObj.drawHandler.destroy(),
        sgworld.drawObj.end && sgworld.drawObj.end());
          sgworld.drawObj.end && sgworld.drawObj.end());
      this.isOpen["tj"] = true;
@@ -446,7 +418,7 @@
        sgworld.drawObj = volumetricMeasurementTool.startDrawing(
          null,
          spacing,
          function(data) {
          function (data) {
            callback &&
              typeof callback === "function" &&
              callback({ height: data.minHeight, spacing: data.spacing });
src/components/menu/tools/plotting.vue
@@ -86,7 +86,7 @@
          </el-button>
        </el-tooltip>
      </div>
      <div
      <!-- <div
        class="plottingTool"
        @click="plotting('circle')"
      >
@@ -101,7 +101,7 @@
            <img src="@/assets/img/right/bh/d1.png" />
          </el-button>
        </el-tooltip>
      </div>
      </div> -->
      <!-- <div class="plottingTool" @click="militaryPlotting('Sector', 'polygon')">
        <el-tooltip
          class="item"
@@ -116,7 +116,7 @@
        </el-tooltip>
      </div> -->
      <div
      <!-- <div
        class="plottingTool"
        @click="plotting('cylinder')"
      >
@@ -167,7 +167,7 @@
          popper-class="item_tooltip"
        >
          <el-button> <img src="@/assets/img/right/bh/dbt1.png" /> </el-button></el-tooltip>
      </div>
      </div> -->
    </div>
  </div>
</template>
@@ -194,7 +194,7 @@
  /* border-radius: 30px; */
  box-shadow: 0px 0px 10px rgba(101, 180, 253, 0.8) inset;
  background-color: rgba(5, 39, 126, 0.7);
  width: 560px;
  width: 300px;
}
.plottingList {
  background: transparent;
src/components/menu/tools/roam.vue
@@ -33,7 +33,7 @@
        >
          <el-button> <img src="@/assets/img/left/tx/kjbj.png" /> </el-button
        ></el-tooltip>
      </div> -->
      </div>
      <div class="roamTool" @click="setRomanFly('核心区漫游')">
        <el-tooltip
          class="item"
@@ -66,7 +66,7 @@
        >
          <el-button> <img src="@/assets/img/left/tx/ll.png" /> </el-button
        ></el-tooltip>
      </div>
      </div>-->
    </div>
  </div>
</template>
@@ -84,7 +84,7 @@
  /* border-radius: 30px; */
  box-shadow: 0px 0px 10px rgba(101, 180, 253, 0.8) inset;
  background-color: rgba(5, 39, 126, 0.7);
  width: 300px;
  width: 150px;
}
.roamTools {
  margin-left: 20px;
src/components/menu/tools/special copy.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1247 @@
<template>
  <div class="special" id="special">
    <div class="specialTools">
      <div class="specialTool" @click="tdglHandle">
        <el-tooltip
          class="item"
          effect="dark"
          content="土地管理"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button>
            <img src="@/assets/img/left/ztfx/tdgl.png" />
          </el-button>
        </el-tooltip>
      </div>
      <div class="specialTool" @click="stdsj">
        <el-tooltip
          class="item"
          effect="dark"
          content="视图大数据平台"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button>
            <img src="@/assets/img/left/ztfx/dashuju.png" />
          </el-button>
        </el-tooltip>
      </div>
      <div class="specialTool" @click="spjkHandle">
        <el-tooltip
          class="item"
          effect="dark"
          content="视频监控"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button>
            <img src="@/assets/img/left/ztfx/spjk.png" />
          </el-button>
        </el-tooltip>
      </div>
      <div class="specialTool" @click="jjHandle">
        <el-tooltip
          class="item"
          effect="dark"
          content="街景"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button>
            <img src="@/assets/img/left/ztfx/jiejing.png" />
          </el-button>
        </el-tooltip>
      </div>
      <div class="specialTool" @click="qytj">
        <el-tooltip
          class="item"
          effect="dark"
          content="数据汇聚"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button> <img src="@/assets/img/left/ztfx/yqfk.png" /> </el-button
        ></el-tooltip>
      </div>
      <div class="specialTool" @click="rangeQuery()">
        <el-tooltip
          class="item"
          effect="dark"
          content="范围查询"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button> <img src="@/assets/img/left/ztfx/sjxq.png" /> </el-button
        ></el-tooltip>
      </div>
      <!-- <div class="specialTool" @click="guanxian(openGX)">
        <el-tooltip
          class="item"
          effect="dark"
          content="地下管线"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button> <img src="@/assets/img/left/ztfx/spl.png" /> </el-button
        ></el-tooltip>
      </div> -->
      <!-- <div class="specialTool" @click="sceneRoaming">
        <el-tooltip
          class="item"
          effect="dark"
          content="场景漫游"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button>
            <img src="@/assets/img/left/ztfx/rkqxksh.png" /> </el-button
        ></el-tooltip>
      </div> -->
      <!-- <div class="specialTool" @click="shipinronghe(videoList)">
        <el-tooltip
          class="item"
          effect="dark"
          content="视频融合"
          placement="top-start"
          popper-class="item_tooltip"
        >
          <el-button> <img src="@/assets/img/left/ztfx/spl.png" /> </el-button
        ></el-tooltip>
      </div> -->
    </div>
  </div>
</template>
<style scoped>
hr {
  margin: 10px 0;
  width: 111%;
  margin-left: -15px;
}
.el-button:focus,
.el-button:hover {
  background: transparent;
}
.special {
  position: absolute;
  left: 65px;
  bottom: 6px;
  height: 50px;
  /* border-radius: 30px; */
  box-shadow: 0px 0px 7px rgba(76, 165, 248, 0.8) inset;
  background-color: rgba(14, 50, 143, 0.5);
  width: 350px;
}
.specialTools {
  margin-left: 20px;
}
.specialTool {
  border: 1px solid #999;
  border-radius: 5px;
  float: left;
  width: 40px;
  height: 40px;
  margin: 5px;
}
.specialTool img {
  margin: 4px;
}
.specialTools::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 5px;
  /*高宽分别对应横竖滚动条的尺寸*/
  height: 8px;
  scrollbar-arrow-color: red;
}
/* æ»šåŠ¨æ¡ */
.specialTools::-webkit-scrollbar-thumb {
  border-radius: 5px;
  -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  background: rgba(218, 218, 218, 0.5);
  scrollbar-arrow-color: red;
}
/* æ»šåŠ¨æ§½ */
.specialTools::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  border-radius: 0;
  background: rgba(218, 218, 218, 0.1);
}
.specialTool:hover {
  background: rgba(0, 168, 255, 0.16);
}
.tool-title {
  margin: 1px 10px;
}
.tool-title label {
  vertical-align: top;
}
.special label {
  margin-left: 10px;
  font-size: 17px;
  font-family: Microsoft YaHei;
  font-weight: 400;
  /* color: #3d3d3d; */
  color: white;
}
.el-button {
  padding: 0 !important;
  font-size: 24px;
  border: unset;
  float: unset;
  display: block;
  background: rgba(0, 0, 0, 0);
}
.el-button label {
  font-size: 14px;
}
.closeTool {
  position: absolute;
  bottom: 0;
  left: 0;
}
.active {
  background: rgba(0, 168, 255, 0.16);
}
</style>
<style>
#pointInfoBox {
  /* width: 350px; */
  padding: 20px;
  text-align: left;
  background-image: url("~@/assets/img/new/listbg.png");
  /* border: 5px #08235f solid; */
  /* border-radius: 7px; */
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.5);
  color: #fff;
}
</style>
<script>
import axios from "axios";
import { mapState, mapMutations } from "vuex";
import Bus from "../../tools/Bus";
import { roman } from "../../../assets/json/index.js";
import URLInCode from "@/assets/js/urlInCode";
import keyName from "@/utils/poiKeys";
import LayerField from "../../../../static/NameConf";
let handler;
let tooltipHTML;
window.divPoint1 = null;
window.pickFeature = null;
window.imgUrl = null;
window.scale = null;
let buildingPolygon;
let tooltip;
let lineArr = [];
let video;
let promiseS3M;
//交通图层
let panoramaLayer;
export default {
  name: "special",
  data() {
    return {
      openGX: "open",
      showPointInfo: true,
      romanOption: [
        { name: "核心区" },
        { name: "景观绿地" },
        { name: "政务服务" },
      ],
      showFlag: false,
      showQYTJ: false,
      videoList: [
        {
          name: "video2",
          lon: 116.51507,
          lat: 39.79686,
          height: 40,
          // å››å‘¨æ–¹å‘
          heading: 305,
          // ä¿¯ä»°è§’度
          pitch: -41,
          // æ°´å¹³è§’度
          horizonAngle: 68,
          // åž‚直角度
          verticalAngle: 103,
          // é€æ˜Žåº¦
          alpha: 1,
          // é€æ˜Žåº¦
          far: 3000,
          cameraIndexCode: "2b046ef675704975a8d45f1b00cd946b",
        },
        // {
        //   name: "video3",
        //   lon: 116.5146339,
        //   lat: 39.7967196,
        //   height: 60,
        //   // å››å‘¨æ–¹å‘
        //   heading: 62,
        //   // ä¿¯ä»°è§’度
        //   pitch: -43,
        //   // æ°´å¹³è§’度
        //   horizonAngle: 45,
        //   // åž‚直角度
        //   verticalAngle: 64,
        //   // é€æ˜Žåº¦
        //   alpha: 1,
        //   // é€æ˜Žåº¦
        //   far: 166,
        //   cameraIndexCode: "a0ffb1dedde7468187d0b0f91d431475",
        // },
        // {
        //   name: "video4",
        //   lon: 116.51496,
        //   lat: 39.796854,
        //   height: 60,
        //   // å››å‘¨æ–¹å‘
        //   heading: 148,
        //   // ä¿¯ä»°è§’度
        //   pitch: -39,
        //   // æ°´å¹³è§’度
        //   horizonAngle: 40,
        //   // åž‚直角度
        //   verticalAngle: 58,
        //   // é€æ˜Žåº¦
        //   alpha: 1,
        //   // é€æ˜Žåº¦
        //   far: 219,
        //   cameraIndexCode: "e6ec9aaf9320455ab6c5ea224f3f5f38",
        // },
        // {
        //   name: "video1",
        //   lon: 116.51522,
        //   lat: 39.79724,
        //   height: 60,
        //   // å››å‘¨æ–¹å‘
        //   heading: 64,
        //   // ä¿¯ä»°è§’度
        //   pitch: -47,
        //   // æ°´å¹³è§’度
        //   horizonAngle: 30,
        //   // åž‚直角度
        //   verticalAngle: 60,
        //   // é€æ˜Žåº¦
        //   alpha: 1,
        //   // é€æ˜Žåº¦
        //   far: 166,
        //   cameraIndexCode: "1523335e47a5476f9f65f90f9983e875",
        // },
      ],
      // å››å‘¨æ–¹å‘
      heading: 64,
      // ä¿¯ä»°è§’度
      pitch: -47,
      // æ°´å¹³è§’度
      horizonAngle: 30,
      // åž‚直角度
      verticalAngle: 60,
      // é€æ˜Žåº¦
      alpha: 1,
      // é€æ˜Žåº¦
      far: 166,
      videoarrList: [],
    };
  },
  computed: {
    ...mapState(["viewer1Show", "yqfk", "cesiumInit"]),
    ...mapState(["viewer1Show", "yqfk", "qyEchartsShow"]),
  },
  mounted() {},
  watch: {
    cesiumInit: {
      handler(newVal, oldVal) {
        if (newVal) {
          if (
            window._showPointInfo === undefined ||
            window._showPointInfo === true
          ) {
            this.showPointInfo = true;
            setTimeout(() => {
              this.setCesuimHandle();
            }, 1000);
          } else if (window._showPointInfo === false) {
            this.showPointInfo = false;
          }
        }
      },
      deep: true,
      immediate: true,
    },
  },
  methods: {
    // ...mapMutations(["setViewer1Show", "setYqfk"]),
    ...mapMutations(["setViewer1Show", "setqyEchartsShow"]),
    spjkLoad() {
      window.sxtkGeojson = new SmartEarth.ClusterLayer(sgworld.Viewer, {
        pixelRange: 30,
        gradient: {
          0.0001: "rgb(0,191,255)",
          0.001: "rgb(0,128,0)",
          0.01: "rgb(255,165,0)",
          0.1: "rgb(255,0,0)",
        },
        style: "clustering",
      });
      window.sxtkGeojson.dataSource.clustering.minimumClusterSize = 5;
      // let url = window.sessionStorage.getItem("sxtGeojsonUrl");
      let url;
      axios
        .get(url)
        .then((data) => {
          // console.log(data);
          let features = data.data.features;
          features.forEach((feature) => {
            let geom = feature.geometry.coordinates;
            let properties = feature.properties;
            let point = new SmartEarth.Degrees(geom[0], geom[1]);
            // let item = {
            //   lon
            // };
            let entitie = window.sxtkGeojson.add(point, {
              image: SmartEarthRootUrl + "Workers/image/sxt.png",
            });
            entitie.properties = properties;
            entitie.tag = "sxt";
          });
          sgworld.Navigate.flyToObj(window.sxtkGeojson.dataSource);
          window.sxthandler = new Cesium.ScreenSpaceEventHandler(
            sgworld.Viewer.scene.canvas
          );
          window.sxthandler.setInputAction((event) => {
            let pick = sgworld.Viewer.scene.pick(event.position);
            if (pick && pick.id && pick.id.tag == "sxt") {
              //关闭地块信息弹窗
              Bus.$emit("closeLandInfoPop", true);
              //结束之前操作
              layuiLayer.close(SmartEarthPopupData.layerProp);
              sgworld.drawObj &&
                (sgworld.drawObj.drawHandler &&
                  sgworld.drawObj.drawHandler.destroy(),
                sgworld.drawObj.end && sgworld.drawObj.end());
              let props = pick.id.properties;
              let screenHeight =
                document.body.clientHeight ||
                document.documentElement.clientHeigh;
              let offsetTop = screenHeight - 385;
              offsetTop = offsetTop < 0 ? 0 : offsetTop;
              offsetTop = offsetTop > 100 ? offsetTop - 100 : offsetTop;
              // console.log(props.installPla._value)
              layerOpen(props.name._value, {
                width: 470,
                height: 385,
                offset: [offsetTop + "px", "310px"],
                url:
                  "./static/html/video/video.html?code=" +
                  props.cameraInde._value,
                fn: {
                  success: (layero, index) => {
                    SmartEarthPopupData.layerContainer = layero;
                  },
                  end: () => {
                    // this.isOpen.ymfx = false;
                  },
                  cancel: () => {
                    sgworld.drawObj &&
                      sgworld.drawObj.end &&
                      sgworld.drawObj.end("cancel");
                  },
                },
              });
            }
          }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        })
        .catch((err) => {
          console.log(err);
        });
    },
    spjkHandle() {
      if (window.sxtkGeojson) {
        window.sxtkGeojson.deleteObject();
        window.sxtkGeojson = null;
        window.sxthandler.destroy();
        //关闭弹窗
        Bus.$emit("closeRightPop", true);
        layuiLayer.close(SmartEarthPopupData.layerProp);
        return;
      } else {
        Bus.$emit("showSPJK");
        // this.spjkLoad();
      }
    },
    yqfkHandle() {
      this.setYqfk(!this.yqfk);
    },
    rangeQuery() {
      Bus.$emit("showRangeBox", true);
    },
    tdglHandle() {
      this.setViewer1Show(!this.viewer1Show);
    },
    jjHandle() {
      if (!window.panoramaHandler) {
        //关闭菜单弹窗
        Bus.$emit("closeMenuPop", true);
        var urls = URLInCode.jjLWUrl;
        // var urls = "http://10.10.4.121:8070/gisserver/wmsserver/YZ_LW";
        window.panoramaLayer = sgworld.Creator.CreateWMSImageFeatureLayer(
          "gisserver",
          {
            url: urls,
            queryParameters: {
              layers: "",
            },
          },
          {},
          "0",
          true,
          function () {}
        );
        window.panoramaHandler = new Cesium.ScreenSpaceEventHandler(
          Viewer.scene.canvas
        );
        window.panoramaHandler.setInputAction((event) => {
          let p;
          p = sgworld.Navigate.getMouseDegrees(event);
          let panorama = new yzPanorama();
          panorama.open({
            id: "qjMap",
            closeId: "panoramaClose",
            lon: p.lon,
            lat: p.lat,
          });
          // let StreetUrl = "http://10.10.4.116:8085/yzAdapter/";
          // let _StreetscapeYZ = new StreetscapeYZ(sgworld, {
          //   StreetUrl: StreetUrl,
          //   lon: p.lon,
          //   lat: p.lat
          // });
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
      } else {
        try {
          window.panoramaLayer.deleteObject();
        } catch (e) {}
        window.panoramaHandler.destroy();
        window.panoramaHandler = undefined;
      }
    },
    sjxqHandle() {
      window._showPointInfo = this.showPointInfo;
      switch (this.showPointInfo) {
        case true:
          this.setCesuimHandle();
          break;
        case false:
          if (divPoint1) {
            sgworld.Creator.DeleteObject(divPoint1);
          }
          if (handler) {
            handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
          }
          break;
      }
    },
    clearSelectObject() {
      if (window.pickFeature && window.pickFeature.primitive) {
        window.pickFeature.primitive.image = imgUrl;
        window.pickFeature.primitive.scale = scale;
        window.pickFeature = null;
      }
    },
    setCesuimHandle() {
      var that = this;
      Bus.$on("clearSelectObject", this.clearSelectObject);
      handler && handler.destroy();
      handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
      handler.setInputAction((event) => {
        let nPickFeature = sgworld.Viewer.scene.pick(event.position);
        if (Cesium.defined(nPickFeature)) {
          this.resetImg();
          if (buildingPolygon) {
            sgworld.Creator.DeleteObject(buildingPolygon);
            buildingPolygon = null;
          }
          if (nPickFeature.primitive instanceof Cesium.Billboard) {
            if (nPickFeature.id.length > 0) {
              return;
            }
            // this.resetBorder();
            window.pickFeature = nPickFeature;
            // console.log(nPickFeature);
            imgUrl = nPickFeature.primitive.image;
            scale = nPickFeature.primitive.scale;
            nPickFeature.primitive.image =
              window.SmartEarthRootUrl + "Workers/image/point.png";
            nPickFeature.primitive.scale = 1;
            //点击弹框
            let obj = {};
            let lon;
            let lat;
            let isCamera = false;
            if (nPickFeature.id.tag) {
              let properties = nPickFeature.id.properties;
              let propertyNames = nPickFeature.id.properties.propertyNames;
              if (propertyNames.indexOf("监控名") !== -1) {
                isCamera = true;
                obj["JK名称"] = properties["JK名称"]._value;
                // obj["JK类型"] = properties["JK类型"]._value;
                // obj["功能"] = properties["功能"]._value;
                // obj["所在区"] = properties["所在区"]._value;
                // obj["JK编号"] = properties["JK编号"]._value;
                obj["JK内码"] = properties["JK内码"]._value;
              } else {
                propertyNames.forEach((item) => {
                  obj[item] = properties[item]._value;
                });
              }
              let cartographic =
                window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
                  nPickFeature.id.position._value
                );
              lon = Cesium.Math.toDegrees(cartographic.longitude);
              lat = Cesium.Math.toDegrees(cartographic.latitude);
            } else {
              obj = nPickFeature.id.attributes;
              lon = nPickFeature.id.positions[0];
              lat = nPickFeature.id.positions[1];
            }
            if (divPoint1) {
              divPoint1.deleteObject();
            }
            if (!isCamera) {
              tooltipHTML = "";
              //重置LayerField数据
              for (let item in LayerField) {
                LayerField[item] = 0;
              }
              // åˆ é™¤å­—段
              let { OBJECTID, ID, BZDZ, Latitude, Longtitude, ...userData } =
                obj;
              // åˆ¤æ–­å±•示的类型
              if (
                userData.hasOwnProperty("部件名称") ||
                userData.hasOwnProperty("井编号")
              ) {
                //修改LayerField数据
                for (let itemName in userData) {
                  let CnName = keyName[itemName] || itemName;
                  if (LayerField.hasOwnProperty(CnName)) {
                    LayerField[CnName] = userData[itemName];
                    if (CnName == "经度" || CnName == "纬度") {
                      let str = Number(LayerField[CnName]);
                      LayerField[CnName] = str.toFixed(6);
                    }
                  }
                }
                // å±•示LayerField数据
                for (let item in LayerField) {
                  let value = LayerField[item];
                  value && (tooltipHTML += `<p>${item}:${value || "无"}</p>`);
                }
              } else {
                // ç›´æŽ¥å±•示
                for (let itemName in userData) {
                  let value = userData[itemName];
                  let CnName = keyName[itemName] || itemName;
                  value &&
                    (tooltipHTML += `<p>${CnName}:${value || "无"}</p>`);
                  console.log(tooltipHTML);
                }
              }
              let description = `
                   <div id="pointInfoBox" class="pointInfoBox" style="pointer-events:auto;">
                    <span style="position: absolute; right: 12px; top: 6px;">×</span>
                    ${tooltipHTML}
                  </div>
                `;
              divPoint1 = sgworld.Creator.createDivPoint(
                "详细信息",
                {
                  lon: lon,
                  lat: lat,
                  height: 50,
                },
                {
                  type: "custom",
                  offset: ["c", 50],
                  description,
                  onclick(data) {
                    // sgworld.Creator.DeleteObject(divPoint1);
                    divPoint1 && divPoint1.deleteObject();
                    if (window.pickFeature && window.pickFeature.primitive) {
                      window.pickFeature.primitive.image = imgUrl;
                      window.pickFeature.primitive.scale = scale;
                      window.pickFeature = null;
                    }
                  },
                }
              );
              // if (tooltip) {
              //   tooltip.show(false);
              //   tooltip = null;
              // }
              // tooltip = sgworld.Core.CreateResultTooltip(window.Viewer, {
              //   color: "black",
              //   addY: -40,
              //   far: 200000,
              //   closeBtn: true,
              //   close: () => {
              //     this.resetImg();
              //   },
              // });
              // let description = `<div style='background:
              //                         rgba(14, 50, 143, 0.6);
              //                         border: 1px solid #205fbc;
              //                          border-radius: 5px;
              //                          color: #fff;
              //                          padding: 15px;
              //                          box-shadow: 0px 1px 10px 0px rgba(3, 10, 26, 0.38);
              //                          '>${tooltipHTML}</div>`;
              // tooltip.showAt(
              //   Cesium.Cartesian3.fromDegrees(lon, lat, 0),
              //   description
              // );
            }
            //关闭地块信息弹窗
            Bus.$emit("closeLandInfoPop", true);
            layuiLayer.close(SmartEarthPopupData.layerProp);
            this.$store.commit("description", obj);
          } else if (nPickFeature.primitive instanceof Cesium.Cesium3DTileset) {
            // let cartographic =
            //   window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
            //     nPickFeature.content.tile.boundingSphere.center
            //   );
            // let lon = Cesium.Math.toDegrees(cartographic.longitude);
            // let lat = Cesium.Math.toDegrees(cartographic.latitude);
            let p = sgworld.Navigate.getMouseDegrees(event);
            let lon = p.lon;
            let lat = p.lat;
            axios
              .get(
                "http://10.10.4.121:8070/gisserver/wfsserver/yizhuang-building-wfs-1207",
                {
                  params: {
                    version: "1.3.0",
                    request: "GetFeature",
                    typename: `亦庄建筑外轮廓4326`,
                    propertyname: "*",
                    format: "json",
                    filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><ogc:Intersects><ogc:PropertyName>SAHEP</ogc:PropertyName><gml:Point > <gml:pos>${lon} ${lat}</gml:pos></gml:Point></ogc:Intersects></ogc:Filter>`,
                  },
                }
              )
              .then((response) => {
                if (response.data.features.length > 0) {
                  var geometry = [];
                  let POIs = response.data.features[0].geometry.coordinates[0];
                  for (let i = 0; i < POIs.length; i++) {
                    geometry.push({
                      x: parseFloat(POIs[i][0]),
                      y: parseFloat(POIs[i][1]),
                      z: 0,
                    });
                  }
                  buildingPolygon = sgworld.Creator.createPolygon(
                    geometry,
                    {
                      fillColor: "#00ff0050",
                      outlineColor: "#ff0000",
                      outlineWidth: 2,
                    },
                    1,
                    0,
                    "面"
                  );
                }
              });
          }
          // else if (nPickFeature.primitive instanceof Cesium.GroundPrimitive) {
          //   let wmsLayer = this.$store.state.selectedLayers.filter((item) => {
          //     return item.name == "行政区划图";
          //   });
          //   if (wmsLayer[0]) {
          //     let p = sgworld.Navigate.getMouseDegrees(event);
          //     axios
          //       .get(
          //         "http://10.10.4.116:8070/gisserver/rest/services/XingZhengQuHuaTu/MapServer/identify",
          //         {
          //           params: {
          //             geometry: `${p.lon},${p.lat}`,
          //             geometryType: "esriGeometryPoint",
          //             layers: "all",
          //             tolerance: 1,
          //             mapExtent:
          //               "116.389809720644,39.586819997000134,116.72107119373061,39.859910895000155",
          //             imageDisplay: "600,550,96",
          //             returnGeometry: true,
          //           },
          //         }
          //       )
          //       .then((res) => {
          //         if (res.data.results.length != 0) {
          //           this.resetImg();
          //           this.resetBorder();
          //           let area = res.data.results.filter(
          //             (item) => item.geometry.rings != undefined
          //           );
          //           let poi = area[0].geometry.rings;
          //           poi.forEach((ring) => {
          //             ring.forEach((item, index, arr) => {
          //               arr[index] = {
          //                 x: parseFloat(item[0]),
          //                 y: parseFloat(item[1]),
          //                 z: 0,
          //               };
          //             });
          //           });
          //           poi.forEach((item, index) => {
          //             lineArr[index] = sgworld.Creator.createWall(
          //               `新建墙${index}`,
          //               item,
          //               {
          //                 minHeight: 0,
          //                 maxHeight: 200,
          //                 fill: true,
          //                 material: Cesium.Color.YELLOW,
          //                 outline: true,
          //                 outlineColor: Cesium.Color.YELLOW,
          //                 outlineWidth: 1.0,
          //               }
          //             );
          //           });
          //           tooltipHTML = "";
          //           for (let i in area[0].attributes) {
          //             let value = area[0].attributes[i];
          //             value && (tooltipHTML += `<p>${i}:${value || "无"}</p>`);
          //           }
          //           if (tooltip) {
          //             tooltip.show(false);
          //             tooltip = null;
          //           }
          //           tooltip = sgworld.Core.CreateResultTooltip(window.Viewer, {
          //             color: "black",
          //             addY: 0,
          //             far: 200000,
          //             closeBtn: true,
          //             close: () => {
          //               this.resetImg();
          //               this.resetBorder();
          //             },
          //           });
          //           let description = `<div style=' border: 1px solid #fff;border-radius: 5px;background: rgba(0, 0, 0, 0.8);color: #fff;padding: 15px;'>${tooltipHTML}</div>`;
          //           tooltip.showAt(
          //             Cesium.Cartesian3.fromDegrees(p.lon, p.lat, 0),
          //             description
          //           );
          //         }
          //       });
          //   }
          // }
        }
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    },
    stdsj() {
      window.open(
        "http://10.9.2.29:8080/#/login?token=1ed14c5157acb8088efe65bc93a032c3"
      );
    },
    closeJm() {
      this.$parent.$parent.$parent.isShowSpeAnalyse = false;
    },
    resetImg() {
      if (window.pickFeature && window.pickFeature.primitive) {
        window.pickFeature.primitive.image = imgUrl;
        window.pickFeature.primitive.scale = scale;
        window.pickFeature = null;
      }
    },
    // resetBorder() {
    //   lineArr.forEach((item, index) => {
    //     if (lineArr[index]) {
    //       sgworld.Creator.DeleteObject(lineArr[index]);
    //       lineArr[index] = null;
    //     }
    //   });
    // },
    stdsjHandle() {
      window.open(
        "http://10.9.2.29:8080/#/login?token=1ed14c5157acb8088efe65bc93a032c3"
      );
    },
    tdglHandle() {
      this.setViewer1Show(!this.viewer1Show);
    },
    qytj() {
      this.setqyEchartsShow(!this.qyEchartsShow);
    },
    sceneRoaming() {
      if (this.showFlag) {
        document.getElementById("scroll").style.display = "none";
      } else {
        document.getElementById("scroll").style.display = "block";
      }
      this.showFlag = !this.showFlag;
    },
    setRomanFly(result) {
      this.showFlag = false;
      document.getElementById("scroll").style.display = "none";
      var val = roman.filter((res) => {
        if (res.name == result.name) {
          return res;
        }
      });
      var degreesArr = val[0].value;
      sgworld.Creator.getFlyData(degreesArr, (data) => {
        data.showPoint = false;
        data.showLine = true;
        data.mode = 1;
        // å¼¹çª—数据
        window.PathAnimationData = {
          flyData: data,
        };
        window.PathAnimationData.winIndex = layer.open({
          type: 2,
          title: "路径动画",
          shade: false,
          area: ["352px", "690px"],
          offset: "r",
          skin: "other-class",
          content: SmartEarthRootUrl + "Workers/path/Path.html",
          end: function () {
            PathAnimationData.fly && PathAnimationData.fly.exit();
          },
        });
      });
    },
    handleCommand(command) {
      switch (command) {
        case "qytj":
          this.qytj();
          break;
        case "spjkHandle":
          this.spjkHandle();
          break;
        case "stdsjHandle":
          this.stdsjHandle();
          break;
      }
    },
    // è§†é¢‘融合
    async shipinronghe(item) {
      var that = this;
      if (that.videoarrList.length > 0) {
        for (var i = 0; i < that.videoarrList.length; i++) {
          that.videoarrList[i].destroy();
          that.videoarrList[i] = undefined;
        }
        that.videoarrList = [];
      } else {
        for (var i = 0; i < item.length; i++) {
          let position = new SmartEarth.Degrees(
            item[i].lon,
            item[i].lat,
            item[i].height
          );
          await $.ajax({
            url:
              "http://10.10.4.116:8086/getCamerasInfoHls?cameraIndexCode=" +
              item[i].cameraIndexCode,
            // url: "http://10.10.4.116:8086/getCamerasInfoHls?cameraIndexCode=49ee9fed701444738112e80a4835122c",
            success: function (result) {
              video = sgworld.Creator.Video3D({
                cameraPosition: position, //相机安装位置
                heading: item[i].heading, //64
                pitch: item[i].pitch, //-47
                url: JSON.parse(result).data.url, //视频
                type: "hls",
                horizonAngle: item[i].horizonAngle, //相机水平视角30
                verticalAngle: item[i].verticalAngle, //相机垂直视角60
                offset: 0.1, //视频四周羽化比例
                near: 1, //最近投射面距离
                far: item[i].far, //最远投射面距离166
                alpha: item[i].alpha, //透明度1
                useLine: false, //是否试用辅助线
                success() {
                  sgworld.Navigate.flyToObj(video);
                },
              });
              that.videoarrList.push(video);
            },
          });
        }
      }
    },
    updateVideo() {
      video &&
        video.updateVideo({
          horizonAngle: this.horizonAngle, //相机水平视角
          verticalAngle: this.verticalAngle, //相机垂直视角
          alpha: this.alpha, //透明度
          far: this.far, //透明度
          heading: this.heading, //透明度
          pitch: this.pitch, //透明度
        });
    },
    // æ¸…除
    clear() {
      video && video.destroy();
      video = undefined;
    },
    guanxian(params) {
      if (params == "open") {
        promiseS3M = sgworld.coreMap.scene.open(
          "http://192.162.2.2:8090/iserver/services/3D-GX/rest/realspace"
        );
        this.openGX = "close";
      } else {
        promiseS3M.then((res) => {
          res.forEach((item) => {
            item.visible = false;
          });
        });
      }
    },
    read(wkt) {
      var regExes = {
        typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
        emptyTypeStr: /^\s*(\w+)\s*EMPTY\s*$/,
        spaces: /\s+/,
        parenComma: /\)\s*,\s*\(/,
        doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/, // can't use {2} here
        trimParens: /^\s*\(?(.*?)\)?\s*$/,
      };
      /**
       * Object with properties corresponding to the geometry types. Property values
       * are functions that do the actual parsing.
       * @private
       */
      var parse$1 = {
        /**
         * Return point geometry given a point WKT fragment.
         *
         * @param {String} str A WKT fragment representing the point.
         * @return {Point} A point geometry.
         * @private
         */
        point: function point(str) {
          if (str === undefined) {
            return [];
          }
          var coords = str.trim().split(regExes.spaces);
          return [Number.parseFloat(coords[0]), Number.parseFloat(coords[1])];
        },
        /**
         * Return a multipoint geometry given a multipoint WKT fragment.
         *
         * @param {String} str A WKT fragment representing the multipoint.
         * @return {Point} A multipoint feature.
         * @private
         */
        multipoint: function multipoint(str) {
          var this$1 = this;
          if (str === undefined) {
            return [];
          }
          var point;
          var points = str.trim().split(",");
          var components = [];
          for (var i = 0, len = points.length; i < len; ++i) {
            point = points[i].replace(regExes.trimParens, "$1");
            components.push(parse$1.point(point));
          }
          return components;
        },
        /**
         * Return a linestring geometry given a linestring WKT fragment.
         *
         * @param {String} str A WKT fragment representing the linestring.
         * @return {LineString} A linestring geometry.
         * @private
         */
        linestring: function linestring(str) {
          if (str === undefined) {
            return [];
          }
          var points = str.trim().split(",");
          var components = [];
          var coords;
          for (var i = 0, len = points.length; i < len; ++i) {
            coords = points[i].trim().split(regExes.spaces);
            components.push([
              Number.parseFloat(coords[0]),
              Number.parseFloat(coords[1]),
            ]);
          }
          return components;
        },
        /**
         * Return a linearring geometry given a linearring WKT fragment.
         *
         * @param {String} str A WKT fragment representing the linearring.
         * @return {LinearRing} A linearring geometry.
         * @private
         */
        linearring: function linearring(str) {
          if (str === undefined) {
            return [];
          }
          var points = str.trim().split(",");
          var components = [];
          var coords;
          for (var i = 0, len = points.length; i < len; ++i) {
            coords = points[i].trim().split(regExes.spaces);
            components.push([
              Number.parseFloat(coords[0]),
              Number.parseFloat(coords[1]),
            ]);
          }
          return components;
        },
        /**
         * Return a multilinestring geometry given a multilinestring WKT fragment.
         *
         * @param {String} str A WKT fragment representing the multilinestring.
         * @return {MultiLineString} A multilinestring geometry.
         * @private
         */
        multilinestring: function multilinestring(str) {
          var this$1 = this;
          if (str === undefined) {
            return [];
          }
          var line;
          var lines = str.trim().split(regExes.parenComma);
          var components = [];
          for (var i = 0, len = lines.length; i < len; ++i) {
            line = lines[i].replace(regExes.trimParens, "$1");
            components.push(parse$1.linestring(line));
          }
          return components;
        },
        /**
         * Return a polygon geometry given a polygon WKT fragment.
         *
         * @param {String} str A WKT fragment representing the polygon.
         * @return {Polygon} A polygon geometry.
         * @private
         */
        polygon: function polygon(str) {
          var this$1 = this;
          if (str === undefined) {
            return [];
          }
          var ring, linestring, linearring;
          var rings = str.trim().split(regExes.parenComma);
          var shell;
          var holes = [];
          //for (var i = 0, len = rings.length; i < len; ++i) {
          ring = rings[0].replace(regExes.trimParens, "$1");
          linestring = ring;
          //}
          return linestring;
        },
        /**
         * Return a multipolygon geometry given a multipolygon WKT fragment.
         *
         * @param {String} str A WKT fragment representing the multipolygon.
         * @return {MultiPolygon} A multipolygon geometry.
         * @private
         */
        multipolygon: function multipolygon(str) {
          var this$1 = this;
          if (str === undefined) {
            return [];
          }
          var polygon;
          var polygons = str.trim().split(regExes.doubleParenComma);
          var components = [];
          for (var i = 0, len = polygons.length; i < len; ++i) {
            polygon = polygons[i].replace(regExes.trimParens, "$1");
            components.push(parse$1.polygon(polygon));
          }
          return components;
        },
      };
      var geometry, type, str;
      wkt = wkt.replace(/[\n\r]/g, " ");
      var matches = regExes.typeStr.exec(wkt);
      if (wkt.search("EMPTY") !== -1) {
        matches = regExes.emptyTypeStr.exec(wkt);
        matches[2] = undefined;
      }
      if (matches) {
        type = matches[1].toLowerCase();
        str = matches[2];
        if (parse$1[type]) {
          geometry = parse$1[type].apply(this, [str]);
        }
      }
      if (geometry === undefined) {
        throw new Error("Could not parse WKT " + wkt);
      }
      return geometry;
    },
  },
};
</script>
src/components/menu/tools/special.vue
@@ -433,48 +433,7 @@
          );
          window.sxthandler.setInputAction((event) => {
            let pick = sgworld.Viewer.scene.pick(event.position);
            if (pick && pick.id && pick.id.tag == "sxt") {
              //关闭地块信息弹窗
              Bus.$emit("closeLandInfoPop", true);
              //结束之前操作
              layuiLayer.close(SmartEarthPopupData.layerProp);
              sgworld.drawObj &&
                (sgworld.drawObj.drawHandler &&
                  sgworld.drawObj.drawHandler.destroy(),
                sgworld.drawObj.end && sgworld.drawObj.end());
              let props = pick.id.properties;
              let screenHeight =
                document.body.clientHeight ||
                document.documentElement.clientHeigh;
              let offsetTop = screenHeight - 385;
              offsetTop = offsetTop < 0 ? 0 : offsetTop;
              offsetTop = offsetTop > 100 ? offsetTop - 100 : offsetTop;
              // console.log(props.installPla._value)
              layerOpen(props.name._value, {
                width: 470,
                height: 385,
                offset: [offsetTop + "px", "310px"],
                url:
                  "./static/html/video/video.html?code=" +
                  props.cameraInde._value,
                fn: {
                  success: (layero, index) => {
                    SmartEarthPopupData.layerContainer = layero;
                  },
                  end: () => {
                    // this.isOpen.ymfx = false;
                  },
                  cancel: () => {
                    sgworld.drawObj &&
                      sgworld.drawObj.end &&
                      sgworld.drawObj.end("cancel");
                  },
                },
              });
            }
            console.log(pick)
          }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        })
        .catch((err) => {
@@ -752,44 +711,44 @@
            let lon = p.lon;
            let lat = p.lat;
            axios
              .get(
                "http://10.10.4.121:8070/gisserver/wfsserver/yizhuang-building-wfs-1207",
                {
                  params: {
                    version: "1.3.0",
                    request: "GetFeature",
                    typename: `亦庄建筑外轮廓4326`,
                    propertyname: "*",
                    format: "json",
                    filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><ogc:Intersects><ogc:PropertyName>SAHEP</ogc:PropertyName><gml:Point > <gml:pos>${lon} ${lat}</gml:pos></gml:Point></ogc:Intersects></ogc:Filter>`,
                  },
                }
              )
              .then((response) => {
                if (response.data.features.length > 0) {
                  var geometry = [];
                  let POIs = response.data.features[0].geometry.coordinates[0];
                  for (let i = 0; i < POIs.length; i++) {
                    geometry.push({
                      x: parseFloat(POIs[i][0]),
                      y: parseFloat(POIs[i][1]),
                      z: 0,
                    });
                  }
                  buildingPolygon = sgworld.Creator.createPolygon(
                    geometry,
                    {
                      fillColor: "#00ff0050",
                      outlineColor: "#ff0000",
                      outlineWidth: 2,
                    },
                    1,
                    0,
                    "面"
                  );
                }
              });
            // axios
            //   .get(
            //     "http://10.10.4.121:8070/gisserver/wfsserver/yizhuang-building-wfs-1207",
            //     {
            //       params: {
            //         version: "1.3.0",
            //         request: "GetFeature",
            //         typename: `亦庄建筑外轮廓4326`,
            //         propertyname: "*",
            //         format: "json",
            //         filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><ogc:Intersects><ogc:PropertyName>SAHEP</ogc:PropertyName><gml:Point > <gml:pos>${lon} ${lat}</gml:pos></gml:Point></ogc:Intersects></ogc:Filter>`,
            //       },
            //     }
            //   )
            //   .then((response) => {
            //     if (response.data.features.length > 0) {
            //       var geometry = [];
            //       let POIs = response.data.features[0].geometry.coordinates[0];
            //       for (let i = 0; i < POIs.length; i++) {
            //         geometry.push({
            //           x: parseFloat(POIs[i][0]),
            //           y: parseFloat(POIs[i][1]),
            //           z: 0,
            //         });
            //       }
            //       buildingPolygon = sgworld.Creator.createPolygon(
            //         geometry,
            //         {
            //           fillColor: "#00ff0050",
            //           outlineColor: "#ff0000",
            //           outlineWidth: 2,
            //         },
            //         1,
            //         0,
            //         "面"
            //       );
            //     }
            //   });
          }
          // else if (nPickFeature.primitive instanceof Cesium.GroundPrimitive) {
          //   let wmsLayer = this.$store.state.selectedLayers.filter((item) => {
src/components/right/@/assets/img/new/yingxiang.png
src/components/right/right-bottom.vue
@@ -422,17 +422,27 @@
    },
    flyBack() {
      sgworld.Navigate.flyToPointsInterest({
        destination: new Cesium.Cartesian3.fromDegrees(
          this.camera.position[0],
          this.camera.position[1],
          this.camera.position[2]
        ),
        orientation: {
          heading: Cesium.Math.toRadians(this.camera.orientation.heading),
          pitch: Cesium.Math.toRadians(this.camera.orientation.pitch),
          roll: Cesium.Math.toRadians(this.camera.orientation.roll),
        },
      });
            destination: {
              "x": -2739326.5749705257,
              "y": 4699172.613682586,
              "z": 3363231.4711036524
            }, orientation: new Cesium.HeadingPitchRoll(0.20701194045518534, -1.2462306958113518, 0.00000112321019862804),
            duration: 7, //飞行时间8s
          });
      // sgworld.Navigate.flyToPointsInterest({
      //   destination: new Cesium.Cartesian3.fromDegrees(
      //     this.camera.position[0],
      //     this.camera.position[1],
      //     this.camera.position[2]
      //   ),
      //   orientation: {
      //     heading: Cesium.Math.toRadians(this.camera.orientation.heading),
      //     pitch: Cesium.Math.toRadians(this.camera.orientation.pitch),
      //     roll: Cesium.Math.toRadians(this.camera.orientation.roll),
      //   },
      // });
    },
    fullScreen() {
      this.isActive = !this.isActive;
src/components/right/right-top.vue
@@ -51,6 +51,7 @@
    </div>
    <model-layer v-show="$store.state.showModelFlag"></model-layer>
    <model-edit v-if="$store.state.isShowEditLayer"></model-edit>
    <menu-query v-if="$store.state.isShowMenuQuery"></menu-query>
    <querydata ref="drawer" />
    <div class="resByMouseBox" v-if="showRangeBox">
@@ -759,7 +760,9 @@
// import { queryBySquare } from "@/utils/request";
import FCFH from "@/components/right/FCFH";
import modelLayer from "@/components/left/layerTree/modelLayer.vue";
import  modelEdit from '@/components/left/layerTree/modelEdit.vue';
import modelEdit from '@/components/left/layerTree/modelEdit.vue';
import menuQuery from "@/components/left/layerTree/menuQuery.vue";
//交通图层
let trafficLayer, panoramaLayer;
let flyPoint;
@@ -777,7 +780,9 @@
    Layer,
    FCFH,
    modelLayer,
    modelEdit
    modelEdit,
    menuQuery
  },
  name: "right-top",
  data() {
src/components/right/switchImagerLayer.vue
@@ -8,59 +8,62 @@
        />
      </li> -->
      <li>
        <img
          @click="switchImagerLayerClick('影像底图')"
          src="@/assets/img/new/yingxiang.png"
        />
        <img @click="switchImagerLayerClick('影像底图')" src="@/assets/img/new/yingxiang.png" />
      </li>
      <li>
        <div class="radiogroup" @change="switchImagerLayerClick('二维底图')">
          <el-radio-group v-model="radio">
        <div class="radiogroup" @click="switchImagerLayerClick('二维底图')">
          <!-- <el-radio-group v-model="radio">
            <el-radio :label="2">标准白</el-radio>
            <el-radio :label="1">科技蓝</el-radio>
            <el-radio :label="0">暗夜黑</el-radio>
          </el-radio-group>
          </el-radio-group> -->
          <img src="@/assets/img/new/shiliang.png" />
        </div>
      </li>
      <li>
      <!-- <li>
        <img
          @click="switchImagerLayerClick('实景模型')"
          src="@/assets/img/new/sanwei.png"
        />
      </li>
      </li> -->
    </ul>
  </div>
</template>
<style  scoped>
.switchImagerLayer {
  width: 395px;
  width: 260px;
  height: 88px;
  position: absolute;
  right: 78px;
  right: 10px;
  top: -90px;
}
.switchImagerLayer ul {
  width: 100%;
  list-style: none;
  display: flex;
  justify-content: space-between;
}
li {
  cursor: pointer;
  width: 124px;
  height: 89px;
}
li img {
  width: 100%;
}
li:hover {
  background-color: rgb(0, 136, 255, 0.4);
}
.switchImagerLayer li .radiogroup {
  position: absolute;
}
.switchImagerLayer li .el-radio-group {
  display: flex;
  flex-direction: column;
@@ -71,6 +74,7 @@
  top: 5px;
  z-index: 10;
}
.el-radio {
  color: #fff;
  text-shadow: 1px 1px 0 #000, 1px -1px 0 #000, -1px -1px 0 #000,
@@ -105,6 +109,7 @@
<script>
import Bus from "../tools/Bus";
import baseVuex from "@mixin/baseVuex";
export default {
  name: "switchImagerLayer",
  components: {},
@@ -121,31 +126,45 @@
      },
    };
  },
  mounted() {},
  mounted() { },
  mixins: [baseVuex],
  methods: {
    clearLayer() {},
    clearLayer() { },
    removeLayer() {
      var layer = Viewer.imageryLayers._layers[1];
      if (layer) {
        Viewer.imageryLayers.remove(layer)
      }
    },
    switchImagerLayerClick(type) {
      switch (type) {
        case "影像底图":
          this.radio = null;
          this.changeLayer("2d"); //添加相机范围限制
          this.clearSwitchImagerLayerClick();
          Bus.$emit("switchImage");
          this.$parent.changeImage("1");
          // this.radio = null;
          // this.changeLayer("2d"); //添加相机范围限制
          // this.clearSwitchImagerLayerClick();
          // Bus.$emit("switchImage");
          // this.$parent.changeImage("1");
          //
          Viewer.imageryLayers._layers[1].show = false;
          Viewer.imageryLayers._layers[2].show = false;
          Viewer.imageryLayers._layers[3].show = true;
          break;
        case "二维底图":
          this.changeLayer("2d"); //添加相机范围限制
          this.clearSwitchImagerLayerClick();
          if (this.radio == 0) {
            Bus.$emit("heijin2D");
          } else if (this.radio == 1) {
            Bus.$emit("shenlan2D");
          } else {
            Bus.$emit("baise2D");
          }
          // Bus.$emit("switch2D");
          this.$parent.changeImage("2");
          Viewer.imageryLayers._layers[1].show = true;
          Viewer.imageryLayers._layers[2].show = true;
          Viewer.imageryLayers._layers[3].show = false;
          // Viewer.imageryLayers.remove(Viewer.imageryLayers._layers[1])
          // this.changeLayer("2d"); //添加相机范围限制
          // this.clearSwitchImagerLayerClick();
          // if (this.radio == 0) {
          //   Bus.$emit("heijin2D");
          // } else if (this.radio == 1) {
          //   Bus.$emit("shenlan2D");
          // } else {
          //   Bus.$emit("baise2D");
          // }
          // // Bus.$emit("switch2D");
          // this.$parent.changeImage("2");
          break;
        case "实景模型":
          this.radio = null;
@@ -223,7 +242,7 @@
      try {
        if (window.panoramaLayer) window.panoramaLayer.deleteObject();
      } catch (e) {}
      } catch (e) { }
      if (window.panoramaHandler) window.panoramaHandler.destroy();
      if (window.panoramaHandler) window.panoramaHandler = undefined;
    },
src/router/index.js
@@ -30,7 +30,7 @@
];
const router = new Router({
  mode: "history",
  // base: '/YZXNCS',//正式版 æ‰“包时解开
  // base: '/JSJKZHGS',//正式版 æ‰“包时解开
  // base: '/SW',//测试版 æ‰“包时解开
  routes,
});
src/store/index.js
@@ -34,11 +34,20 @@
    selectedLayers: [],
    userId: "",
    userName: "",
    showModelFlag:false,//模型添加编辑
    isShowLayer:false,
    addModelFlag:false,
    addModelLayer:null,
    isShowEditLayer:false,
    showModelFlag: false,//模型添加编辑
    isShowLayer: false,
    addModelFlag: false,
    addModelLayer: null,
    isShowEditLayer: false,
    showMessageInfo: false,
    isMeasureFlag: false,
    measureCoordObj: null,
    isShowMeasureCoord: false,
    isShowMenuQuery:false,
    isQueryFalag:false,
    isQyeryCoord:null,
    showZhaiHaiImg:null,
     isshowZhaiHai:false,
  },
  mutations: {
    selectedLayer(state, b) {
@@ -91,12 +100,15 @@
      state.showSetting = b;
      console.log(b)
    },
    showModelBox(state,b){
    showModelBox(state, b) {
      state.showModelFlag = b;
    },
    showSceneBox(state,b){
    showSceneBox(state, b) {
      state.isShowLayer = !state.isShowLayer;
    },
    setMenuQuery(state, b) {
      state.isShowMenuQuery = b;
    },
    // å®šä¹‰å·¥ç¨‹æ ‘数据
    setTreeData(state, data = []) {
      ergodicNode(data);
src/store/mapSplit.js
@@ -23,7 +23,7 @@
        var lat = Cesium.Math.toDegrees(cartographic.latitude)
        var lng = Cesium.Math.toDegrees(cartographic.longitude)
        var level = this.getLevel(cartographic.height)
        console.log(lng, lat, level)
        window.map.getView().setCenter([parseFloat(lng), parseFloat(lat)])
        window.map.getView().setZoom(level)
    },
static/CimSDK/Workers/field/rendermapWorker.js
@@ -53,7 +53,7 @@
    var colorBar = colorInfo;
    var valMax = byteArray[byteArray.length - 1];
    var valMin = byteArray[byteArray.length - 2];
    debugger
    if (colorEqually) {
        var delta = valMax - valMin;
        delta = delta / (colorBar.length - 1);
static/SmartEarthSDK/Workers/field/rendermapWorker.js
@@ -53,7 +53,7 @@
    var colorBar = colorInfo;
    var valMax = byteArray[byteArray.length - 1];
    var valMin = byteArray[byteArray.length - 2];
    debugger
    if (colorEqually) {
        var delta = valMax - valMin;
        delta = delta / (colorBar.length - 1);
static/SmartEarthSDK/Workers/prop/property_prop.html
@@ -534,7 +534,7 @@
                    $('.attribute3dtitles input[name="text17"]').val(editGraphic.getProperty(obj[16]));
                    break;
                case 'attributepolygon':
                    debugger
                    $('.attributepolygon input[name="text1"]').val(editGraphic["Angle"].getValue());
                    $('.attributepolygon input[name="text2"]').val(editGraphic["BSM"].getValue());
                    $('.attributepolygon input[name="text3"]').val(editGraphic["BlkColor"].getValue());
static/data/layerData.js
@@ -8,6 +8,11 @@
        BASE_URL: "http://" + host + "/JiangSu",
        img_url: "http://" + host + "/static/image/",
        Model_URL: web_URL + "/JiangSu",
        tdtSl:"http://t0.tianditu.com/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=",
        tdtZj:"http://t0.tianditu.com/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=",
        tdtToken:"94a34772eb88317fcbf8428e10448561",
        olTdtSl:'http://t0.tianditu.com/DataServer?T=cta_w&x={x}&y={y}&l={z}&tk=',
        olTdtBZ:'http://t0.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk='
    },
    modelData: [
        {
@@ -18,39 +23,29 @@
        },
        {
            id: 'md2',
            name: '测试模型2',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
            name: '工人',
            url: '/Data/glb/工人.glb',
            imgUrl: '工人.png'
        }, {
            id: 'md3',
            name: '测试模型3',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
        }, {
            name: '路障',
            url: '/Data/glb/路障.glb',
            imgUrl: '路障.png'
        },  {
            id: 'md4',
            name: '测试模型4',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
            name: '施工车辆',
            url: '/Data/glb/sgcl.glb',
            imgUrl: '施工车辆.png'
        }, {
            id: 'md5',
            name: '测试模型5',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
            name: 'æ¡¶',
            url: '/Data/glb/æ¡¶.glb',
            imgUrl: 'æ¡¶.png'
        }, {
            id: 'md6',
            name: '测试模型6',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
        }, {
            id: 'md7',
            name: '测试模型7',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
        }, {
            id: 'md8',
            name: '测试模型8',
            url: '/Data/glb/Cesium_Air.glb',
            imgUrl: '飞机.png'
        },
            name: '锥桶',
            url: '/Data/glb/锥桶.glb',
            imgUrl: '锥桶.png'
        }
    ]
}
static/html/AnalysisResultEchartLine.html
@@ -96,7 +96,7 @@
                thisP.height += 360;
                thisP = parent.Cesium.Cartographic.toCartesian(thisP);
                debugger
                // parent._AnalysisDXPM.flyPoint
                var options = {
                    maximumHeight: 30,
static/image/¹¤ÈË.png
static/image/Ê©¹¤³µÁ¾.png
static/image/Ͱ.png
static/image/·ÕÏ.png
static/image/׶Ͱ.png
static/img/test03-01.png
static/layers.json
@@ -7,7 +7,75 @@
            "id": "CE402B81",
            "name": "边界范围",
            "children": [
                {
                    "id": "A349C2B1",
                    "sourceType": "GEOJSON",
                    "type": "ZhuangHao",
                    "name": "桩号",
                    "urls": "/Data/json/zhuanghao.geojson",
                    "alpha": 1,
                    "zIndex": 4,
                    "checked": false,
                    "rename": false
                },
                {
                    "id": "A349C2B2",
                    "sourceType": "GEOJSON",
                    "type": "PingQuXian",
                    "name": "平曲线",
                    "urls": "/Data/json/PingQuXian.geojson",
                    "alpha": 1,
                    "zIndex": 4,
                    "checked": false,
                    "rename": false
                },
                {
                    "id": "A349C2B3",
                    "sourceType": "GEOJSON",
                    "type": "ZhongQuXian",
                    "name": "纵曲线",
                    "urls": "/Data/json/ZhongQuXian.geojson",
                    "alpha": 1,
                    "zIndex": 4,
                    "checked": false,
                    "rename": false
                },
                {
                    "id": "A349C2B4",
                    "sourceType": "GEOJSON",
                    "type": "WangGe",
                    "name": "网格",
                    "urls": "/Data/json/wangGe.geojson",
                    "alpha": 1,
                    "zIndex": 4,
                    "checked": false,
                    "rename": false
                },
                {
                    "id": "A349C2B5",
                    "sourceType": "GEOJSON",
                    "type": "zhaiHai",
                    "name": "灾害",
                    "urls": [
                        "/Data/json/zhaiHai1.geojson",
                        "/Data/json/zhaiHai2.geojson",
                        "/Data/json/zhaiHai3.geojson"
                    ],
                    "alpha": 1,
                    "zIndex": 4,
                    "checked": false,
                    "rename": false
                },
                {
                    "id": "A349C2B6",
                    "sourceType": "wmse",
                    "name": "行政区划",
                    "urls": "http://192.168.20.83:8866/gisserver/wmsserver/xingZhengQuHua",
                    "alpha": 1,
                    "zIndex": 4,
                    "checked": false,
                    "rename": false
                }
            ],
            "rename": false,
            "checked": false,
@@ -15,14 +83,32 @@
        },
        {
            "id": "482040AD",
            "name": "病害数据",
            "name": "模型",
            "children": [
                {
                    "id": "482040AD1",
                    "sourceType": "b3dm",
                    "name": "服务区模型",
                    "urls": "http://localhost/JiangSu/Data/3dtiles/fwq/tileset.json",
                    "checked": true,
                    "rename": false,
                    "effectsMaxHeight": 0,
                    "zIndex": 5
                },
                {
                    "id": "482040AD2",
                    "sourceType": "b3dm",
                    "name": "收费站模型",
                    "urls": "http://localhost/JiangSu/Data/3dtiles/sfz/tileset.json",
                    "checked": true,
                    "rename": false,
                    "zIndex": 2,
                    "effectsMaxHeight": 0
                }
            ],
            "rename": false,
            "expanded": false
        }
    ],
    "flyTo": [],
    "mapStatus": {
vue.config.js
@@ -21,12 +21,12 @@
      error: true
    },
    proxy: {
      "/JiangSu": {
        target: 'http:localhost/JiangSu',//代理地址 å‡¡æ˜¯ä½¿ç”¨/api
      "/aaaa": {
        target: 'http:localhost/aaaa',//代理地址 å‡¡æ˜¯ä½¿ç”¨/api
        changeOrigin: true,//允许跨域请求
        secure: false,
        pathRewrite: { //重写路径 æ›¿æ¢è¯·æ±‚地址中的指定路径
          ['^/JiangSu']: '' //将请求地址中的api替换为空
          ['^/aaaa']: '' //将请求地址中的api替换为空
        }
      }
    }