Commit 3a4a0449 by 吴春元

高德地图接入,接口调试

parent 568600c8
......@@ -11,6 +11,7 @@ declare module 'vue' {
AsyncMap3D: typeof import('./src/components/ThreeMap/AsyncMap3D.vue')['default']
ContainerWrap: typeof import('./src/components/ContainerWrap/index.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol']
......@@ -21,6 +22,7 @@ declare module 'vue' {
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
ElLink: typeof import('element-plus/es')['ElLink']
ElOption: typeof import('element-plus/es')['ElOption']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
......
......@@ -24,23 +24,11 @@
<link rel="stylesheet" type="text/css" href="/videoPlayer/common/hk/index.css">
<link rel="stylesheet" type="text/css" href="/videoPlayer/common/dh/index.css">
<link rel="stylesheet" type="text/css" href="/videoPlayer/common/css/videoPlayer.css">
<!-- <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script> -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/particlesjs/2.2.2/particles.min.js"></script> -->
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
<script type="text/javascript"
src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=i8RgXE4a6vzGgbFs5s4ynlyUh6YnUQIB">
</script>
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=2.0&key=fee919a8e608c39d1d528ec662a2ca17&plugin=AMap.DistrictSearch"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
<!-- <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" /> -->
</body>
</html>
\ No newline at end of file
../sass/sass.js
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules/sass/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules/sass/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../sass/sass.js" "$@"
else
exec node "$basedir/../sass/sass.js" "$@"
fi
../typescript/bin/tsc
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
else
exec node "$basedir/../typescript/bin/tsc" "$@"
fi
../typescript/bin/tsserver
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
else
exec node "$basedir/../typescript/bin/tsserver" "$@"
fi
../vite/bin/vite.js
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi
../vue-tsc/bin/vue-tsc.js
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vue-tsc/bin/vue-tsc.js" "$@"
else
exec node "$basedir/../vue-tsc/bin/vue-tsc.js" "$@"
fi
......@@ -185,100 +185,6 @@ hoistedDependencies:
'@tailwindcss/oxide-win32-x64-msvc': private
'@tailwindcss/oxide@4.1.13':
'@tailwindcss/oxide': private
'@tsparticles/basic@3.9.1':
'@tsparticles/basic': private
'@tsparticles/engine@3.9.1':
'@tsparticles/engine': private
'@tsparticles/interaction-external-attract@3.9.1':
'@tsparticles/interaction-external-attract': private
'@tsparticles/interaction-external-bounce@3.9.1':
'@tsparticles/interaction-external-bounce': private
'@tsparticles/interaction-external-bubble@3.9.1':
'@tsparticles/interaction-external-bubble': private
'@tsparticles/interaction-external-connect@3.9.1':
'@tsparticles/interaction-external-connect': private
'@tsparticles/interaction-external-grab@3.9.1':
'@tsparticles/interaction-external-grab': private
'@tsparticles/interaction-external-pause@3.9.1':
'@tsparticles/interaction-external-pause': private
'@tsparticles/interaction-external-push@3.9.1':
'@tsparticles/interaction-external-push': private
'@tsparticles/interaction-external-remove@3.9.1':
'@tsparticles/interaction-external-remove': private
'@tsparticles/interaction-external-repulse@3.9.1':
'@tsparticles/interaction-external-repulse': private
'@tsparticles/interaction-external-slow@3.9.1':
'@tsparticles/interaction-external-slow': private
'@tsparticles/interaction-external-trail@3.9.1':
'@tsparticles/interaction-external-trail': private
'@tsparticles/interaction-particles-attract@3.9.1':
'@tsparticles/interaction-particles-attract': private
'@tsparticles/interaction-particles-collisions@3.9.1':
'@tsparticles/interaction-particles-collisions': private
'@tsparticles/interaction-particles-links@3.9.1':
'@tsparticles/interaction-particles-links': private
'@tsparticles/move-base@3.9.1':
'@tsparticles/move-base': private
'@tsparticles/move-parallax@3.9.1':
'@tsparticles/move-parallax': private
'@tsparticles/plugin-absorbers@3.9.1':
'@tsparticles/plugin-absorbers': private
'@tsparticles/plugin-easing-quad@3.9.1':
'@tsparticles/plugin-easing-quad': private
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
'@tsparticles/plugin-emitters-shape-circle': private
'@tsparticles/plugin-emitters-shape-square@3.9.1':
'@tsparticles/plugin-emitters-shape-square': private
'@tsparticles/plugin-emitters@3.9.1':
'@tsparticles/plugin-emitters': private
'@tsparticles/plugin-hex-color@3.9.1':
'@tsparticles/plugin-hex-color': private
'@tsparticles/plugin-hsl-color@3.9.1':
'@tsparticles/plugin-hsl-color': private
'@tsparticles/plugin-rgb-color@3.9.1':
'@tsparticles/plugin-rgb-color': private
'@tsparticles/shape-circle@3.9.1':
'@tsparticles/shape-circle': private
'@tsparticles/shape-emoji@3.9.1':
'@tsparticles/shape-emoji': private
'@tsparticles/shape-image@3.9.1':
'@tsparticles/shape-image': private
'@tsparticles/shape-line@3.9.1':
'@tsparticles/shape-line': private
'@tsparticles/shape-polygon@3.9.1':
'@tsparticles/shape-polygon': private
'@tsparticles/shape-square@3.9.1':
'@tsparticles/shape-square': private
'@tsparticles/shape-star@3.9.1':
'@tsparticles/shape-star': private
'@tsparticles/shape-text@3.9.1':
'@tsparticles/shape-text': private
'@tsparticles/slim@3.9.1':
'@tsparticles/slim': private
'@tsparticles/updater-color@3.9.1':
'@tsparticles/updater-color': private
'@tsparticles/updater-destroy@3.9.1':
'@tsparticles/updater-destroy': private
'@tsparticles/updater-life@3.9.1':
'@tsparticles/updater-life': private
'@tsparticles/updater-opacity@3.9.1':
'@tsparticles/updater-opacity': private
'@tsparticles/updater-out-modes@3.9.1':
'@tsparticles/updater-out-modes': private
'@tsparticles/updater-roll@3.9.1':
'@tsparticles/updater-roll': private
'@tsparticles/updater-rotate@3.9.1':
'@tsparticles/updater-rotate': private
'@tsparticles/updater-size@3.9.1':
'@tsparticles/updater-size': private
'@tsparticles/updater-stroke-color@3.9.1':
'@tsparticles/updater-stroke-color': private
'@tsparticles/updater-tilt@3.9.1':
'@tsparticles/updater-tilt': private
'@tsparticles/updater-twinkle@3.9.1':
'@tsparticles/updater-twinkle': private
'@tsparticles/updater-wobble@3.9.1':
'@tsparticles/updater-wobble': private
'@types/estree@1.0.8':
'@types/estree': private
'@types/lodash-es@4.17.12':
......@@ -617,8 +523,6 @@ hoistedDependencies:
to-regex-range: private
tslib@2.3.0:
tslib: private
tsparticles-engine@2.12.0:
tsparticles-engine: private
ufo@1.6.1:
ufo: private
undici-types@7.10.0:
......
......@@ -47,9 +47,6 @@ importers:
nprogress:
specifier: ^0.2.0
version: 0.2.0
particles.vue3:
specifier: ^2.12.0
version: 2.12.0(typescript@5.8.3)
pinia:
specifier: ^3.0.3
version: 3.0.3(typescript@5.8.3)(vue@3.5.21(typescript@5.8.3))
......@@ -62,9 +59,6 @@ importers:
three:
specifier: ^0.181.2
version: 0.181.2
tsparticles:
specifier: ^3.9.1
version: 3.9.1
vue:
specifier: ^3.5.18
version: 3.5.21(typescript@5.8.3)
......@@ -216,147 +210,6 @@ packages:
'@tailwindcss/postcss@4.1.13':
resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==}
'@tsparticles/basic@3.9.1':
resolution: {integrity: sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ==}
'@tsparticles/engine@3.9.1':
resolution: {integrity: sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ==}
'@tsparticles/interaction-external-attract@3.9.1':
resolution: {integrity: sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg==}
'@tsparticles/interaction-external-bounce@3.9.1':
resolution: {integrity: sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==}
'@tsparticles/interaction-external-bubble@3.9.1':
resolution: {integrity: sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ==}
'@tsparticles/interaction-external-connect@3.9.1':
resolution: {integrity: sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA==}
'@tsparticles/interaction-external-grab@3.9.1':
resolution: {integrity: sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow==}
'@tsparticles/interaction-external-pause@3.9.1':
resolution: {integrity: sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g==}
'@tsparticles/interaction-external-push@3.9.1':
resolution: {integrity: sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw==}
'@tsparticles/interaction-external-remove@3.9.1':
resolution: {integrity: sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA==}
'@tsparticles/interaction-external-repulse@3.9.1':
resolution: {integrity: sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw==}
'@tsparticles/interaction-external-slow@3.9.1':
resolution: {integrity: sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ==}
'@tsparticles/interaction-external-trail@3.9.1':
resolution: {integrity: sha512-Au0v2oiqfKTemI/4bzjD4dUXzIngB5Q2T4nJcMCYpP24uZfwZh5xTjUMH7gyJyyaRTdMl9IJrp8ySjyYbLfeGg==}
'@tsparticles/interaction-particles-attract@3.9.1':
resolution: {integrity: sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ==}
'@tsparticles/interaction-particles-collisions@3.9.1':
resolution: {integrity: sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w==}
'@tsparticles/interaction-particles-links@3.9.1':
resolution: {integrity: sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg==}
'@tsparticles/move-base@3.9.1':
resolution: {integrity: sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ==}
'@tsparticles/move-parallax@3.9.1':
resolution: {integrity: sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA==}
'@tsparticles/plugin-absorbers@3.9.1':
resolution: {integrity: sha512-q9SQllpbPPgw1+euxHPYCFawOVUazQkkwnleiIgpYSiimlCyjIdwGnFPSNe1Sypzqmr2h6oOyX2vkK5ZVNEu8A==}
'@tsparticles/plugin-easing-quad@3.9.1':
resolution: {integrity: sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw==}
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
resolution: {integrity: sha512-z+9MsAPWr++sNz6N6303rRDjusW0BIPhHY51E5eXGDcRdOqrESDs6y99AJ/6Kdb/PpibCIYjFY9jVi2JJADPRA==}
'@tsparticles/plugin-emitters-shape-square@3.9.1':
resolution: {integrity: sha512-dhA1c7FKs19B8lgTf25OTA3JoptNA+rjorsqCFuY1BZDI8g9E8DNqikUge14/W7nZN96+98hY+ghxSl4K2YsgA==}
'@tsparticles/plugin-emitters@3.9.1':
resolution: {integrity: sha512-h7opR8SoFWBmVHceDLJUerLENaPfkJSh2zQYvzmLj2L+V3VLS1QDgty+4QZVeZfqNROmgQw2eLFA5El1E0sqqw==}
'@tsparticles/plugin-hex-color@3.9.1':
resolution: {integrity: sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg==}
'@tsparticles/plugin-hsl-color@3.9.1':
resolution: {integrity: sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w==}
'@tsparticles/plugin-rgb-color@3.9.1':
resolution: {integrity: sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ==}
'@tsparticles/shape-circle@3.9.1':
resolution: {integrity: sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g==}
'@tsparticles/shape-emoji@3.9.1':
resolution: {integrity: sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ==}
'@tsparticles/shape-image@3.9.1':
resolution: {integrity: sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==}
'@tsparticles/shape-line@3.9.1':
resolution: {integrity: sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ==}
'@tsparticles/shape-polygon@3.9.1':
resolution: {integrity: sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ==}
'@tsparticles/shape-square@3.9.1':
resolution: {integrity: sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ==}
'@tsparticles/shape-star@3.9.1':
resolution: {integrity: sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA==}
'@tsparticles/shape-text@3.9.1':
resolution: {integrity: sha512-oNsLHI0lGkIXoUw3W598iwd7dtoHCDrwpwJRGnQzgfk6T5a9dCpSD5vDeQN89lr3BUbVui4lhxq+/TyC64oAqA==}
'@tsparticles/slim@3.9.1':
resolution: {integrity: sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw==}
'@tsparticles/updater-color@3.9.1':
resolution: {integrity: sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg==}
'@tsparticles/updater-destroy@3.9.1':
resolution: {integrity: sha512-MjMzEhZwCQIbxO6ZRM0eXsHVwmlXuUqwC43WCPZCpjhK3AJrMu3KR4xsJieFTWIbVNguAvbgoTB10FfJOUU5VA==}
'@tsparticles/updater-life@3.9.1':
resolution: {integrity: sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA==}
'@tsparticles/updater-opacity@3.9.1':
resolution: {integrity: sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw==}
'@tsparticles/updater-out-modes@3.9.1':
resolution: {integrity: sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg==}
'@tsparticles/updater-roll@3.9.1':
resolution: {integrity: sha512-zl4JeM3gUBJ0uttmIsond3lrZ3f3AkItFeS0Lhj/7jiCKfUoRyyOMrcBk8R1AhW7lI+7ko1iBs3jhO0jnxz9vg==}
'@tsparticles/updater-rotate@3.9.1':
resolution: {integrity: sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ==}
'@tsparticles/updater-size@3.9.1':
resolution: {integrity: sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==}
'@tsparticles/updater-stroke-color@3.9.1':
resolution: {integrity: sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA==}
'@tsparticles/updater-tilt@3.9.1':
resolution: {integrity: sha512-PB2yaoyXRmSk4iIVgjtRrzOxXMK9mjeAQHIJGtT4faq46Z8cbIIEFgjTwqrUV8qOrNg/h4sm5NE/s0qsTYjp1Q==}
'@tsparticles/updater-twinkle@3.9.1':
resolution: {integrity: sha512-xgTcYr6LmP44IPIBeQmEExN2Y5Nfl3ikmC08eOh5nZy/ta6ORP+JTsprrnfuv/O2DwTyoqFLkZ16hZfkdc1yOQ==}
'@tsparticles/updater-wobble@3.9.1':
resolution: {integrity: sha512-c99Ogy9q4QWO+zsDXol0UnpUwZiY2UucFb8ltuDv9AlbGUeprygoub8jhgT5pEDv+GdzWOJGSgq7rfgv9cHBrg==}
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
......@@ -962,10 +815,6 @@ packages:
nprogress@0.2.0:
resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
particles.vue3@2.12.0:
resolution: {integrity: sha512-t1AFUSuL+zzXO5fvBq6y76DAyy6sXtBOVY3UirNzaRQ0JCqSV3wCQwQ2N51tJRG6V952ARi87NMcQP5VwfTkqA==}
deprecated: '@tsparticles/vue3 is the new package for v3, please use that'
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
......@@ -1084,13 +933,6 @@ packages:
tslib@2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
tsparticles-engine@2.12.0:
resolution: {integrity: sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==}
deprecated: starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name
tsparticles@3.9.1:
resolution: {integrity: sha512-Y780IGSL4qjkZj7+fI92PV/cziHqLR/s6nnYri4K6vH3NQRmDK5D6pfskDO8T4Y96ChCWHY3uxPtOb/hKQ83Qg==}
typescript@5.8.3:
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
engines: {node: '>=14.17'}
......@@ -1361,228 +1203,6 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.13
'@tsparticles/basic@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base': 3.9.1
'@tsparticles/plugin-hex-color': 3.9.1
'@tsparticles/plugin-hsl-color': 3.9.1
'@tsparticles/plugin-rgb-color': 3.9.1
'@tsparticles/shape-circle': 3.9.1
'@tsparticles/updater-color': 3.9.1
'@tsparticles/updater-opacity': 3.9.1
'@tsparticles/updater-out-modes': 3.9.1
'@tsparticles/updater-size': 3.9.1
'@tsparticles/engine@3.9.1': {}
'@tsparticles/interaction-external-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bounce@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bubble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-connect@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-grab@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-pause@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-push@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-remove@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-repulse@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-slow@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-collisions@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-links@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-parallax@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-absorbers@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-easing-quad@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hex-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hsl-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-rgb-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-emoji@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-image@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-line@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-polygon@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-star@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-text@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/slim@3.9.1':
dependencies:
'@tsparticles/basic': 3.9.1
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-attract': 3.9.1
'@tsparticles/interaction-external-bounce': 3.9.1
'@tsparticles/interaction-external-bubble': 3.9.1
'@tsparticles/interaction-external-connect': 3.9.1
'@tsparticles/interaction-external-grab': 3.9.1
'@tsparticles/interaction-external-pause': 3.9.1
'@tsparticles/interaction-external-push': 3.9.1
'@tsparticles/interaction-external-remove': 3.9.1
'@tsparticles/interaction-external-repulse': 3.9.1
'@tsparticles/interaction-external-slow': 3.9.1
'@tsparticles/interaction-particles-attract': 3.9.1
'@tsparticles/interaction-particles-collisions': 3.9.1
'@tsparticles/interaction-particles-links': 3.9.1
'@tsparticles/move-parallax': 3.9.1
'@tsparticles/plugin-easing-quad': 3.9.1
'@tsparticles/shape-emoji': 3.9.1
'@tsparticles/shape-image': 3.9.1
'@tsparticles/shape-line': 3.9.1
'@tsparticles/shape-polygon': 3.9.1
'@tsparticles/shape-square': 3.9.1
'@tsparticles/shape-star': 3.9.1
'@tsparticles/updater-life': 3.9.1
'@tsparticles/updater-rotate': 3.9.1
'@tsparticles/updater-stroke-color': 3.9.1
'@tsparticles/updater-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-destroy@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-life@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-opacity@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-out-modes@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-roll@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-rotate@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-size@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-stroke-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-tilt@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-twinkle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-wobble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@types/estree@1.0.8': {}
'@types/js-cookie@3.0.6': {}
......@@ -2250,13 +1870,6 @@ snapshots:
nprogress@0.2.0: {}
particles.vue3@2.12.0(typescript@5.8.3):
dependencies:
tsparticles-engine: 2.12.0
vue: 3.5.21(typescript@5.8.3)
transitivePeerDependencies:
- typescript
path-browserify@1.0.1: {}
pathe@2.0.3: {}
......@@ -2387,24 +2000,6 @@ snapshots:
tslib@2.3.0: {}
tsparticles-engine@2.12.0: {}
tsparticles@3.9.1:
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail': 3.9.1
'@tsparticles/plugin-absorbers': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-circle': 3.9.1
'@tsparticles/plugin-emitters-shape-square': 3.9.1
'@tsparticles/shape-text': 3.9.1
'@tsparticles/slim': 3.9.1
'@tsparticles/updater-destroy': 3.9.1
'@tsparticles/updater-roll': 3.9.1
'@tsparticles/updater-tilt': 3.9.1
'@tsparticles/updater-twinkle': 3.9.1
'@tsparticles/updater-wobble': 3.9.1
typescript@5.8.3: {}
ufo@1.6.1: {}
......
import {
__commonJS
} from "./chunk-G3PMV62Z.js";
// node_modules/@bmapgl-plugin/cluster/index.js
var require_cluster = __commonJS({
"node_modules/@bmapgl-plugin/cluster/index.js"(exports, module) {
!(function(t, i) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : (t = "undefined" != typeof globalThis ? globalThis : t || self).Cluster = i();
})(exports, (function() {
"use strict";
class t {
constructor(i2) {
this.t = null != i2 ? i2 : t.guid();
}
getHandlers(t2) {
let i2 = this.i || (this.i = /* @__PURE__ */ new Map());
return i2.has(t2) || i2.set(t2, /* @__PURE__ */ new Map()), i2.get(t2);
}
on(i2, e2) {
"function" == typeof e2 && this.getHandlers(i2).set(e2, t.guid());
}
addEventListener(t2, i2) {
this.on(t2, i2);
}
off(t2, i2) {
var e2;
let s2 = this.getHandlers(t2);
i2 ? s2.has(i2) && s2.delete(i2) : null === (e2 = this.i) || void 0 === e2 || e2.clear();
}
removeEventListener(t2, i2) {
this.off(t2, i2);
}
fire(t2, i2) {
let e2 = Array.from(this.getHandlers(t2).entries());
for (const [t3] of e2) t3.call(this, i2);
}
dispatchEvent(t2, i2) {
this.fire(t2, i2);
}
destroy() {
var t2;
null === (t2 = this.i) || void 0 === t2 || t2.clear(), this.i = null;
}
get hashCode() {
return this.t;
}
static guid() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(t2) {
let i2 = 16 * Math.random() | 0;
return ("x" == t2 ? i2 : 3 & i2 | 8).toString(16);
}));
}
}
var i, e, s, r, n, h;
!(function(t2) {
t2.CLICK = "click", t2.MOUSE_OVER = "mouseover", t2.MOUSE_OUT = "mouseout", t2.CHANGE = "change", t2.DESTROY = "destroy";
})(i || (i = {})), (function(t2) {
t2.DIS_PIXEL = "dis-pixel", t2.ATTR_REF = "attribute", t2.GEO_FENCE = "geo-fence";
})(e || (e = {})), (function(t2) {
t2[t2.SUM = 1] = "SUM", t2[t2.AVERAGE = 2] = "AVERAGE", t2[t2.MAX = 4] = "MAX";
})(s || (s = {})), (function(t2) {
t2[t2.AVERAGE = 1] = "AVERAGE", t2[t2.COUNT_AVERAGE = 3] = "COUNT_AVERAGE", t2[t2.WEIGHT_AVERAGE = 5] = "WEIGHT_AVERAGE", t2[t2.WEIGHT_MAX = 4] = "WEIGHT_MAX";
})(r || (r = {})), (function(t2) {
t2.DOM = "dom", t2.WEBGL = "webgl";
})(n || (n = {})), (function(t2) {
t2.MULTI = "multi", t2.SINGLE = "single";
})(h || (h = {}));
const o = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];
class l {
/**
* Creates an index from raw `ArrayBuffer` data.
* @param {ArrayBuffer} data
*/
static from(t2) {
if (!(t2 instanceof ArrayBuffer)) throw new Error("Data must be an instance of ArrayBuffer.");
const [i2, e2] = new Uint8Array(t2, 0, 2);
if (219 !== i2) throw new Error("Data does not appear to be in a KDBush format.");
const s2 = e2 >> 4;
if (1 !== s2) throw new Error(`Got v${s2} data when expected v1.`);
const r2 = o[15 & e2];
if (!r2) throw new Error("Unrecognized array type.");
const [n2] = new Uint16Array(t2, 2, 1), [h2] = new Uint32Array(t2, 4, 1);
return new l(h2, n2, r2, t2);
}
/**
* Creates an index that will hold a given number of items.
* @param {number} numItems
* @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).
* @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).
* @param {ArrayBuffer} [data] (For internal use only)
*/
constructor(t2, i2 = 64, e2 = Float64Array, s2) {
if (isNaN(t2) || t2 < 0) throw new Error(`Unpexpected numItems value: ${t2}.`);
this.numItems = +t2, this.nodeSize = Math.min(Math.max(+i2, 2), 65535), this.ArrayType = e2, this.IndexArrayType = t2 < 65536 ? Uint16Array : Uint32Array;
const r2 = o.indexOf(this.ArrayType), n2 = 2 * t2 * this.ArrayType.BYTES_PER_ELEMENT, h2 = t2 * this.IndexArrayType.BYTES_PER_ELEMENT, l2 = (8 - h2 % 8) % 8;
if (r2 < 0) throw new Error(`Unexpected typed array class: ${e2}.`);
s2 && s2 instanceof ArrayBuffer ? (
// reconstruct an index from a buffer
(this.data = s2, this.ids = new this.IndexArrayType(this.data, 8, t2), this.coords = new this.ArrayType(this.data, 8 + h2 + l2, 2 * t2), this.h = 2 * t2, this.o = true)
) : (
// initialize a new index
(this.data = new ArrayBuffer(8 + n2 + h2 + l2), this.ids = new this.IndexArrayType(this.data, 8, t2), this.coords = new this.ArrayType(this.data, 8 + h2 + l2, 2 * t2), this.h = 0, this.o = false, // set header
new Uint8Array(this.data, 0, 2).set([219, 16 + r2]), new Uint16Array(this.data, 2, 1)[0] = i2, new Uint32Array(this.data, 4, 1)[0] = t2)
);
}
/**
* Add a point to the index.
* @param {number} x
* @param {number} y
* @returns {number} An incremental index associated with the added item (starting from `0`).
*/
add(t2, i2) {
const e2 = this.h >> 1;
return this.ids[e2] = e2, this.coords[this.h++] = t2, this.coords[this.h++] = i2, e2;
}
/**
* Perform indexing of the added points.
*/
finish() {
const t2 = this.h >> 1;
if (t2 !== this.numItems) throw new Error(`Added ${t2} items when expected ${this.numItems}.`);
return a(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0), this.o = true, this;
}
/**
* Search the index for items within a given bounding box.
* @param {number} minX
* @param {number} minY
* @param {number} maxX
* @param {number} maxY
* @returns {number[]} An array of indices correponding to the found items.
*/
range(t2, i2, e2, s2) {
if (!this.o) throw new Error("Data not yet indexed - call index.finish().");
const { ids: r2, coords: n2, nodeSize: h2 } = this, o2 = [0, r2.length - 1, 0], l2 = [];
for (; o2.length; ) {
const a2 = o2.pop() || 0, u2 = o2.pop() || 0, c2 = o2.pop() || 0;
if (u2 - c2 <= h2) {
for (let h3 = c2; h3 <= u2; h3++) {
const o3 = n2[2 * h3], a3 = n2[2 * h3 + 1];
o3 >= t2 && o3 <= e2 && a3 >= i2 && a3 <= s2 && l2.push(r2[h3]);
}
continue;
}
const f2 = c2 + u2 >> 1, d2 = n2[2 * f2], p2 = n2[2 * f2 + 1];
d2 >= t2 && d2 <= e2 && p2 >= i2 && p2 <= s2 && l2.push(r2[f2]), // queue search in halves that intersect the query
(0 === a2 ? t2 <= d2 : i2 <= p2) && (o2.push(c2), o2.push(f2 - 1), o2.push(1 - a2)), (0 === a2 ? e2 >= d2 : s2 >= p2) && (o2.push(f2 + 1), o2.push(u2), o2.push(1 - a2));
}
return l2;
}
/**
* Search the index for items within a given radius.
* @param {number} qx
* @param {number} qy
* @param {number} r Query radius.
* @returns {number[]} An array of indices correponding to the found items.
*/
within(t2, i2, e2) {
if (!this.o) throw new Error("Data not yet indexed - call index.finish().");
const { ids: s2, coords: r2, nodeSize: n2 } = this, h2 = [0, s2.length - 1, 0], o2 = [], l2 = e2 * e2;
for (; h2.length; ) {
const a2 = h2.pop() || 0, u2 = h2.pop() || 0, c2 = h2.pop() || 0;
if (u2 - c2 <= n2) {
for (let e3 = c2; e3 <= u2; e3++) d(r2[2 * e3], r2[2 * e3 + 1], t2, i2) <= l2 && o2.push(s2[e3]);
continue;
}
const f2 = c2 + u2 >> 1, p2 = r2[2 * f2], y2 = r2[2 * f2 + 1];
d(p2, y2, t2, i2) <= l2 && o2.push(s2[f2]), // queue search in halves that intersect the query
(0 === a2 ? t2 - e2 <= p2 : i2 - e2 <= y2) && (h2.push(c2), h2.push(f2 - 1), h2.push(1 - a2)), (0 === a2 ? t2 + e2 >= p2 : i2 + e2 >= y2) && (h2.push(f2 + 1), h2.push(u2), h2.push(1 - a2));
}
return o2;
}
}
function a(t2, i2, e2, s2, r2, n2) {
if (r2 - s2 <= e2) return;
const h2 = s2 + r2 >> 1;
u(t2, i2, h2, s2, r2, n2), // recursively kd-sort first half and second half on the opposite axis
a(t2, i2, e2, s2, h2 - 1, 1 - n2), a(t2, i2, e2, h2 + 1, r2, 1 - n2);
}
function u(t2, i2, e2, s2, r2, n2) {
for (; r2 > s2; ) {
if (r2 - s2 > 600) {
const h3 = r2 - s2 + 1, o3 = e2 - s2 + 1, l3 = Math.log(h3), a2 = 0.5 * Math.exp(2 * l3 / 3), c2 = 0.5 * Math.sqrt(l3 * a2 * (h3 - a2) / h3) * (o3 - h3 / 2 < 0 ? -1 : 1);
u(t2, i2, e2, Math.max(s2, Math.floor(e2 - o3 * a2 / h3 + c2)), Math.min(r2, Math.floor(e2 + (h3 - o3) * a2 / h3 + c2)), n2);
}
const h2 = i2[2 * e2 + n2];
let o2 = s2, l2 = r2;
for (c(t2, i2, s2, e2), i2[2 * r2 + n2] > h2 && c(t2, i2, s2, r2); o2 < l2; ) {
for (c(t2, i2, o2, l2), o2++, l2--; i2[2 * o2 + n2] < h2; ) o2++;
for (; i2[2 * l2 + n2] > h2; ) l2--;
}
i2[2 * s2 + n2] === h2 ? c(t2, i2, s2, l2) : (l2++, c(t2, i2, l2, r2)), l2 <= e2 && (s2 = l2 + 1), e2 <= l2 && (r2 = l2 - 1);
}
}
function c(t2, i2, e2, s2) {
f(t2, e2, s2), f(i2, 2 * e2, 2 * s2), f(i2, 2 * e2 + 1, 2 * s2 + 1);
}
function f(t2, i2, e2) {
const s2 = t2[i2];
t2[i2] = t2[e2], t2[e2] = s2;
}
function d(t2, i2, e2, s2) {
const r2 = t2 - e2, n2 = i2 - s2;
return r2 * r2 + n2 * n2;
}
function p(t2) {
return !isNaN(t2) && null !== t2 && !Array.isArray(t2);
}
function y(t2, i2, e2) {
if (null !== t2)
for (var s2, r2, n2, h2, o2, l2, a2, u2, c2 = 0, f2 = 0, d2 = t2.type, p2 = "FeatureCollection" === d2, m2 = "Feature" === d2, w2 = p2 ? t2.features.length : 1, v2 = 0; v2 < w2; v2++) {
o2 = (u2 = !!(a2 = p2 ? t2.features[v2].geometry : m2 ? t2.geometry : t2) && "GeometryCollection" === a2.type) ? a2.geometries.length : 1;
for (var g2 = 0; g2 < o2; g2++) {
var M2 = 0, b2 = 0;
if (null !== (h2 = u2 ? a2.geometries[g2] : a2)) {
l2 = h2.coordinates;
var x2 = h2.type;
switch (c2 = !e2 || "Polygon" !== x2 && "MultiPolygon" !== x2 ? 0 : 1, x2) {
case null:
break;
case "Point":
if (false === i2(l2, f2, v2, M2, b2)) return false;
f2++, M2++;
break;
case "LineString":
case "MultiPoint":
for (s2 = 0; s2 < l2.length; s2++) {
if (false === i2(l2[s2], f2, v2, M2, b2)) return false;
f2++, "MultiPoint" === x2 && M2++;
}
"LineString" === x2 && M2++;
break;
case "Polygon":
case "MultiLineString":
for (s2 = 0; s2 < l2.length; s2++) {
for (r2 = 0; r2 < l2[s2].length - c2; r2++) {
if (false === i2(l2[s2][r2], f2, v2, M2, b2)) return false;
f2++;
}
"MultiLineString" === x2 && M2++, "Polygon" === x2 && b2++;
}
"Polygon" === x2 && M2++;
break;
case "MultiPolygon":
for (s2 = 0; s2 < l2.length; s2++) {
for (b2 = 0, r2 = 0; r2 < l2[s2].length; r2++) {
for (n2 = 0; n2 < l2[s2][r2].length - c2; n2++) {
if (false === i2(l2[s2][r2][n2], f2, v2, M2, b2)) return false;
f2++;
}
b2++;
}
M2++;
}
break;
case "GeometryCollection":
for (s2 = 0; s2 < h2.geometries.length; s2++) if (false === y(h2.geometries[s2], i2, e2)) return false;
break;
default:
throw new Error("Unknown Geometry Type");
}
}
}
}
}
function m(t2) {
var i2 = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
return y(t2, (function(t3) {
i2[0] > t3[0] && (i2[0] = t3[0]), i2[1] > t3[1] && (i2[1] = t3[1]), i2[2] < t3[0] && (i2[2] = t3[0]), i2[3] < t3[1] && (i2[3] = t3[1]);
})), i2;
}
function w(t2, i2, e2) {
if (void 0 === e2 && (e2 = {}), !t2) throw new Error("point is required");
if (!i2) throw new Error("polygon is required");
var s2, r2 = (
/**
* Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
*
* @name getCoord
* @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
* @returns {Array<number>} coordinates
* @example
* var pt = turf.point([10, 10]);
*
* var coord = turf.getCoord(pt);
* //= [10, 10]
*/
(function(t3) {
if (!t3) throw new Error("coord is required");
if (!Array.isArray(t3)) {
if ("Feature" === t3.type && null !== t3.geometry && "Point" === t3.geometry.type) return t3.geometry.coordinates;
if ("Point" === t3.type) return t3.coordinates;
}
if (Array.isArray(t3) && t3.length >= 2 && !Array.isArray(t3[0]) && !Array.isArray(t3[1])) return t3;
throw new Error("coord must be GeoJSON Point or an Array of numbers");
})(t2)
), n2 = "Feature" === (s2 = i2).type ? s2.geometry : s2, h2 = n2.type, o2 = i2.bbox, l2 = n2.coordinates;
if (o2 && false === /**
* inBBox
*
* @private
* @param {Position} pt point [x,y]
* @param {BBox} bbox BBox [west, south, east, north]
* @returns {boolean} true/false if point is inside BBox
*/
(function(t3, i3) {
return i3[0] <= t3[0] && i3[1] <= t3[1] && i3[2] >= t3[0] && i3[3] >= t3[1];
})(r2, o2)) return false;
"Polygon" === h2 && (l2 = [l2]);
for (var a2 = false, u2 = 0; u2 < l2.length && !a2; u2++)
if (v(r2, l2[u2][0], e2.ignoreBoundary)) {
for (var c2 = false, f2 = 1; f2 < l2[u2].length && !c2; ) v(r2, l2[u2][f2], !e2.ignoreBoundary) && (c2 = true), f2++;
c2 || (a2 = true);
}
return a2;
}
function v(t2, i2, e2) {
var s2 = false;
i2[0][0] === i2[i2.length - 1][0] && i2[0][1] === i2[i2.length - 1][1] && (i2 = i2.slice(0, i2.length - 1));
for (var r2 = 0, n2 = i2.length - 1; r2 < i2.length; n2 = r2++) {
var h2 = i2[r2][0], o2 = i2[r2][1], l2 = i2[n2][0], a2 = i2[n2][1];
if (t2[1] * (h2 - l2) + o2 * (l2 - t2[0]) + a2 * (t2[0] - h2) == 0 && (h2 - t2[0]) * (l2 - t2[0]) <= 0 && (o2 - t2[1]) * (a2 - t2[1]) <= 0) return !e2;
o2 > t2[1] != a2 > t2[1] && t2[0] < (l2 - h2) * (t2[1] - o2) / (a2 - o2) + h2 && (s2 = !s2);
}
return s2;
}
m.default = m;
const g = (t2, i2, e2) => {
let s2, r2, n2, h2 = null, o2 = 0;
e2 || (e2 = {});
let l2 = function() {
o2 = false === e2.leading ? 0 : Date.now(), h2 = null, n2 = t2.apply(r2, s2), h2 || (r2 = s2 = null);
};
return function() {
let a2 = Date.now();
o2 || false !== e2.leading || (o2 = a2);
let u2 = i2 - (a2 - o2);
return r2 = this, s2 = arguments, u2 <= 0 || u2 > i2 ? (h2 && (clearTimeout(h2), h2 = null), o2 = a2, n2 = t2.apply(r2, s2), h2 || (r2 = s2 = null)) : h2 || false === e2.trailing || (h2 = setTimeout(l2, u2)), n2;
};
}, M = Math.fround || (b = new Float32Array(1), (t2) => (b[0] = +t2, b[0]));
var b;
const x = (t2, i2, e2) => t2.reduce(((t3, s2, r2) => {
let n2 = i2(s2);
return n2 = null == n2 || "" === n2 ? "undefined" : n2, t3[n2] || (t3[n2] = []), e2.type && e2.zoom && (s2["_inner_" + e2.type + "_" + e2.zoom] = n2), s2.id = r2, t3[n2].push(s2), t3;
}), {}), A = (t2) => ({ fence: true, bbox: m(t2), center: L(t2) }), E = (t2, i2) => m(i2 ? { type: "FeatureCollection", features: [{ type: "Feature", properties: {}, geometry: { type: "Polygon", coordinates: [t2] } }] } : { type: "FeatureCollection", features: t2 }), L = (t2) => (function(t3, i2) {
void 0 === i2 && (i2 = {});
var e2 = 0, s2 = 0, r2 = 0;
return y(t3, (function(t4) {
e2 += t4[0], s2 += t4[1], r2++;
}), true), /**
* Creates a {@link Point} {@link Feature} from a Position.
*
* @name point
* @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
* @param {Object} [properties={}] an Object of key-value pairs to add as properties
* @param {Object} [options={}] Optional Parameters
* @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
* @param {string|number} [options.id] Identifier associated with the Feature
* @returns {Feature<Point>} a Point feature
* @example
* var point = turf.point([-75.343, 39.984]);
*
* //=point
*/
(function(t4, i3, e3) {
if (void 0 === e3 && (e3 = {}), !t4) throw new Error("coordinates is required");
if (!Array.isArray(t4)) throw new Error("coordinates must be an Array");
if (t4.length < 2) throw new Error("coordinates must be at least 2 numbers long");
if (!p(t4[0]) || !p(t4[1])) throw new Error("coordinates must contain numbers");
return (function(t5, i4, e4) {
void 0 === e4 && (e4 = {});
var s3 = { type: "Feature" };
return (0 === e4.id || e4.id) && (s3.id = e4.id), e4.bbox && (s3.bbox = e4.bbox), s3.properties = i4 || {}, s3.geometry = t5, s3;
})({ type: "Point", coordinates: t4 }, i3, e3);
})([e2 / r2, s2 / r2], i2.properties);
})(t2).geometry.coordinates, C = (t2) => {
if (!t2 || !Array.isArray(t2) || t2.length < 2) return [];
let i2 = [t2[0], t2[1]];
for (let e2 = 2; e2 < t2.length - 1; e2 += 2) t2[e2] !== i2[e2 - 2] && t2[e2 + 1] !== i2[e2 - 1] && i2.push(t2[e2], t2[e2 + 1]);
return i2;
}, k = (t2) => t2 / 360 + 0.5, _ = (t2) => {
const i2 = Math.sin(t2 * Math.PI / 180), e2 = 0.5 - 0.25 * Math.log((1 + i2) / (1 - i2)) / Math.PI;
return e2 < 0 ? 0 : e2 > 1 ? 1 : e2;
};
class T {
constructor() {
}
}
var G;
!(function(t2) {
t2[t2.NONE = 0] = "NONE", t2[t2.INNER = 1] = "INNER", t2[t2.OUT = 2] = "OUT", t2[t2.ALL = 3] = "ALL";
})(G || (G = {}));
class B {
constructor(t2, e2 = false) {
this.trees = {}, this.nodeSize = 64, this.isSort = true, this.splitChar = "*.*", this.OFFSET_ZOOM = 2, this.OFFSET_ID = 3, this.OFFSET_PARENT = 4, this.OFFSET_NUM = 5, this.OFFSET_PROP = 6, this.ZOOM_BITS = 5, this.mapping = /* @__PURE__ */ new Map(), this.geo_refs = /* @__PURE__ */ new Map(), this.key_refs = /* @__PURE__ */ new Map(), this.cluster_geo_refs = /* @__PURE__ */ new Map(), this.own = t2, this.showLog = e2, this.reduceType = this.isClusterReduce(), this.stride = this.reduceType !== G.NONE ? 7 : 6, this.reduceType & G.INNER && (this.innerReduce = (t3, i2) => {
var e3, s2, r2;
this.weightKey && (t3.weight_list || (t3.weight_list = [null !== (e3 = t3.weight) && void 0 !== e3 ? e3 : 1]), t3.weight_list.push(null !== (s2 = null == i2 ? void 0 : i2.weight) && void 0 !== s2 ? s2 : 1)), this.typeKey && (t3.divide_type = null !== (r2 = null == i2 ? void 0 : i2.divide_type) && void 0 !== r2 ? r2 : "unknown");
}, this.innerMap = (t3) => {
var i2, e3, s2, r2;
let n2 = {};
return this.weightKey && ("function" == typeof this.weightKey ? n2.weight = null !== (i2 = this.weightKey(t3)) && void 0 !== i2 ? i2 : 1 : n2.weight = t3 ? null !== (e3 = t3[this.weightKey]) && void 0 !== e3 ? e3 : 1 : null), this.typeKey && ("function" == typeof this.typeKey ? n2.divide_type = null !== (s2 = this.typeKey(t3)) && void 0 !== s2 ? s2 : "unknown" : n2.divide_type = t3 ? null !== (r2 = t3[this.typeKey]) && void 0 !== r2 ? r2 : "unknown" : null), n2;
}), this.createZoomMapping(), this.own.on(i.DESTROY, (() => {
this.reset(), this.mapping.clear();
}));
}
isClusterReduce() {
let t2 = this.own.getOptions().clusterPointWeight, i2 = this.own.getOptions().clusterPointType;
return t2 || i2 ? (t2 && (this.weightKey = t2), i2 && (this.typeKey = i2), this.own.getOptions().clusterReduce ? G.ALL : G.INNER) : this.own.getOptions().clusterReduce ? G.OUT : G.NONE;
}
createZoomMapping() {
let t2 = this.own.getOptions().clusterType;
t2 && 0 !== t2.length && (t2.forEach(((t3) => {
let [i2, s2, r2, n2, h2] = t3;
if (s2 = null != s2 ? s2 : this.own.getOptions().clusterMaxZoom, r2 === e.GEO_FENCE || r2 === e.ATTR_REF) this.mapping.set(i2, [null != h2 ? h2 : s2, r2, n2]);
else if (h2) this.mapping.set(i2, [h2, e.DIS_PIXEL, n2]);
else for (var o2 = i2; o2 <= s2; o2++) this.mapping.set(o2, [o2, e.DIS_PIXEL, n2]);
})), this.showLog);
}
getClusterType(t2) {
let i2, s2 = e.DIS_PIXEL;
for (let [r2, n2] of [...this.mapping.entries()].reverse()) if (r2 <= t2) {
s2 = n2[1], i2 = s2 === e.ATTR_REF && n2[2] instanceof Array ? n2[2][n2[2].length - 1] : n2[2];
break;
}
return { type: s2, name: i2 };
}
getClusterZoom(t2) {
let i2 = this.l(t2);
for (let [e2] of [...this.mapping.entries()].reverse()) if (e2 <= t2) {
i2 = e2;
break;
}
return i2;
}
getClusterTree(t2) {
let i2 = this.getClusterZoom(t2);
const { clusterMaxZoom: e2 = 21 } = this.own.getOptions();
return i2 < t2 && e2 + 1 === t2 && (i2 = e2 + 1), this.trees[i2];
}
createClusters(t2) {
this.reset(), this.points = t2.filter(((t3) => {
if (t3.geometry) {
const [i3, e2] = t3.geometry.coordinates;
if (!isNaN(i3) && !isNaN(e2) && i3 >= -180 && i3 <= 180 && e2 >= -90 && e2 <= 90) return true;
}
return false;
}));
const { clusterMinZoom: i2 = 3, clusterMaxZoom: s2 = 21 } = this.own.getOptions();
t2.length, this.showLog;
const r2 = [];
for (let t3 = 0; t3 < this.points.length; t3++) {
const i3 = this.points[t3];
if (!i3.geometry) continue;
const [e2, s3] = i3.geometry.coordinates, n3 = M(e2), h2 = M(s3);
r2.push(n3, h2, 1 / 0, t3, -1, 1), this.reduceType !== G.NONE && r2.push(-1);
}
let n2 = this.trees[s2 + 1] = this.u(new Float32Array(r2));
for (let t3 = s2; t3 >= i2; t3--) {
Date.now();
const i3 = this.getClusterZoom(t3);
if (this.mapping.has(i3)) {
if (this.trees[i3]) continue;
let t4, [s3, r3, h2] = this.mapping.get(i3);
switch (r3) {
case e.GEO_FENCE:
t4 = this.p(s3, h2);
break;
case e.ATTR_REF:
t4 = this.m(s3, h2);
break;
default:
t4 = this.v(n2, s3, h2);
}
n2 = this.trees[i3] = this.u(t4);
} else n2 = this.trees[i3] = this.u(this.v(n2, i3));
this.showLog;
}
this.showLog;
}
u(t2) {
const i2 = new l(t2.length / this.stride | 0, this.nodeSize, Float32Array);
for (let e2 = 0; e2 < t2.length; e2 += this.stride) i2.add(k(t2[e2]), _(t2[e2 + 1]));
return i2.finish(), i2.data = t2, i2;
}
m(t2, i2) {
let s2 = x(this.points, ((t3) => {
if (!t3.properties) return null;
let s3 = null;
if (i2 instanceof Array ? i2.forEach(((i3) => {
var e2;
(null === (e2 = t3.properties) || void 0 === e2 ? void 0 : e2.hasOwnProperty(i3)) && (null === s3 ? s3 = t3.properties[i3] : s3 += this.splitChar + t3.properties[i3]);
})) : s3 = t3.properties[i2], this.own.getOptions().clusterDictionary && s3 && !this.geo_refs.has(s3)) {
let t4 = this.own.getOptions().clusterDictionary(e.ATTR_REF, s3);
t4 && t4.point && this.geo_refs.set(s3, t4);
}
return s3;
}), { zoom: t2, type: e.ATTR_REF });
return this.showLog, this.M(e.ATTR_REF, s2, t2);
}
p(t2, i2) {
let s2 = /* @__PURE__ */ new Map();
if (this.own.getOptions().clusterDictionary) {
let t3 = i2;
t3 instanceof Array || (t3 = [t3]), t3.forEach(((t4) => {
if (this.geo_refs.has(t4)) s2.set(t4, this.geo_refs.get(t4));
else {
this.showLog;
let i3 = this.own.getOptions().clusterDictionary(e.GEO_FENCE, t4);
i3 && i3.region && (i3.point || (i3.point = L(i3.region)), this.geo_refs.set(t4, i3), s2.set(t4, i3));
}
}));
}
let r2 = x(this.points, ((t3) => ((t4, i3, e2) => {
let s3 = null;
for (let [e3, r3] of t4) if (w(i3, { type: "Feature", geometry: { type: "Polygon", coordinates: [r3.region] } })) {
s3 = e3;
break;
}
return s3;
})(s2, t3)), { zoom: t2, type: e.GEO_FENCE });
return this.showLog, this.M(e.GEO_FENCE, r2, t2);
}
M(t2, i2, s2) {
let r2 = [];
const { clusterMinPoints: n2 = 3, clusterReduce: h2 } = this.own.getOptions();
for (const o2 in i2) if (i2.hasOwnProperty(o2)) {
let l2 = i2[o2];
if ("undefined" === o2 || l2.length < n2) l2.forEach(((t3) => {
var i3;
const [e2, s3] = t3.geometry.coordinates, n3 = e2, h3 = s3;
r2.push(n3, h3, 1 / 0, +(null !== (i3 = t3.id) && void 0 !== i3 ? i3 : 0), -1, 1), this.reduceType !== G.NONE && r2.push(-1);
}));
else {
let i3, a2 = -1;
l2.forEach(((t3, e2) => {
if (this.reduceType !== G.NONE) {
let s3 = {};
if (this.reduceType & G.INNER && (s3 = this.innerMap(t3.properties)), h2) {
let i4 = this.own.getOptions().clusterMap(t3.properties);
Object.assign(s3, i4);
}
i3 ? (this.reduceType & G.INNER && (this.innerReduce(i3, Object.assign({}, s3)), e2 === l2.length - 1 && this.A(i3)), h2 && h2(i3, Object.assign({}, s3))) : (i3 = Object.assign({}, s3), a2 = this.clusterProps.length, this.clusterProps.push(i3));
}
}));
let u2 = (l2[0].id << this.ZOOM_BITS) + (s2 + 1) + this.points.length, c2 = o2.split(this.splitChar);
if (this.key_refs.set(u2, c2[c2.length - 1]), this.geo_refs.has(o2)) {
let i4 = this.geo_refs.get(o2), s3 = i4.point;
r2.push(s3[0], s3[1], 1 / 0, u2, -1, l2.length), t2 === e.GEO_FENCE ? this.cluster_geo_refs.set(u2, { bbox: E(i4.region, true) }) : this.cluster_geo_refs.set(u2, { bbox: E(l2, false) });
} else {
let { fence: t3, bbox: i4, center: e2 } = A({ type: "FeatureCollection", features: l2 });
C(i4).length <= 2 || i4[0] === 1 / 0 || !t3 ? (n2 > 1 && (u2 = l2[0].id), r2.push(e2[0], e2[1], 1 / 0, u2, -1, 1)) : r2.push(e2[0], e2[1], 1 / 0, u2, -1, l2.length), this.cluster_geo_refs.set(u2, { bbox: i4 });
}
this.reduceType !== G.NONE && r2.push(a2);
}
}
return r2;
}
v(t2, i2, e2) {
var s2, r2, n2;
const { clusterRadius: h2 = 60, tileSize: o2 = 256, clusterMinPoints: l2 = 3, clusterReduce: a2 } = this.own.getOptions(), u2 = (void 0 === e2 ? h2 : e2) / (o2 * Math.pow(2, i2 - 1)), c2 = t2.data, f2 = [], d2 = this.stride;
for (let e3 = 0; e3 < c2.length; e3 += d2) {
if (c2[e3 + this.OFFSET_ZOOM] <= i2) continue;
c2[e3 + this.OFFSET_ZOOM] = i2;
const h3 = c2[e3], o3 = c2[e3 + 1];
let p2 = t2.within(k(c2[e3]), _(c2[e3 + 1]), u2);
if (this.showLog, this.typeKey) {
let t3 = null !== (r2 = null === (s2 = this.L(c2, e3)) || void 0 === s2 ? void 0 : s2.divide_type) && void 0 !== r2 ? r2 : "unknown";
p2 = p2.filter(((i3) => {
var e4, s3;
const r3 = i3 * d2;
let n3 = null !== (s3 = null === (e4 = this.L(c2, r3)) || void 0 === e4 ? void 0 : e4.divide_type) && void 0 !== s3 ? s3 : "unknown";
return n3 != t3 && this.showLog, n3 === t3;
}));
}
this.showLog;
const y2 = c2[e3 + this.OFFSET_NUM];
let m2 = y2;
for (const t3 of p2) {
const e4 = t3 * d2;
c2[e4 + this.OFFSET_ZOOM] > i2 && (m2 += c2[e4 + this.OFFSET_NUM]);
}
if (m2 > y2 && m2 >= l2) {
let t3, s3 = -1, r3 = [[h3, o3]], l3 = [y2];
this.reduceType !== G.NONE && (t3 || (t3 = this.L(c2, e3, true), s3 = this.clusterProps.length, this.clusterProps.push(t3)));
const u3 = (e3 / d2 << this.ZOOM_BITS) + (i2 + 1) + this.points.length;
for (let e4 = 0; e4 < p2.length; ++e4) {
const s4 = p2[e4] * d2;
if (c2[s4 + this.OFFSET_ZOOM] <= i2) continue;
let n3;
c2[s4 + this.OFFSET_ZOOM] = i2, this.reduceType !== G.NONE && t3 && (n3 = this.L(c2, s4), this.reduceType & G.INNER && this.innerReduce(t3, n3), a2 && a2(t3, n3));
let h4 = c2[s4 + this.OFFSET_NUM];
l3.push(h4), r3.push([c2[s4], c2[s4 + 1]]), c2[s4 + this.OFFSET_PARENT] = u3;
}
c2[e3 + this.OFFSET_PARENT] = u3, this.cluster_geo_refs.set(u3, { bbox: E(r3, true) });
let [w2, v2] = this.C(r3, l3, null !== (n2 = null == t3 ? void 0 : t3.weight_list) && void 0 !== n2 ? n2 : []);
f2.push(w2, v2, 1 / 0, u3, -1, m2), this.reduceType & G.INNER && t3 && this.weightKey && this.A(t3), this.reduceType !== G.NONE && f2.push(s3);
} else {
for (let t3 = 0; t3 < d2; t3++) f2.push(c2[e3 + t3]);
if (m2 > 1) for (const t3 of p2) {
const e4 = t3 * d2;
if (!(c2[e4 + this.OFFSET_ZOOM] <= i2)) {
c2[e4 + this.OFFSET_ZOOM] = i2;
for (let t4 = 0; t4 < d2; t4++) f2.push(c2[e4 + t4]);
}
}
}
}
return f2;
}
C(t2, i2, e2) {
let s2 = 0, n2 = 0, h2 = 0, o2 = this.own.getOptions().clusterPointLocationType;
if (0 === e2.length) o2 = r.COUNT_AVERAGE;
else if (t2.length !== e2.length) throw new Error("weight_list length not equal clusterPoints length");
switch (o2) {
case r.WEIGHT_MAX:
let o3 = e2.reduce(((t3, i3, s3) => i3 > e2[t3] ? s3 : t3), 0);
s2 = t2[o3][0], n2 = t2[o3][1];
break;
case r.WEIGHT_AVERAGE:
h2 = 0, e2.forEach(((t3) => {
h2 += t3;
}));
for (let i3 = 0; i3 < t2.length; i3++) s2 += t2[i3][0] * e2[i3], n2 += t2[i3][1] * e2[i3];
s2 /= h2, n2 /= h2;
break;
case r.COUNT_AVERAGE:
h2 = 0, i2.forEach(((t3) => {
h2 += t3;
}));
for (let e3 = 0; e3 < t2.length; e3++) s2 += t2[e3][0] * i2[e3], n2 += t2[e3][1] * i2[e3];
s2 /= h2, n2 /= h2;
break;
default:
for (let i3 = 0; i3 < t2.length; i3++) s2 += t2[i3][0], n2 += t2[i3][1];
s2 /= t2.length, n2 /= t2.length;
}
return [s2, n2];
}
A(t2) {
let i2 = 0;
switch (this.own.getOptions().clusterPointWeightType) {
case s.AVERAGE:
t2.weight_list.forEach(((t3) => {
i2 += t3;
})), i2 /= t2.weight_list.length;
break;
case s.MAX:
t2.weight_list.forEach(((t3) => {
i2 < t3 && (i2 = t3);
}));
break;
case s.SUM:
t2.weight_list.forEach(((t3) => {
i2 += t3;
}));
break;
default:
i2 = 1;
}
delete t2.weight_list, t2.weight = i2;
}
k(t2) {
return t2 - this.points.length >> this.ZOOM_BITS;
}
_(t2) {
return (t2 - this.points.length) % 32;
}
L(t2, i2, e2) {
if (t2[i2 + this.OFFSET_NUM] > 1) {
const s3 = this.clusterProps[t2[i2 + this.OFFSET_PROP]];
return e2 ? Object.assign({}, s3) : s3;
}
const s2 = this.points[t2[i2 + this.OFFSET_ID]].properties;
let r2 = {};
if (this.reduceType & G.INNER && (r2 = this.innerMap(s2)), this.own.getOptions().clusterReduce) {
let t3 = this.own.getOptions().clusterMap(s2);
Object.assign(r2, t3);
}
return e2 && r2 === s2 ? Object.assign({}, r2) : r2;
}
l(t2) {
var i2, e2;
let s2 = this.own.getOptions();
return Math.max(null !== (i2 = s2.clusterMinZoom) && void 0 !== i2 ? i2 : 3, Math.min(Math.floor(+t2), (null !== (e2 = s2.clusterMaxZoom) && void 0 !== e2 ? e2 : 21) + 1));
}
getClusters(t2, i2) {
var s2;
if (this.isIllegal(t2)) return [[], []];
let r2 = ((i2[0] + 180) % 360 + 360) % 360 - 180;
const n2 = Math.max(-90, Math.min(90, i2[1]));
let h2 = 180 === i2[2] ? 180 : ((i2[2] + 180) % 360 + 360) % 360 - 180;
const o2 = Math.max(-90, Math.min(90, i2[3]));
if (i2[2] - i2[0] >= 360) r2 = -180, h2 = 180;
else if (r2 > h2) {
const i3 = this.getClusters(t2, [r2, n2, 180, o2]), e2 = this.getClusters(t2, [-180, n2, h2, o2]);
return [[...i3[0], ...e2[0]], [...i3[1], ...e2[1]]];
}
let l2 = this.getClusterZoom(t2);
const a2 = this.getClusterTree(t2);
if (!a2) return [[], []];
const { type: u2, name: c2 } = this.getClusterType(t2), f2 = a2.range(k(r2), _(o2), k(h2), _(n2)), d2 = a2.data, p2 = [], y2 = [];
this.showLog;
for (const t3 of f2) {
const i3 = this.stride * t3;
if (this.showLog, d2[i3 + this.OFFSET_NUM] >= this.own.getOptions().clusterMinPoints) {
let r3 = this.getClusterJSON(d2, i3, this.clusterProps);
r3.properties || (r3.properties = {}), r3.properties.listChildren = this.getLeaves(d2[i3 + this.OFFSET_ID], [], null !== (s2 = this.own.getOptions().clusterListChildren) && void 0 !== s2 ? s2 : -1), r3.properties.clusterIndex = (t3 << this.ZOOM_BITS) + l2, r3.properties.allCount = this.points.length, r3.properties.type = u2, u2 !== e.GEO_FENCE && u2 !== e.ATTR_REF || this.key_refs.has(d2[i3 + this.OFFSET_ID]) && (r3.properties.belongKey = c2, r3.properties.belongValue = this.key_refs.get(d2[i3 + this.OFFSET_ID])), p2.push(r3);
} else {
let t4 = d2[i3 + this.OFFSET_ID], e2 = this.points[t4];
e2.id = t4, e2.properties ? e2.properties.listChildren = [] : e2.properties = { listChildren: [] }, e2.properties ? e2.properties.clusterId = t4 : e2.properties = { clusterId: t4 }, e2.properties ? e2.properties.allCount = this.points.length : e2.properties = { allCount: this.points.length }, e2.properties ? e2.properties.parentId = d2[i3 + this.OFFSET_PARENT] : e2.properties = { parentId: d2[i3 + this.OFFSET_PARENT] }, y2.push(e2);
}
}
return this.isSort && p2.sort(((t3, i3) => {
var e2, s3;
return (null === (e2 = t3.properties) || void 0 === e2 ? void 0 : e2.pointCount) - (null === (s3 = i3.properties) || void 0 === s3 ? void 0 : s3.pointCount);
})), [y2, p2];
}
getElementById(t2, i2, s2) {
let r2 = s2 ? i2 >> this.ZOOM_BITS : i2, n2 = new T();
n2.id = t2, n2.index = r2;
let h2 = s2 ? i2 & (1 << this.ZOOM_BITS) - 1 : this._(t2) - 1, { type: o2, name: l2 } = this.getClusterType(h2);
if (n2.type = o2, t2 <= this.points.length) n2.isCluster = false, n2.properties = this.points[t2].properties, n2.latLng = this.points[t2].geometry.coordinates;
else {
n2.isCluster = true;
let i3 = this.getClusterTree(h2), s3 = i3.data;
if (i3) {
let i4 = r2 * this.stride;
this.showLog, n2.latLng = [s3[i4], s3[i4 + 1]], n2.pointCount = s3[i4 + this.OFFSET_NUM], n2.parentId = s3[i4 + this.OFFSET_PARENT], o2 !== e.GEO_FENCE && o2 !== e.ATTR_REF || this.key_refs.has(t2) && (n2.belongKey = l2, n2.belongValue = this.key_refs.get(t2)), this.reduceType !== G.NONE && (n2.reduces = this.clusterProps[s3[i4 + this.OFFSET_PROP]]);
const h3 = this.getLeaves(t2, [], 1 / 0);
if (h3 && h3.length > 0) {
const i5 = h3.map(((t3) => t3.latLng));
i5.length > 0 ? (n2.bbox = E(i5, true), this.showLog) : this.cluster_geo_refs.has(t2) && (n2.bbox = this.cluster_geo_refs.get(t2).bbox);
} else this.cluster_geo_refs.has(t2) && (n2.bbox = this.cluster_geo_refs.get(t2).bbox);
}
}
return !n2.bbox && this.cluster_geo_refs.has(t2) && (n2.bbox = this.cluster_geo_refs.get(t2).bbox), this.showLog, n2;
}
getUnDistanceBrothers(t2, i2, e2, s2, r2) {
let n2 = this.k(t2), h2 = this.points[n2], o2 = h2 ? h2["_inner_" + i2 + "_" + s2] : void 0, l2 = [];
return o2 && (l2 = this.points.filter(((t3) => !!t3 && t3["_inner_" + i2 + "_" + s2] === o2))), l2.slice(0, r2).map(((t3) => {
let e3 = new T();
return e3.id = t3.id, e3.index = t3.id, e3.type = i2, e3.isCluster = false, e3.properties = this.points[t3.id].properties, e3.latLng = this.points[t3.id].geometry.coordinates, e3;
}));
}
getLeaves(t2, i2 = [], s2) {
if (void 0 === s2 && (s2 = 1 / 0), s2 <= 0) return [];
i2 || (i2 = []);
let r2 = this._(t2) - 1, { type: n2, name: h2 } = this.getClusterType(r2);
if (n2 === e.GEO_FENCE || n2 === e.ATTR_REF) return this.getUnDistanceBrothers(t2, n2, h2, r2, s2);
if (t2 > this.points.length) {
let e2 = this.getClusterTree(r2 + 1), n3 = e2.data;
if (e2) for (let e3 = 0; e3 < n3.length / this.stride; e3++) {
let r3 = e3 * this.stride + this.OFFSET_ID;
if (n3[e3 * this.stride + this.OFFSET_PARENT] === t2) if (n3[r3] <= this.points.length) {
if (!(i2.length < s2)) break;
{
let t3 = this.getElementById(n3[r3], e3);
i2.push(t3);
}
} else this.getLeaves(n3[r3], i2, s2);
}
}
return i2;
}
getChildNodes(t2) {
let i2 = [];
if (t2 <= this.points.length) i2 = [];
else {
let e2 = this._(t2) - 1, s2 = this.getClusterTree(e2 + 1), r2 = s2.data;
if (s2) {
for (let e3 = 0; e3 < r2.length / this.stride; e3++) if (r2[e3 * this.stride + this.OFFSET_PARENT] === t2) {
let s3 = this.getElementById(r2[e3 * this.stride + this.OFFSET_ID], e3);
s3.parentId = t2, i2.push(s3);
}
}
}
return i2;
}
getClusterJSON(t2, i2, e2) {
return { type: "Feature", id: t2[i2 + this.OFFSET_ID], properties: this.getClusterProperties(t2, i2, e2), geometry: { type: "Point", coordinates: [t2[i2], t2[i2 + 1]] } };
}
getClusterProperties(t2, i2, e2) {
const s2 = t2[i2 + this.OFFSET_NUM], r2 = s2 >= 1e4 ? `${Math.round(s2 / 1e3)}k` : s2 >= 1e3 ? Math.round(s2 / 100) / 10 + "k" : s2;
let n2 = {};
if (this.reduceType !== G.NONE) {
const s3 = t2[i2 + this.OFFSET_PROP];
n2 = -1 === s3 ? {} : Object.assign({}, { reduces: e2[s3] });
}
return Object.assign(n2, { isCluster: true, clusterId: t2[i2 + this.OFFSET_ID], parentId: t2[i2 + this.OFFSET_PARENT], point: [t2[i2], t2[i2 + 1]], pointCount: s2, pointCountAbbrev: r2 });
}
isIllegal(t2) {
var i2, e2;
let s2 = null !== (i2 = this.own.getOptions().minZoom) && void 0 !== i2 ? i2 : 3, r2 = null !== (e2 = this.own.getOptions().maxZoom) && void 0 !== e2 ? e2 : 23;
return t2 < s2 || t2 > r2;
}
reset() {
this.points = [], this.clusterProps = [], this.trees = {}, this.geo_refs.clear(), this.key_refs.clear(), this.cluster_geo_refs.clear();
}
}
class P {
constructor(t2, i2, e2, s2) {
this.T = 600, this.G = [12, 12, 12, 12], this.own = t2, this.engine = i2, this.map = e2, this.showLog = s2;
let r2 = this.own.getOptions().fitViewMargin;
r2 && (this.G = r2), this.register(), this.createLayers();
}
register() {
this.own.getOptions().updateRealTime ? (this.T = this.own.getOptions().waitTime || 300, this.map.addEventListener("update", this.B = g(this.mapStatusChange.bind(this), this.T, { leading: true, trailing: false }))) : this.map.addEventListener("mapstatusidle_inner", this.B = this.mapStatusChange.bind(this)), this.map.addEventListener("destroy", (() => {
this.own.destroy();
})), this.own.on(i.DESTROY, (() => {
this.destroy();
}));
}
unregister() {
this.own.getOptions().updateRealTime ? this.map.removeEventListener("update", this.B) : this.map.removeEventListener("mapstatusidle_inner", this.B), this.B = () => {
};
}
mapStatusChange(t2) {
let e2 = this.map.getZoom(), s2 = this.map.getBounds(), r2 = s2.getSouthWest(), n2 = s2.getNorthEast();
this.showLog;
let h2 = this.engine.getClusters(e2, [r2.lng, r2.lat, n2.lng, n2.lat]);
this.own.fire(i.CHANGE, h2), this.own.isRender && this.update(h2);
}
update(t2) {
if (this.showLog, this.own.getOptions().isAnimation) {
if (!(this.multi_layer instanceof BMapGL.CustomHtmlLayer)) throw new Error("isAnimation is true, but renderClusterStyle is not dom type");
this.render([...t2[0], ...t2[1]], h.MULTI);
} else this.render(t2[0], h.SINGLE), this.render(t2[1], h.MULTI);
}
render(t2, i2) {
this.showLog, this.showLog;
let e2 = { type: "FeatureCollection", features: t2 }, s2 = i2 === h.MULTI ? this.multi_layer : this.single_layer;
s2 && (t2.length > 0 && (null == s2 || s2.setData(e2)), 0 === t2.length && (null == s2 || s2.clearData()));
}
createLayers() {
var t2, i2;
(null === (t2 = this.own.getOptions().renderSingleStyle) || void 0 === t2 ? void 0 : t2.type) === n.DOM ? this.single_layer = this.createLayer(h.SINGLE, n.DOM) : this.single_layer = this.createLayer(h.SINGLE, n.WEBGL), (null === (i2 = this.own.getOptions().renderClusterStyle) || void 0 === i2 ? void 0 : i2.type) === n.DOM ? this.multi_layer = this.createLayer(h.MULTI, n.DOM) : this.multi_layer = this.createLayer(h.MULTI, n.WEBGL);
}
createLayer(t2, e2) {
this.showLog;
let s2, r2 = this.own.getOptions(), o2 = t2 === h.MULTI ? r2.renderClusterStyle : r2.renderSingleStyle;
if (!o2) return;
if (e2 === n.DOM) {
let i2 = { sliceRepeat: true, minZoom: this.own.getOptions().minZoom, maxZoom: this.own.getOptions().maxZoom, zIndex: t2 === h.MULTI ? 10 : 9, nextTick: true, fixBottom: true, useTranslate: !!this.own.getOptions().isAnimation, anchors: [0.5, 0.5], displayType: "normal", enableDraggingMap: true };
this.own.getOptions().isAnimation && (i2.displayType = "cluster"), Object.assign(i2, o2.style);
const e3 = new BMapGL.CustomHtmlLayer(o2.inject, i2);
this.map.addCustomHtmlLayer(e3), s2 = e3;
} else {
let i2 = 1.2 * (r2.clusterRadius || 32), e3 = { iconObj: (t3, i3) => ({ canvas: (null == o2 ? void 0 : o2.inject)(i3), id: i3.clusterId }), sizes: [i2, i2 / 2], scale: 1, userSizes: false, anchors: [0, 0], width: i2, height: i2 / 2 };
Object.assign(e3, o2.style);
let n2 = { icon: "https://webmap0.bdimg.com/image/api/marker_red.png", sizes: [8, 8], anchors: [0, -1], userSizes: false, width: ["match", ["get", "type"], 0, 16, 8], height: ["match", ["get", "type"], 0, 16, 8] };
Object.assign(n2, o2.style);
const l3 = new BMapGL.PointIconLayer({ minZoom: this.own.getOptions().minZoom, maxZoom: this.own.getOptions().maxZoom, zIndex: t2 === h.MULTI ? 10 : 9, isTop: false, enablePicked: true, autoSelect: false, pickWidth: 30, pickHeight: 30, opacity: 1, isFlat: false, isFixed: true, style: t2 === h.MULTI ? e3 : n2 });
this.map.addNormalLayer(l3), s2 = l3;
}
s2.addEventListener("click", ((t3) => {
if (this.showLog, t3.target instanceof BMapGL.PointIconLayer && !t3.value.dataItem) return;
let e3 = this.getElementByEvent(t3);
e3.bbox && Array.isArray(e3.bbox) && e3.bbox[0] !== 1 / 0 && this.fitView(e3.bbox), this.own.fire(i.CLICK, e3);
}));
let l2 = e2 === n.DOM ? "mouseover" : "mousemove";
return s2.addEventListener(l2, ((t3) => {
if (this.showLog, t3.target instanceof BMapGL.PointIconLayer && !t3.value.dataItem) return void (this.P && (this.own.fire(i.MOUSE_OUT, this.P), this.P = null));
let e3 = this.getElementByEvent(t3);
if (t3.target instanceof BMapGL.PointIconLayer) return this.P && this.P.id === e3.id || this.own.fire(i.MOUSE_OVER, e3), void (this.P = e3);
this.own.fire(i.MOUSE_OVER, e3);
})), s2.addEventListener("mouseout", ((t3) => {
if (this.showLog, t3.target instanceof BMapGL.PointIconLayer) return;
let e3 = this.getElementByEvent(t3);
this.own.fire(i.MOUSE_OUT, e3);
})), s2;
}
getElementByEvent(t2) {
var i2, e2;
let s2, r2, n2 = [];
if (t2.target instanceof BMapGL.CustomOverlay) {
let e3 = t2.target.properties || {};
s2 = e3.clusterId, r2 = e3.clusterIndex, n2 = null !== (i2 = e3.listChildren) && void 0 !== i2 ? i2 : [];
} else {
let i3 = t2.value.dataItem.properties || {};
s2 = i3.clusterId, r2 = i3.clusterIndex, n2 = null !== (e2 = i3.listChildren) && void 0 !== e2 ? e2 : [];
}
let h2 = this.engine.getElementById(s2, r2, true);
return h2.listChildren = n2, h2.pixel = [t2.pixel.x, t2.pixel.y], h2.target = t2.target, h2;
}
clearRender() {
this.showLog, this.update([[], []]);
}
unrender() {
this.showLog, this.multi_layer instanceof BMapGL.PointIconLayer ? this.map.removeNormalLayer(this.multi_layer) : this.map.removeCustomHtmlLayer(this.multi_layer), this.single_layer instanceof BMapGL.PointIconLayer ? this.map.removeNormalLayer(this.single_layer) : this.map.removeCustomHtmlLayer(this.single_layer), this.multi_layer = void 0, this.single_layer = void 0;
}
fitView(t2) {
if (this.showLog, this.own.getOptions().fitViewOnClick) {
let i2 = this.map.getZoom(), e2 = [new BMapGL.Point(t2[0], t2[1]), new BMapGL.Point(t2[2], t2[3])], s2 = { margins: this.G, enableAnimation: true };
this.map.setViewport(e2, s2), setTimeout((() => {
i2 === this.map.getZoom() && this.map.setZoom(i2 + 1), this.mapStatusChange();
}), 300);
}
}
show() {
this.single_layer && (this.single_layer instanceof BMapGL.CustomHtmlLayer && this.single_layer.show(), this.single_layer instanceof BMapGL.PointIconLayer && this.single_layer.setVisible(true)), this.multi_layer && (this.multi_layer instanceof BMapGL.CustomHtmlLayer && this.multi_layer.show(), this.multi_layer instanceof BMapGL.PointIconLayer && this.multi_layer.setVisible(true));
}
hide() {
this.single_layer && (this.single_layer instanceof BMapGL.CustomHtmlLayer && this.single_layer.hide(), this.single_layer instanceof BMapGL.PointIconLayer && this.single_layer.setVisible(false)), this.multi_layer && (this.multi_layer instanceof BMapGL.CustomHtmlLayer && this.multi_layer.hide(), this.multi_layer instanceof BMapGL.PointIconLayer && this.multi_layer.setVisible(false));
}
getSingleLayer() {
return this.single_layer;
}
getClusterLayer() {
return this.multi_layer;
}
drawMarker(t2) {
this.map.addOverlay(new BMapGL.Marker(new BMapGL.Point(t2[0], t2[1])));
}
destroy() {
this.map && (this.unregister(), this.unrender());
}
}
return Object.freeze({ __proto__: null, get ClusterData() {
return h;
}, ClusterElement: T, get ClusterEvent() {
return i;
}, get ClusterRender() {
return n;
}, get ClusterType() {
return e;
}, get LocCountType() {
return r;
}, get PointWeightType() {
return s;
}, View: class extends t {
constructor(t2, i2) {
if (super(), this.Z = false, !t2) throw new Error("map is required");
i2 && this.verifyOptions(i2);
const e2 = { tileSize: 256, minZoom: 3, maxZoom: 21, clusterRadius: 30, clusterMinZoom: 3, clusterMaxZoom: 16, clusterMinPoints: 2, clusterListChildren: 0, clusterPointWeight: void 0, clusterPointWeightType: s.SUM, clusterPointLocationType: r.WEIGHT_AVERAGE, clusterPointType: void 0, clusterMap: (t3) => ({}), clusterReduce: void 0, clusterType: void 0, clusterDictionary: void 0, isRender: true, isAnimation: false, renderClusterStyle: { type: n.DOM, style: {}, inject: (t3) => {
var i3 = Math.pow(t3.pointCount / t3.allCount, 0.1), e3 = document.createElement("div"), s2 = 180 - 180 * i3, r2 = "hsla(" + s2 + ",100%,30%,0.7)", n2 = "hsla(" + s2 + ",100%,90%,1)", h2 = "hsla(" + s2 + ",100%,30%,1)", o2 = "hsla(" + s2 + ",100%,90%,1)";
e3.style.backgroundColor = r2;
var l2 = Math.round(25 + 30 * Math.pow(t3.pointCount / t3.allCount, 1 / 6));
return e3.style.width = e3.style.height = l2 + "px", e3.style.border = "solid 1px " + h2, e3.style.borderRadius = l2 / 2 + "px", e3.style.boxShadow = "0 0 5px " + o2, e3.innerHTML = t3.pointCount, e3.style.lineHeight = l2 + "px", e3.style.color = n2, e3.style.fontSize = "14px", e3.style.textAlign = "center", e3.style.cursor = "pointer", e3;
} }, renderSingleStyle: { type: n.WEBGL, style: {}, inject: (t3) => document.createElement("canvas") }, fitViewOnClick: true, fitViewMargin: void 0, updateRealTime: false, waitTime: 300 };
this.options = Object.assign(e2, i2), this.engine = new B(this, this.Z), this.render = new P(this, this.engine, t2, this.Z), this.isRender = this.options.isRender || false;
}
setData(t2) {
this.Z, this.engine.createClusters(t2), this.redraw();
}
getSingleLayer() {
return this.render.getSingleLayer();
}
getClusterLayer() {
return this.render.getClusterLayer();
}
getLeaves(t2, i2) {
return this.engine.getLeaves(t2, [], i2);
}
getSonNodes(t2) {
return this.engine.getChildNodes(t2);
}
redraw() {
this.render.mapStatusChange();
}
show() {
this.render.show();
}
hide() {
this.render.hide();
}
destroy() {
this.fire(i.DESTROY);
}
get isRender() {
return this.O;
}
set isRender(t2) {
this.O = t2, !t2 && this.render.clearRender();
}
getOptions() {
return this.options;
}
verifyOptions(t2) {
var i2, e2;
if (t2.minZoom && t2.minZoom < 3) throw new Error("minZoom must be greater than 3");
if (t2.maxZoom && t2.maxZoom > 23) throw new Error("maxZoom must be less than 23");
if (Math.max(null !== (i2 = t2.minZoom) && void 0 !== i2 ? i2 : 3, 3) > Math.min(null !== (e2 = t2.maxZoom) && void 0 !== e2 ? e2 : 23, 23)) throw new Error("minZoom must be less than maxZoom");
if (t2.clusterMinZoom && t2.clusterMinZoom < 3) throw new Error("clusterMinZoom must be greater than 3");
if (t2.clusterMaxZoom && t2.clusterMaxZoom > 23) throw new Error("clusterMaxZoom must be less than 23");
if (t2.clusterMinZoom && t2.clusterMaxZoom && t2.clusterMinZoom > t2.clusterMaxZoom) throw new Error("clusterMinZoom must be less than clusterMaxZoom");
if (t2.clusterType) {
if (!(t2.clusterType instanceof Array)) throw new Error("clusterType must be an array");
if (t2.clusterType.length < 1) throw new Error("clusterType must be greater than 0");
for (let i3 = 0; i3 < t2.clusterType.length; i3++) {
if (t2.clusterType[i3].length < 4) throw new Error("clusterType must be greater than 4");
if (!t2.clusterType[i3][0]) throw new Error("clusterType item startZoom must not be null");
if (t2.clusterType[i3][1] && t2.clusterType[i3][0] > t2.clusterType[i3][1]) throw new Error("clusterType item endZoom must be less than starZoom");
if (null === t2.clusterType[i3][1] && i3 < t2.clusterType.length - 1) throw new Error("clusterType item endZoom must not be null,excluding the last item endZoom");
if (i3 < t2.clusterType.length - 1 && null !== t2.clusterType[i3][1] && t2.clusterType[i3][1] > t2.clusterType[i3 + 1][0]) throw new Error("clusterType item endZoom must be less than the next startZoom");
}
}
}
}, pointTransformer: (t2, i2) => {
let e2 = [];
return t2.forEach(((t3, s2) => {
const { point: r2 = null, properties: n2 = {} } = i2(t3, s2);
r2 && e2.push({ type: "Feature", geometry: { type: "Point", coordinates: r2 }, properties: n2 });
})), e2;
} });
}));
}
});
export default require_cluster();
//# sourceMappingURL=@bmapgl-plugin_cluster.js.map
{
"version": 3,
"sources": ["../../@bmapgl-plugin/cluster/index.js"],
"sourcesContent": ["!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).Cluster=i()}(this,(function(){\"use strict\";class t{constructor(i){this.t=null!=i?i:t.guid()}getHandlers(t){let i=this.i||(this.i=new Map);return i.has(t)||i.set(t,new Map),i.get(t)}on(i,e){\"function\"==typeof e&&this.getHandlers(i).set(e,t.guid())}addEventListener(t,i){this.on(t,i)}off(t,i){var e;let s=this.getHandlers(t);i?s.has(i)&&s.delete(i):null===(e=this.i)||void 0===e||e.clear()}removeEventListener(t,i){this.off(t,i)}fire(t,i){let e=Array.from(this.getHandlers(t).entries());for(const[t]of e)t.call(this,i)}dispatchEvent(t,i){this.fire(t,i)}destroy(){var t;null===(t=this.i)||void 0===t||t.clear(),this.i=null}get hashCode(){return this.t}static guid(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,(function(t){let i=16*Math.random()|0;return(\"x\"==t?i:3&i|8).toString(16)}))}}var i,e,s,r,n,h;!function(t){t.CLICK=\"click\",t.MOUSE_OVER=\"mouseover\",t.MOUSE_OUT=\"mouseout\",t.CHANGE=\"change\",t.DESTROY=\"destroy\"}(i||(i={})),function(t){t.DIS_PIXEL=\"dis-pixel\",t.ATTR_REF=\"attribute\",t.GEO_FENCE=\"geo-fence\"}(e||(e={})),function(t){t[t.SUM=1]=\"SUM\",t[t.AVERAGE=2]=\"AVERAGE\",t[t.MAX=4]=\"MAX\"}(s||(s={})),function(t){t[t.AVERAGE=1]=\"AVERAGE\",t[t.COUNT_AVERAGE=3]=\"COUNT_AVERAGE\",t[t.WEIGHT_AVERAGE=5]=\"WEIGHT_AVERAGE\",t[t.WEIGHT_MAX=4]=\"WEIGHT_MAX\"}(r||(r={})),function(t){t.DOM=\"dom\",t.WEBGL=\"webgl\"}(n||(n={})),function(t){t.MULTI=\"multi\",t.SINGLE=\"single\"}(h||(h={}));const o=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */class l{\n/**\n * Creates an index from raw `ArrayBuffer` data.\n * @param {ArrayBuffer} data\n */\nstatic from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[i,e]=new Uint8Array(t,0,2);if(219!==i)throw new Error(\"Data does not appear to be in a KDBush format.\");const s=e>>4;if(1!==s)throw new Error(`Got v${s} data when expected v1.`);const r=o[15&e];if(!r)throw new Error(\"Unrecognized array type.\");const[n]=new Uint16Array(t,2,1),[h]=new Uint32Array(t,4,1);return new l(h,n,r,t)}\n/**\n * Creates an index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBuffer} [data] (For internal use only)\n */constructor(t,i=64,e=Float64Array,s){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+i,2),65535),this.ArrayType=e,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const r=o.indexOf(this.ArrayType),n=2*t*this.ArrayType.BYTES_PER_ELEMENT,h=t*this.IndexArrayType.BYTES_PER_ELEMENT,l=(8-h%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${e}.`);s&&s instanceof ArrayBuffer?(\n// reconstruct an index from a buffer\nthis.data=s,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+h+l,2*t),this.h=2*t,this.o=!0):(\n// initialize a new index\nthis.data=new ArrayBuffer(8+n+h+l),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+h+l,2*t),this.h=0,this.o=!1,\n// set header\nnew Uint8Array(this.data,0,2).set([219,16+r]),new Uint16Array(this.data,2,1)[0]=i,new Uint32Array(this.data,4,1)[0]=t)}\n/**\n * Add a point to the index.\n * @param {number} x\n * @param {number} y\n * @returns {number} An incremental index associated with the added item (starting from `0`).\n */add(t,i){const e=this.h>>1;return this.ids[e]=e,this.coords[this.h++]=t,this.coords[this.h++]=i,e}\n/**\n * Perform indexing of the added points.\n */finish(){const t=this.h>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);\n// kd-sort both arrays for efficient search\nreturn a(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this.o=!0,this}\n/**\n * Search the index for items within a given bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number[]} An array of indices correponding to the found items.\n */range(t,i,e,s){if(!this.o)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:r,coords:n,nodeSize:h}=this,o=[0,r.length-1,0],l=[];\n// recursively search for items in range in the kd-sorted arrays\nfor(;o.length;){const a=o.pop()||0,u=o.pop()||0,c=o.pop()||0;\n// if we reached \"tree node\", search linearly\nif(u-c<=h){for(let h=c;h<=u;h++){const o=n[2*h],a=n[2*h+1];o>=t&&o<=e&&a>=i&&a<=s&&l.push(r[h])}continue}\n// otherwise find the middle index\nconst f=c+u>>1,d=n[2*f],p=n[2*f+1];\n// include the middle item if it's in range\nd>=t&&d<=e&&p>=i&&p<=s&&l.push(r[f]),\n// queue search in halves that intersect the query\n(0===a?t<=d:i<=p)&&(o.push(c),o.push(f-1),o.push(1-a)),(0===a?e>=d:s>=p)&&(o.push(f+1),o.push(u),o.push(1-a))}return l}\n/**\n * Search the index for items within a given radius.\n * @param {number} qx\n * @param {number} qy\n * @param {number} r Query radius.\n * @returns {number[]} An array of indices correponding to the found items.\n */within(t,i,e){if(!this.o)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:s,coords:r,nodeSize:n}=this,h=[0,s.length-1,0],o=[],l=e*e;\n// recursively search for items within radius in the kd-sorted arrays\nfor(;h.length;){const a=h.pop()||0,u=h.pop()||0,c=h.pop()||0;\n// if we reached \"tree node\", search linearly\nif(u-c<=n){for(let e=c;e<=u;e++)d(r[2*e],r[2*e+1],t,i)<=l&&o.push(s[e]);continue}\n// otherwise find the middle index\nconst f=c+u>>1,p=r[2*f],y=r[2*f+1];\n// include the middle item if it's in range\nd(p,y,t,i)<=l&&o.push(s[f]),\n// queue search in halves that intersect the query\n(0===a?t-e<=p:i-e<=y)&&(h.push(c),h.push(f-1),h.push(1-a)),(0===a?t+e>=p:i+e>=y)&&(h.push(f+1),h.push(u),h.push(1-a))}return o}}\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */function a(t,i,e,s,r,n){if(r-s<=e)return;const h=s+r>>1;// middle index\n// sort ids and coords around the middle index so that the halves lie\n// either left/right or top/bottom correspondingly (taking turns)\nu(t,i,h,s,r,n),\n// recursively kd-sort first half and second half on the opposite axis\na(t,i,e,s,h-1,1-n),a(t,i,e,h+1,r,1-n)}\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */function u(t,i,e,s,r,n){for(;r>s;){if(r-s>600){const h=r-s+1,o=e-s+1,l=Math.log(h),a=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*a*(h-a)/h)*(o-h/2<0?-1:1);u(t,i,e,Math.max(s,Math.floor(e-o*a/h+c)),Math.min(r,Math.floor(e+(h-o)*a/h+c)),n)}const h=i[2*e+n];let o=s,l=r;for(c(t,i,s,e),i[2*r+n]>h&&c(t,i,s,r);o<l;){for(c(t,i,o,l),o++,l--;i[2*o+n]<h;)o++;for(;i[2*l+n]>h;)l--}i[2*s+n]===h?c(t,i,s,l):(l++,c(t,i,l,r)),l<=e&&(s=l+1),e<=l&&(r=l-1)}}\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */function c(t,i,e,s){f(t,e,s),f(i,2*e,2*s),f(i,2*e+1,2*s+1)}\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */function f(t,i,e){const s=t[i];t[i]=t[e],t[e]=s}\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */function d(t,i,e,s){const r=t-e,n=i-s;return r*r+n*n}\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction p(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */function y(t,i,e){\n// Handles null Geometry -- Skips this GeoJSON\nif(null!==t)\n// This logic may look a little weird. The reason why it is that way\n// is because it's trying to be fast. GeoJSON supports multiple kinds\n// of objects at its root: FeatureCollection, Features, Geometries.\n// This function has the responsibility of handling all of them, and that\n// means that some of the `for` loops you see below actually just don't apply\n// to certain inputs. For instance, if you give this just a\n// Point geometry, then both loops are short-circuited and all we do\n// is gradually rename the input until it's called 'geometry'.\n// This also aims to allocate as few resources as possible: just a\n// few numbers and booleans, rather than any temporary arrays as would\n// be required with the normalization approach.\nfor(var s,r,n,h,o,l,a,u,c=0,f=0,d=t.type,p=\"FeatureCollection\"===d,m=\"Feature\"===d,w=p?t.features.length:1,v=0;v<w;v++){o=(u=!!(a=p?t.features[v].geometry:m?t.geometry:t)&&\"GeometryCollection\"===a.type)?a.geometries.length:1;for(var g=0;g<o;g++){var M=0,b=0;\n// Handles null Geometry -- Skips this geometry\nif(null!==(h=u?a.geometries[g]:a)){l=h.coordinates;var x=h.type;switch(c=!e||\"Polygon\"!==x&&\"MultiPolygon\"!==x?0:1,x){case null:break;case\"Point\":if(!1===i(l,f,v,M,b))return!1;f++,M++;break;case\"LineString\":case\"MultiPoint\":for(s=0;s<l.length;s++){if(!1===i(l[s],f,v,M,b))return!1;f++,\"MultiPoint\"===x&&M++}\"LineString\"===x&&M++;break;case\"Polygon\":case\"MultiLineString\":for(s=0;s<l.length;s++){for(r=0;r<l[s].length-c;r++){if(!1===i(l[s][r],f,v,M,b))return!1;f++}\"MultiLineString\"===x&&M++,\"Polygon\"===x&&b++}\"Polygon\"===x&&M++;break;case\"MultiPolygon\":for(s=0;s<l.length;s++){for(b=0,r=0;r<l[s].length;r++){for(n=0;n<l[s][r].length-c;n++){if(!1===i(l[s][r][n],f,v,M,b))return!1;f++}b++}M++}break;case\"GeometryCollection\":for(s=0;s<h.geometries.length;s++)if(!1===y(h.geometries[s],i,e))return!1;break;default:throw new Error(\"Unknown Geometry Type\")}}}}}\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */function m(t){var i=[1/0,1/0,-1/0,-1/0];return y(t,(function(t){i[0]>t[0]&&(i[0]=t[0]),i[1]>t[1]&&(i[1]=t[1]),i[2]<t[0]&&(i[2]=t[0]),i[3]<t[1]&&(i[3]=t[1])})),i}\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n * [-81, 41],\n * [-81, 47],\n * [-72, 47],\n * [-72, 41],\n * [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nfunction w(t,i,e){\n// validation\nif(void 0===e&&(e={}),!t)throw new Error(\"point is required\");if(!i)throw new Error(\"polygon is required\");var s,r=\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction(t){if(!t)throw new Error(\"coord is required\");if(!Array.isArray(t)){if(\"Feature\"===t.type&&null!==t.geometry&&\"Point\"===t.geometry.type)return t.geometry.coordinates;if(\"Point\"===t.type)return t.coordinates}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return t;throw new Error(\"coord must be GeoJSON Point or an Array of numbers\")}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */(t),n=\"Feature\"===(s=i).type?s.geometry:s,h=n.type,o=i.bbox,l=n.coordinates;\n// Quick elimination if point is not inside bbox\nif(o&&!1===\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction(t,i){return i[0]<=t[0]&&i[1]<=t[1]&&i[2]>=t[0]&&i[3]>=t[1]}\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature<Point>} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */(r,o))return!1;\n// normalize to multipolygon\n\"Polygon\"===h&&(l=[l]);for(var a=!1,u=0;u<l.length&&!a;u++)\n// check if it is in the outer ring first\nif(v(r,l[u][0],e.ignoreBoundary)){\n// check for the point in any of the holes\nfor(var c=!1,f=1;f<l[u].length&&!c;)v(r,l[u][f],!e.ignoreBoundary)&&(c=!0),f++;c||(a=!0)}return a}\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */function v(t,i,e){var s=!1;i[0][0]===i[i.length-1][0]&&i[0][1]===i[i.length-1][1]&&(i=i.slice(0,i.length-1));for(var r=0,n=i.length-1;r<i.length;n=r++){var h=i[r][0],o=i[r][1],l=i[n][0],a=i[n][1];if(t[1]*(h-l)+o*(l-t[0])+a*(t[0]-h)==0&&(h-t[0])*(l-t[0])<=0&&(o-t[1])*(a-t[1])<=0)return!e;o>t[1]!=a>t[1]&&t[0]<(l-h)*(t[1]-o)/(a-o)+h&&(s=!s)}return s}m.default=m;const g=(t,i,e)=>{let s,r,n,h=null,o=0;e||(e={});let l=function(){o=!1===e.leading?0:Date.now(),h=null,n=t.apply(r,s),h||(r=s=null)};return function(){let a=Date.now();o||!1!==e.leading||(o=a);let u=i-(a-o);return r=this,s=arguments,u<=0||u>i?(h&&(clearTimeout(h),h=null),o=a,n=t.apply(r,s),h||(r=s=null)):h||!1===e.trailing||(h=setTimeout(l,u)),n}},M=Math.fround||(b=new Float32Array(1),t=>(b[0]=+t,b[0]));var b;const x=(t,i,e)=>t.reduce(((t,s,r)=>{let n=i(s);return n=null==n||\"\"===n?\"undefined\":n,t[n]||(t[n]=[]),e.type&&e.zoom&&(s[\"_inner_\"+e.type+\"_\"+e.zoom]=n),s.id=r,t[n].push(s),t}),{}),A=t=>({fence:!0,bbox:m(t),center:L(t)}),E=(t,i)=>m(i?{type:\"FeatureCollection\",features:[{type:\"Feature\",properties:{},geometry:{type:\"Polygon\",coordinates:[t]}}]}:{type:\"FeatureCollection\",features:t}),L=t=>function(t,i){void 0===i&&(i={});var e=0,s=0,r=0;return y(t,(function(t){e+=t[0],s+=t[1],r++}),!0),\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction(t,i,e){if(void 0===e&&(e={}),!t)throw new Error(\"coordinates is required\");if(!Array.isArray(t))throw new Error(\"coordinates must be an Array\");if(t.length<2)throw new Error(\"coordinates must be at least 2 numbers long\");if(!p(t[0])||!p(t[1]))throw new Error(\"coordinates must contain numbers\");return function(t,i,e){void 0===e&&(e={});var s={type:\"Feature\"};return(0===e.id||e.id)&&(s.id=e.id),e.bbox&&(s.bbox=e.bbox),s.properties=i||{},s.geometry=t,s}({type:\"Point\",coordinates:t},i,e)}([e/r,s/r],i.properties)}(t).geometry.coordinates,C=t=>{if(!t||!Array.isArray(t)||t.length<2)return[];let i=[t[0],t[1]];for(let e=2;e<t.length-1;e+=2)t[e]!==i[e-2]&&t[e+1]!==i[e-1]&&i.push(t[e],t[e+1]);return i},k=t=>t/360+.5,_=t=>{const i=Math.sin(t*Math.PI/180),e=.5-.25*Math.log((1+i)/(1-i))/Math.PI;return e<0?0:e>1?1:e};class T{constructor(){}}var G;!function(t){t[t.NONE=0]=\"NONE\",t[t.INNER=1]=\"INNER\",t[t.OUT=2]=\"OUT\",t[t.ALL=3]=\"ALL\"}(G||(G={}));class B{constructor(t,e=!1){this.trees={},this.nodeSize=64,this.isSort=!0,this.splitChar=\"*.*\",this.OFFSET_ZOOM=2,this.OFFSET_ID=3,this.OFFSET_PARENT=4,this.OFFSET_NUM=5,this.OFFSET_PROP=6,this.ZOOM_BITS=5,this.mapping=new Map,this.geo_refs=new Map,this.key_refs=new Map,this.cluster_geo_refs=new Map,this.own=t,this.showLog=e,this.reduceType=this.isClusterReduce(),this.stride=this.reduceType!==G.NONE?7:6,this.reduceType&G.INNER&&(this.innerReduce=(t,i)=>{var e,s,r;this.weightKey&&(t.weight_list||(t.weight_list=[null!==(e=t.weight)&&void 0!==e?e:1]),t.weight_list.push(null!==(s=null==i?void 0:i.weight)&&void 0!==s?s:1)),this.typeKey&&(t.divide_type=null!==(r=null==i?void 0:i.divide_type)&&void 0!==r?r:\"unknown\")},this.innerMap=t=>{var i,e,s,r;let n={};return this.weightKey&&(\"function\"==typeof this.weightKey?n.weight=null!==(i=this.weightKey(t))&&void 0!==i?i:1:n.weight=t?null!==(e=t[this.weightKey])&&void 0!==e?e:1:null),this.typeKey&&(\"function\"==typeof this.typeKey?n.divide_type=null!==(s=this.typeKey(t))&&void 0!==s?s:\"unknown\":n.divide_type=t?null!==(r=t[this.typeKey])&&void 0!==r?r:\"unknown\":null),n}),this.createZoomMapping(),this.own.on(i.DESTROY,(()=>{this.reset(),this.mapping.clear()}))}isClusterReduce(){let t=this.own.getOptions().clusterPointWeight,i=this.own.getOptions().clusterPointType;return t||i?(t&&(this.weightKey=t),i&&(this.typeKey=i),this.own.getOptions().clusterReduce?G.ALL:G.INNER):this.own.getOptions().clusterReduce?G.OUT:G.NONE}createZoomMapping(){let t=this.own.getOptions().clusterType;t&&0!==t.length&&(t.forEach((t=>{let[i,s,r,n,h]=t;if(s=null!=s?s:this.own.getOptions().clusterMaxZoom,r===e.GEO_FENCE||r===e.ATTR_REF)this.mapping.set(i,[null!=h?h:s,r,n]);else if(h)this.mapping.set(i,[h,e.DIS_PIXEL,n]);else for(var o=i;o<=s;o++)this.mapping.set(o,[o,e.DIS_PIXEL,n])})),this.showLog)}getClusterType(t){let i,s=e.DIS_PIXEL;for(let[r,n]of[...this.mapping.entries()].reverse())if(r<=t){s=n[1],i=s===e.ATTR_REF&&n[2]instanceof Array?n[2][n[2].length-1]:n[2];break}return{type:s,name:i}}getClusterZoom(t){let i=this.l(t);for(let[e]of[...this.mapping.entries()].reverse())if(e<=t){i=e;break}return i}getClusterTree(t){let i=this.getClusterZoom(t);const{clusterMaxZoom:e=21}=this.own.getOptions();return i<t&&e+1===t&&(i=e+1),this.trees[i]}createClusters(t){this.reset(),this.points=t.filter((t=>{if(t.geometry){const[i,e]=t.geometry.coordinates;if(!isNaN(i)&&!isNaN(e)&&i>=-180&&i<=180&&e>=-90&&e<=90)return!0}return!1}));const{clusterMinZoom:i=3,clusterMaxZoom:s=21}=this.own.getOptions();t.length,this.showLog;const r=[];for(let t=0;t<this.points.length;t++){const i=this.points[t];if(!i.geometry)continue;const[e,s]=i.geometry.coordinates,n=M(e),h=M(s);r.push(n,h,1/0,t,-1,1),this.reduceType!==G.NONE&&r.push(-1)}let n=this.trees[s+1]=this.u(new Float32Array(r));for(let t=s;t>=i;t--){Date.now();const i=this.getClusterZoom(t);if(this.mapping.has(i)){if(this.trees[i])continue;let t,[s,r,h]=this.mapping.get(i);switch(r){case e.GEO_FENCE:t=this.p(s,h);break;case e.ATTR_REF:t=this.m(s,h);break;default:t=this.v(n,s,h)}n=this.trees[i]=this.u(t)}else n=this.trees[i]=this.u(this.v(n,i));this.showLog}this.showLog}u(t){const i=new l(t.length/this.stride|0,this.nodeSize,Float32Array);for(let e=0;e<t.length;e+=this.stride)i.add(k(t[e]),_(t[e+1]));return i.finish(),i.data=t,i}m(t,i){let s=x(this.points,(t=>{if(!t.properties)return null;let s=null;if(i instanceof Array?i.forEach((i=>{var e;(null===(e=t.properties)||void 0===e?void 0:e.hasOwnProperty(i))&&(null===s?s=t.properties[i]:s+=this.splitChar+t.properties[i])})):s=t.properties[i],this.own.getOptions().clusterDictionary&&s&&!this.geo_refs.has(s)){let t=this.own.getOptions().clusterDictionary(e.ATTR_REF,s);t&&t.point&&this.geo_refs.set(s,t)}return s}),{zoom:t,type:e.ATTR_REF});return this.showLog,this.M(e.ATTR_REF,s,t)}p(t,i){let s=new Map;if(this.own.getOptions().clusterDictionary){let t=i;t instanceof Array||(t=[t]),t.forEach((t=>{if(this.geo_refs.has(t))s.set(t,this.geo_refs.get(t));else{this.showLog;let i=this.own.getOptions().clusterDictionary(e.GEO_FENCE,t);i&&i.region&&(i.point||(i.point=L(i.region)),this.geo_refs.set(t,i),s.set(t,i))}}))}let r=x(this.points,(t=>((t,i,e)=>{let s=null;for(let[e,r]of t)if(w(i,{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[r.region]}})){s=e;break}return s})(s,t)),{zoom:t,type:e.GEO_FENCE});return this.showLog,this.M(e.GEO_FENCE,r,t)}M(t,i,s){let r=[];const{clusterMinPoints:n=3,clusterReduce:h}=this.own.getOptions();for(const o in i)if(i.hasOwnProperty(o)){let l=i[o];if(\"undefined\"===o||l.length<n)l.forEach((t=>{var i;const[e,s]=t.geometry.coordinates,n=e,h=s;r.push(n,h,1/0,+(null!==(i=t.id)&&void 0!==i?i:0),-1,1),this.reduceType!==G.NONE&&r.push(-1)}));else{let i,a=-1;l.forEach(((t,e)=>{if(this.reduceType!==G.NONE){let s={};if(this.reduceType&G.INNER&&(s=this.innerMap(t.properties)),h){let i=this.own.getOptions().clusterMap(t.properties);Object.assign(s,i)}i?(this.reduceType&G.INNER&&(this.innerReduce(i,Object.assign({},s)),e===l.length-1&&this.A(i)),h&&h(i,Object.assign({},s))):(i=Object.assign({},s),a=this.clusterProps.length,this.clusterProps.push(i))}}));let u=(l[0].id<<this.ZOOM_BITS)+(s+1)+this.points.length,c=o.split(this.splitChar);if(this.key_refs.set(u,c[c.length-1]),this.geo_refs.has(o)){let i=this.geo_refs.get(o),s=i.point;r.push(s[0],s[1],1/0,u,-1,l.length),t===e.GEO_FENCE?this.cluster_geo_refs.set(u,{bbox:E(i.region,!0)}):this.cluster_geo_refs.set(u,{bbox:E(l,!1)})}else{let{fence:t,bbox:i,center:e}=A({type:\"FeatureCollection\",features:l});C(i).length<=2||i[0]===1/0||!t?(n>1&&(u=l[0].id),r.push(e[0],e[1],1/0,u,-1,1)):r.push(e[0],e[1],1/0,u,-1,l.length),this.cluster_geo_refs.set(u,{bbox:i})}this.reduceType!==G.NONE&&r.push(a)}}return r}v(t,i,e){var s,r,n;const{clusterRadius:h=60,tileSize:o=256,clusterMinPoints:l=3,clusterReduce:a}=this.own.getOptions(),u=(void 0===e?h:e)/(o*Math.pow(2,i-1)),c=t.data,f=[],d=this.stride;for(let e=0;e<c.length;e+=d){if(c[e+this.OFFSET_ZOOM]<=i)continue;c[e+this.OFFSET_ZOOM]=i;const h=c[e],o=c[e+1];let p=t.within(k(c[e]),_(c[e+1]),u);if(this.showLog,this.typeKey){let t=null!==(r=null===(s=this.L(c,e))||void 0===s?void 0:s.divide_type)&&void 0!==r?r:\"unknown\";p=p.filter((i=>{var e,s;const r=i*d;let n=null!==(s=null===(e=this.L(c,r))||void 0===e?void 0:e.divide_type)&&void 0!==s?s:\"unknown\";return n!=t&&this.showLog,n===t}))}this.showLog;const y=c[e+this.OFFSET_NUM];let m=y;for(const t of p){const e=t*d;c[e+this.OFFSET_ZOOM]>i&&(m+=c[e+this.OFFSET_NUM])}if(m>y&&m>=l){let t,s=-1,r=[[h,o]],l=[y];this.reduceType!==G.NONE&&(t||(t=this.L(c,e,!0),s=this.clusterProps.length,this.clusterProps.push(t)));const u=(e/d<<this.ZOOM_BITS)+(i+1)+this.points.length;for(let e=0;e<p.length;++e){const s=p[e]*d;if(c[s+this.OFFSET_ZOOM]<=i)continue;let n;c[s+this.OFFSET_ZOOM]=i,this.reduceType!==G.NONE&&t&&(n=this.L(c,s),this.reduceType&G.INNER&&this.innerReduce(t,n),a&&a(t,n));let h=c[s+this.OFFSET_NUM];l.push(h),r.push([c[s],c[s+1]]),c[s+this.OFFSET_PARENT]=u}c[e+this.OFFSET_PARENT]=u,this.cluster_geo_refs.set(u,{bbox:E(r,!0)});let[w,v]=this.C(r,l,null!==(n=null==t?void 0:t.weight_list)&&void 0!==n?n:[]);f.push(w,v,1/0,u,-1,m),this.reduceType&G.INNER&&t&&this.weightKey&&this.A(t),this.reduceType!==G.NONE&&f.push(s)}else{for(let t=0;t<d;t++)f.push(c[e+t]);if(m>1)for(const t of p){const e=t*d;if(!(c[e+this.OFFSET_ZOOM]<=i)){c[e+this.OFFSET_ZOOM]=i;for(let t=0;t<d;t++)f.push(c[e+t])}}}}return f}C(t,i,e){let s=0,n=0,h=0,o=this.own.getOptions().clusterPointLocationType;if(0===e.length)o=r.COUNT_AVERAGE;else if(t.length!==e.length)throw new Error(\"weight_list length not equal clusterPoints length\");switch(o){case r.WEIGHT_MAX:let o=e.reduce(((t,i,s)=>i>e[t]?s:t),0);s=t[o][0],n=t[o][1];break;case r.WEIGHT_AVERAGE:h=0,e.forEach((t=>{h+=t}));for(let i=0;i<t.length;i++)s+=t[i][0]*e[i],n+=t[i][1]*e[i];s/=h,n/=h;break;case r.COUNT_AVERAGE:h=0,i.forEach((t=>{h+=t}));for(let e=0;e<t.length;e++)s+=t[e][0]*i[e],n+=t[e][1]*i[e];s/=h,n/=h;break;default:for(let i=0;i<t.length;i++)s+=t[i][0],n+=t[i][1];s/=t.length,n/=t.length}return[s,n]}A(t){let i=0;switch(this.own.getOptions().clusterPointWeightType){case s.AVERAGE:t.weight_list.forEach((t=>{i+=t})),i/=t.weight_list.length;break;case s.MAX:t.weight_list.forEach((t=>{i<t&&(i=t)}));break;case s.SUM:t.weight_list.forEach((t=>{i+=t}));break;default:i=1}delete t.weight_list,t.weight=i}k(t){return t-this.points.length>>this.ZOOM_BITS}_(t){return(t-this.points.length)%32}L(t,i,e){if(t[i+this.OFFSET_NUM]>1){const s=this.clusterProps[t[i+this.OFFSET_PROP]];return e?Object.assign({},s):s}const s=this.points[t[i+this.OFFSET_ID]].properties;let r={};if(this.reduceType&G.INNER&&(r=this.innerMap(s)),this.own.getOptions().clusterReduce){let t=this.own.getOptions().clusterMap(s);Object.assign(r,t)}return e&&r===s?Object.assign({},r):r}l(t){var i,e;let s=this.own.getOptions();return Math.max(null!==(i=s.clusterMinZoom)&&void 0!==i?i:3,Math.min(Math.floor(+t),(null!==(e=s.clusterMaxZoom)&&void 0!==e?e:21)+1))}getClusters(t,i){var s;if(this.isIllegal(t))return[[],[]];let r=((i[0]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,i[1]));let h=180===i[2]?180:((i[2]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,i[3]));if(i[2]-i[0]>=360)r=-180,h=180;else if(r>h){const i=this.getClusters(t,[r,n,180,o]),e=this.getClusters(t,[-180,n,h,o]);return[[...i[0],...e[0]],[...i[1],...e[1]]]}let l=this.getClusterZoom(t);const a=this.getClusterTree(t);if(!a)return[[],[]];const{type:u,name:c}=this.getClusterType(t),f=a.range(k(r),_(o),k(h),_(n)),d=a.data,p=[],y=[];this.showLog;for(const t of f){const i=this.stride*t;if(this.showLog,d[i+this.OFFSET_NUM]>=this.own.getOptions().clusterMinPoints){let r=this.getClusterJSON(d,i,this.clusterProps);r.properties||(r.properties={}),r.properties.listChildren=this.getLeaves(d[i+this.OFFSET_ID],[],null!==(s=this.own.getOptions().clusterListChildren)&&void 0!==s?s:-1),r.properties.clusterIndex=(t<<this.ZOOM_BITS)+l,r.properties.allCount=this.points.length,r.properties.type=u,u!==e.GEO_FENCE&&u!==e.ATTR_REF||this.key_refs.has(d[i+this.OFFSET_ID])&&(r.properties.belongKey=c,r.properties.belongValue=this.key_refs.get(d[i+this.OFFSET_ID])),p.push(r)}else{let t=d[i+this.OFFSET_ID],e=this.points[t];e.id=t,e.properties?e.properties.listChildren=[]:e.properties={listChildren:[]},e.properties?e.properties.clusterId=t:e.properties={clusterId:t},e.properties?e.properties.allCount=this.points.length:e.properties={allCount:this.points.length},e.properties?e.properties.parentId=d[i+this.OFFSET_PARENT]:e.properties={parentId:d[i+this.OFFSET_PARENT]},y.push(e)}}return this.isSort&&p.sort(((t,i)=>{var e,s;return(null===(e=t.properties)||void 0===e?void 0:e.pointCount)-(null===(s=i.properties)||void 0===s?void 0:s.pointCount)})),[y,p]}getElementById(t,i,s){let r=s?i>>this.ZOOM_BITS:i,n=new T;n.id=t,n.index=r;let h=s?i&(1<<this.ZOOM_BITS)-1:this._(t)-1,{type:o,name:l}=this.getClusterType(h);if(n.type=o,t<=this.points.length)n.isCluster=!1,n.properties=this.points[t].properties,n.latLng=this.points[t].geometry.coordinates;else{n.isCluster=!0;let i=this.getClusterTree(h),s=i.data;if(i){let i=r*this.stride;this.showLog,n.latLng=[s[i],s[i+1]],n.pointCount=s[i+this.OFFSET_NUM],n.parentId=s[i+this.OFFSET_PARENT],o!==e.GEO_FENCE&&o!==e.ATTR_REF||this.key_refs.has(t)&&(n.belongKey=l,n.belongValue=this.key_refs.get(t)),this.reduceType!==G.NONE&&(n.reduces=this.clusterProps[s[i+this.OFFSET_PROP]]);const h=this.getLeaves(t,[],1/0);if(h&&h.length>0){const i=h.map((t=>t.latLng));i.length>0?(n.bbox=E(i,!0),this.showLog):this.cluster_geo_refs.has(t)&&(n.bbox=this.cluster_geo_refs.get(t).bbox)}else this.cluster_geo_refs.has(t)&&(n.bbox=this.cluster_geo_refs.get(t).bbox)}}return!n.bbox&&this.cluster_geo_refs.has(t)&&(n.bbox=this.cluster_geo_refs.get(t).bbox),this.showLog,n}getUnDistanceBrothers(t,i,e,s,r){let n=this.k(t),h=this.points[n],o=h?h[\"_inner_\"+i+\"_\"+s]:void 0,l=[];return o&&(l=this.points.filter((t=>!!t&&t[\"_inner_\"+i+\"_\"+s]===o))),l.slice(0,r).map((t=>{let e=new T;return e.id=t.id,e.index=t.id,e.type=i,e.isCluster=!1,e.properties=this.points[t.id].properties,e.latLng=this.points[t.id].geometry.coordinates,e}))}getLeaves(t,i=[],s){if(void 0===s&&(s=1/0),s<=0)return[];i||(i=[]);let r=this._(t)-1,{type:n,name:h}=this.getClusterType(r);if(n===e.GEO_FENCE||n===e.ATTR_REF)return this.getUnDistanceBrothers(t,n,h,r,s);if(t>this.points.length){let e=this.getClusterTree(r+1),n=e.data;if(e)for(let e=0;e<n.length/this.stride;e++){let r=e*this.stride+this.OFFSET_ID;if(n[e*this.stride+this.OFFSET_PARENT]===t)if(n[r]<=this.points.length){if(!(i.length<s))break;{let t=this.getElementById(n[r],e);i.push(t)}}else this.getLeaves(n[r],i,s)}}return i}getChildNodes(t){let i=[];if(t<=this.points.length)i=[];else{let e=this._(t)-1,s=this.getClusterTree(e+1),r=s.data;if(s)for(let e=0;e<r.length/this.stride;e++)if(r[e*this.stride+this.OFFSET_PARENT]===t){let s=this.getElementById(r[e*this.stride+this.OFFSET_ID],e);s.parentId=t,i.push(s)}}return i}getClusterJSON(t,i,e){return{type:\"Feature\",id:t[i+this.OFFSET_ID],properties:this.getClusterProperties(t,i,e),geometry:{type:\"Point\",coordinates:[t[i],t[i+1]]}}}getClusterProperties(t,i,e){const s=t[i+this.OFFSET_NUM],r=s>=1e4?`${Math.round(s/1e3)}k`:s>=1e3?Math.round(s/100)/10+\"k\":s;let n={};if(this.reduceType!==G.NONE){const s=t[i+this.OFFSET_PROP];n=-1===s?{}:Object.assign({},{reduces:e[s]})}return Object.assign(n,{isCluster:!0,clusterId:t[i+this.OFFSET_ID],parentId:t[i+this.OFFSET_PARENT],point:[t[i],t[i+1]],pointCount:s,pointCountAbbrev:r})}isIllegal(t){var i,e;let s=null!==(i=this.own.getOptions().minZoom)&&void 0!==i?i:3,r=null!==(e=this.own.getOptions().maxZoom)&&void 0!==e?e:23;return t<s||t>r}reset(){this.points=[],this.clusterProps=[],this.trees={},this.geo_refs.clear(),this.key_refs.clear(),this.cluster_geo_refs.clear()}}class P{constructor(t,i,e,s){this.T=600,this.G=[12,12,12,12],this.own=t,this.engine=i,this.map=e,this.showLog=s;let r=this.own.getOptions().fitViewMargin;r&&(this.G=r),this.register(),this.createLayers()}register(){this.own.getOptions().updateRealTime?(this.T=this.own.getOptions().waitTime||300,this.map.addEventListener(\"update\",this.B=g(this.mapStatusChange.bind(this),this.T,{leading:!0,trailing:!1}))):this.map.addEventListener(\"mapstatusidle_inner\",this.B=this.mapStatusChange.bind(this)),this.map.addEventListener(\"destroy\",(()=>{this.own.destroy()})),this.own.on(i.DESTROY,(()=>{this.destroy()}))}unregister(){this.own.getOptions().updateRealTime?this.map.removeEventListener(\"update\",this.B):this.map.removeEventListener(\"mapstatusidle_inner\",this.B),this.B=()=>{}}mapStatusChange(t){let e=this.map.getZoom(),s=this.map.getBounds(),r=s.getSouthWest(),n=s.getNorthEast();this.showLog;let h=this.engine.getClusters(e,[r.lng,r.lat,n.lng,n.lat]);this.own.fire(i.CHANGE,h),this.own.isRender&&this.update(h)}update(t){if(this.showLog,this.own.getOptions().isAnimation){if(!(this.multi_layer instanceof BMapGL.CustomHtmlLayer))throw new Error(\"isAnimation is true, but renderClusterStyle is not dom type\");this.render([...t[0],...t[1]],h.MULTI)}else this.render(t[0],h.SINGLE),this.render(t[1],h.MULTI)}render(t,i){this.showLog,this.showLog;let e={type:\"FeatureCollection\",features:t},s=i===h.MULTI?this.multi_layer:this.single_layer;s&&(t.length>0&&(null==s||s.setData(e)),0===t.length&&(null==s||s.clearData()))}createLayers(){var t,i;(null===(t=this.own.getOptions().renderSingleStyle)||void 0===t?void 0:t.type)===n.DOM?this.single_layer=this.createLayer(h.SINGLE,n.DOM):this.single_layer=this.createLayer(h.SINGLE,n.WEBGL),(null===(i=this.own.getOptions().renderClusterStyle)||void 0===i?void 0:i.type)===n.DOM?this.multi_layer=this.createLayer(h.MULTI,n.DOM):this.multi_layer=this.createLayer(h.MULTI,n.WEBGL)}createLayer(t,e){this.showLog;let s,r=this.own.getOptions(),o=t===h.MULTI?r.renderClusterStyle:r.renderSingleStyle;if(!o)return;if(e===n.DOM){let i={sliceRepeat:!0,minZoom:this.own.getOptions().minZoom,maxZoom:this.own.getOptions().maxZoom,zIndex:t===h.MULTI?10:9,nextTick:!0,fixBottom:!0,useTranslate:!!this.own.getOptions().isAnimation,anchors:[.5,.5],displayType:\"normal\",enableDraggingMap:!0};this.own.getOptions().isAnimation&&(i.displayType=\"cluster\"),Object.assign(i,o.style);const e=new BMapGL.CustomHtmlLayer(o.inject,i);this.map.addCustomHtmlLayer(e),s=e}else{let i=1.2*(r.clusterRadius||32),e={iconObj:(t,i)=>({canvas:(null==o?void 0:o.inject)(i),id:i.clusterId}),sizes:[i,i/2],scale:1,userSizes:!1,anchors:[0,0],width:i,height:i/2};Object.assign(e,o.style);let n={icon:\"https://webmap0.bdimg.com/image/api/marker_red.png\",sizes:[8,8],anchors:[0,-1],userSizes:!1,width:[\"match\",[\"get\",\"type\"],0,16,8],height:[\"match\",[\"get\",\"type\"],0,16,8]};Object.assign(n,o.style);const l=new BMapGL.PointIconLayer({minZoom:this.own.getOptions().minZoom,maxZoom:this.own.getOptions().maxZoom,zIndex:t===h.MULTI?10:9,isTop:!1,enablePicked:!0,autoSelect:!1,pickWidth:30,pickHeight:30,opacity:1,isFlat:!1,isFixed:!0,style:t===h.MULTI?e:n});this.map.addNormalLayer(l),s=l}s.addEventListener(\"click\",(t=>{if(this.showLog,t.target instanceof BMapGL.PointIconLayer&&!t.value.dataItem)return;let e=this.getElementByEvent(t);e.bbox&&Array.isArray(e.bbox)&&e.bbox[0]!==1/0&&this.fitView(e.bbox),this.own.fire(i.CLICK,e)}));let l=e===n.DOM?\"mouseover\":\"mousemove\";return s.addEventListener(l,(t=>{if(this.showLog,t.target instanceof BMapGL.PointIconLayer&&!t.value.dataItem)return void(this.P&&(this.own.fire(i.MOUSE_OUT,this.P),this.P=null));let e=this.getElementByEvent(t);if(t.target instanceof BMapGL.PointIconLayer)return this.P&&this.P.id===e.id||this.own.fire(i.MOUSE_OVER,e),void(this.P=e);this.own.fire(i.MOUSE_OVER,e)})),s.addEventListener(\"mouseout\",(t=>{if(this.showLog,t.target instanceof BMapGL.PointIconLayer)return;let e=this.getElementByEvent(t);this.own.fire(i.MOUSE_OUT,e)})),s}getElementByEvent(t){var i,e;let s,r,n=[];if(t.target instanceof BMapGL.CustomOverlay){let e=t.target.properties||{};s=e.clusterId,r=e.clusterIndex,n=null!==(i=e.listChildren)&&void 0!==i?i:[]}else{let i=t.value.dataItem.properties||{};s=i.clusterId,r=i.clusterIndex,n=null!==(e=i.listChildren)&&void 0!==e?e:[]}let h=this.engine.getElementById(s,r,!0);return h.listChildren=n,h.pixel=[t.pixel.x,t.pixel.y],h.target=t.target,h}clearRender(){this.showLog,this.update([[],[]])}unrender(){this.showLog,this.multi_layer instanceof BMapGL.PointIconLayer?this.map.removeNormalLayer(this.multi_layer):this.map.removeCustomHtmlLayer(this.multi_layer),this.single_layer instanceof BMapGL.PointIconLayer?this.map.removeNormalLayer(this.single_layer):this.map.removeCustomHtmlLayer(this.single_layer),this.multi_layer=void 0,this.single_layer=void 0}fitView(t){if(this.showLog,this.own.getOptions().fitViewOnClick){let i=this.map.getZoom(),e=[new BMapGL.Point(t[0],t[1]),new BMapGL.Point(t[2],t[3])],s={margins:this.G,enableAnimation:!0};this.map.setViewport(e,s),setTimeout((()=>{i===this.map.getZoom()&&this.map.setZoom(i+1),this.mapStatusChange()}),300)}}show(){this.single_layer&&(this.single_layer instanceof BMapGL.CustomHtmlLayer&&this.single_layer.show(),this.single_layer instanceof BMapGL.PointIconLayer&&this.single_layer.setVisible(!0)),this.multi_layer&&(this.multi_layer instanceof BMapGL.CustomHtmlLayer&&this.multi_layer.show(),this.multi_layer instanceof BMapGL.PointIconLayer&&this.multi_layer.setVisible(!0))}hide(){this.single_layer&&(this.single_layer instanceof BMapGL.CustomHtmlLayer&&this.single_layer.hide(),this.single_layer instanceof BMapGL.PointIconLayer&&this.single_layer.setVisible(!1)),this.multi_layer&&(this.multi_layer instanceof BMapGL.CustomHtmlLayer&&this.multi_layer.hide(),this.multi_layer instanceof BMapGL.PointIconLayer&&this.multi_layer.setVisible(!1))}getSingleLayer(){return this.single_layer}getClusterLayer(){return this.multi_layer}drawMarker(t){this.map.addOverlay(new BMapGL.Marker(new BMapGL.Point(t[0],t[1])))}destroy(){this.map&&(this.unregister(),this.unrender())}}\nreturn Object.freeze({__proto__:null,get ClusterData(){return h},ClusterElement:T,get ClusterEvent(){return i},get ClusterRender(){return n},get ClusterType(){return e},get LocCountType(){return r},get PointWeightType(){return s},View:class extends t{constructor(t,i){if(super(),this.Z=!1,!t)throw new Error(\"map is required\");i&&this.verifyOptions(i);const e={tileSize:256,minZoom:3,maxZoom:21,clusterRadius:30,clusterMinZoom:3,clusterMaxZoom:16,clusterMinPoints:2,clusterListChildren:0,clusterPointWeight:void 0,clusterPointWeightType:s.SUM,clusterPointLocationType:r.WEIGHT_AVERAGE,clusterPointType:void 0,clusterMap:t=>({}),clusterReduce:void 0,clusterType:void 0,clusterDictionary:void 0,isRender:!0,isAnimation:!1,renderClusterStyle:{type:n.DOM,style:{},inject:t=>{var i=Math.pow(t.pointCount/t.allCount,.1),e=document.createElement(\"div\"),s=180-180*i,r=\"hsla(\"+s+\",100%,30%,0.7)\",n=\"hsla(\"+s+\",100%,90%,1)\",h=\"hsla(\"+s+\",100%,30%,1)\",o=\"hsla(\"+s+\",100%,90%,1)\";e.style.backgroundColor=r;var l=Math.round(25+30*Math.pow(t.pointCount/t.allCount,1/6));return e.style.width=e.style.height=l+\"px\",e.style.border=\"solid 1px \"+h,e.style.borderRadius=l/2+\"px\",e.style.boxShadow=\"0 0 5px \"+o,e.innerHTML=t.pointCount,e.style.lineHeight=l+\"px\",e.style.color=n,e.style.fontSize=\"14px\",e.style.textAlign=\"center\",e.style.cursor=\"pointer\",e}},renderSingleStyle:{type:n.WEBGL,style:{},inject:t=>document.createElement(\"canvas\")},fitViewOnClick:!0,fitViewMargin:void 0,updateRealTime:!1,waitTime:300};this.options=Object.assign(e,i),this.engine=new B(this,this.Z),this.render=new P(this,this.engine,t,this.Z),this.isRender=this.options.isRender||!1}setData(t){this.Z,this.engine.createClusters(t),this.redraw()}getSingleLayer(){return this.render.getSingleLayer()}getClusterLayer(){return this.render.getClusterLayer()}getLeaves(t,i){return this.engine.getLeaves(t,[],i)}getSonNodes(t){return this.engine.getChildNodes(t)}redraw(){this.render.mapStatusChange()}show(){this.render.show()}hide(){this.render.hide()}destroy(){this.fire(i.DESTROY)}get isRender(){return this.O}set isRender(t){this.O=t,!t&&this.render.clearRender()}getOptions(){return this.options}verifyOptions(t){var i,e;if(t.minZoom&&t.minZoom<3)throw new Error(\"minZoom must be greater than 3\");if(t.maxZoom&&t.maxZoom>23)throw new Error(\"maxZoom must be less than 23\");if(Math.max(null!==(i=t.minZoom)&&void 0!==i?i:3,3)>Math.min(null!==(e=t.maxZoom)&&void 0!==e?e:23,23))throw new Error(\"minZoom must be less than maxZoom\");if(t.clusterMinZoom&&t.clusterMinZoom<3)throw new Error(\"clusterMinZoom must be greater than 3\");if(t.clusterMaxZoom&&t.clusterMaxZoom>23)throw new Error(\"clusterMaxZoom must be less than 23\");if(t.clusterMinZoom&&t.clusterMaxZoom&&t.clusterMinZoom>t.clusterMaxZoom)throw new Error(\"clusterMinZoom must be less than clusterMaxZoom\");if(t.clusterType){if(!(t.clusterType instanceof Array))throw new Error(\"clusterType must be an array\");if(t.clusterType.length<1)throw new Error(\"clusterType must be greater than 0\");for(let i=0;i<t.clusterType.length;i++){if(t.clusterType[i].length<4)throw new Error(\"clusterType must be greater than 4\");if(!t.clusterType[i][0])throw new Error(\"clusterType item startZoom must not be null\");if(t.clusterType[i][1]&&t.clusterType[i][0]>t.clusterType[i][1])throw new Error(\"clusterType item endZoom must be less than starZoom\");if(null===t.clusterType[i][1]&&i<t.clusterType.length-1)throw new Error(\"clusterType item endZoom must not be null,excluding the last item endZoom\");if(i<t.clusterType.length-1&&null!==t.clusterType[i][1]&&t.clusterType[i][1]>t.clusterType[i+1][0])throw new Error(\"clusterType item endZoom must be less than the next startZoom\")}}}},pointTransformer:(t,i)=>{let e=[];return t.forEach(((t,s)=>{const{point:r=null,properties:n={}}=i(t,s);r&&e.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:r},properties:n})})),e}})}));\n"],
"mappings": "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",
"names": ["i", "t", "e", "s", "r", "n", "h", "l", "o", "a", "u", "c", "f", "d", "p", "y", "m", "w", "v", "g", "M", "b", "x"]
}
......@@ -292,8 +292,8 @@ import {
wind_power_default,
zoom_in_default,
zoom_out_default
} from "./chunk-S4WGN4LU.js";
import "./chunk-JDSL2H4L.js";
} from "./chunk-5WDSIG6Y.js";
import "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js";
export {
add_location_default as AddLocation,
......
{
"hash": "3d95d7cd",
"configHash": "beb1c48d",
"hash": "cafa6c33",
"configHash": "ca4ef806",
"lockfileHash": "2e2ef206",
"browserHash": "80dbb247",
"browserHash": "a1fff30e",
"optimized": {
"vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
"src": "../../.pnpm/vue@3.5.21_typescript@5.8.3/node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "27726b81",
"fileHash": "5a715d56",
"needsInterop": false
},
"vue-router": {
"src": "../../vue-router/dist/vue-router.mjs",
"src": "../../.pnpm/vue-router@4.5.1_vue@3.5.21_typescript@5.8.3_/node_modules/vue-router/dist/vue-router.mjs",
"file": "vue-router.js",
"fileHash": "0e4a94be",
"fileHash": "e7e39dc0",
"needsInterop": false
},
"element-plus": {
"src": "../../element-plus/es/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/index.mjs",
"file": "element-plus.js",
"fileHash": "d9930fe7",
"fileHash": "54370ffb",
"needsInterop": false
},
"@element-plus/icons-vue": {
"src": "../../@element-plus/icons-vue/dist/index.js",
"src": "../../.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.21_typescript@5.8.3_/node_modules/@element-plus/icons-vue/dist/index.js",
"file": "@element-plus_icons-vue.js",
"fileHash": "2651facd",
"fileHash": "2c4e3fd2",
"needsInterop": false
},
"nprogress": {
"src": "../../nprogress/nprogress.js",
"src": "../../.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress.js",
"file": "nprogress.js",
"fileHash": "17e27234",
"fileHash": "14c5d8dd",
"needsInterop": true
},
"pinia": {
"src": "../../pinia/dist/pinia.mjs",
"src": "../../.pnpm/pinia@3.0.3_typescript@5.8.3_vue@3.5.21_typescript@5.8.3_/node_modules/pinia/dist/pinia.mjs",
"file": "pinia.js",
"fileHash": "25cdbaf2",
"fileHash": "568b8013",
"needsInterop": false
},
"js-cookie": {
"src": "../../js-cookie/dist/js.cookie.mjs",
"src": "../../.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs",
"file": "js-cookie.js",
"fileHash": "3e9ef2cb",
"fileHash": "b983782f",
"needsInterop": false
},
"axios": {
"src": "../../axios/index.js",
"src": "../../.pnpm/axios@1.12.2/node_modules/axios/index.js",
"file": "axios.js",
"fileHash": "4d97a917",
"fileHash": "ff27b63b",
"needsInterop": false
},
"element-plus/es": {
"src": "../../element-plus/es/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/index.mjs",
"file": "element-plus_es.js",
"fileHash": "eff4ad91",
"fileHash": "080ac84c",
"needsInterop": false
},
"element-plus/es/components/base/style/index": {
"src": "../../element-plus/es/components/base/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/base/style/index.mjs",
"file": "element-plus_es_components_base_style_index.js",
"fileHash": "bb275ed1",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "a7c12d1a",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "f0a4374a",
"needsInterop": false
},
"element-plus/es/components/cascader/style/index": {
"src": "../../element-plus/es/components/cascader/style/index.mjs",
"file": "element-plus_es_components_cascader_style_index.js",
"fileHash": "f3c25105",
"needsInterop": false
},
"mitt": {
"src": "../../mitt/dist/mitt.mjs",
"file": "mitt.js",
"fileHash": "27983b13",
"fileHash": "1492dfd8",
"needsInterop": false
},
"element-plus/es/components/dialog/style/index": {
"src": "../../element-plus/es/components/dialog/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/dialog/style/index.mjs",
"file": "element-plus_es_components_dialog_style_index.js",
"fileHash": "250cc421",
"fileHash": "19eabf4a",
"needsInterop": false
},
"element-plus/es/components/icon/style/index": {
"src": "../../element-plus/es/components/icon/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/icon/style/index.mjs",
"file": "element-plus_es_components_icon_style_index.js",
"fileHash": "ffaccf8e",
"fileHash": "694e7b5c",
"needsInterop": false
},
"element-plus/es/components/row/style/index": {
"src": "../../element-plus/es/components/row/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/row/style/index.mjs",
"file": "element-plus_es_components_row_style_index.js",
"fileHash": "8146d606",
"fileHash": "3b6e8a98",
"needsInterop": false
},
"element-plus/es/components/col/style/index": {
"src": "../../element-plus/es/components/col/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/col/style/index.mjs",
"file": "element-plus_es_components_col_style_index.js",
"fileHash": "0537d086",
"fileHash": "0123ae00",
"needsInterop": false
},
"@bmapgl-plugin/cluster": {
"src": "../../@bmapgl-plugin/cluster/index.js",
"file": "@bmapgl-plugin_cluster.js",
"fileHash": "76122e4a",
"@amap/amap-jsapi-loader": {
"src": "../../.pnpm/@amap+amap-jsapi-loader@1.0.1/node_modules/@amap/amap-jsapi-loader/dist/index.js",
"file": "@amap_amap-jsapi-loader.js",
"fileHash": "94957f44",
"needsInterop": true
},
"mitt": {
"src": "../../.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs",
"file": "mitt.js",
"fileHash": "e85c7fe4",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "b06aa374",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "3a29e5a8",
"needsInterop": false
},
"element-plus/es/components/cascader/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/cascader/style/index.mjs",
"file": "element-plus_es_components_cascader_style_index.js",
"fileHash": "bffd4874",
"needsInterop": false
},
"echarts": {
"src": "../../echarts/index.js",
"src": "../../.pnpm/echarts@6.0.0/node_modules/echarts/index.js",
"file": "echarts.js",
"fileHash": "1c4eb8d2",
"fileHash": "b7d5acf9",
"needsInterop": false
},
"lodash-es": {
"src": "../../lodash-es/lodash.js",
"file": "lodash-es.js",
"fileHash": "810dae55",
"fileHash": "35e49d1c",
"needsInterop": false
},
"element-plus/es/components/form/style/index": {
"src": "../../element-plus/es/components/form/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/form/style/index.mjs",
"file": "element-plus_es_components_form_style_index.js",
"fileHash": "970d9f3d",
"fileHash": "3d1ae4d8",
"needsInterop": false
},
"element-plus/es/components/button/style/index": {
"src": "../../element-plus/es/components/button/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/button/style/index.mjs",
"file": "element-plus_es_components_button_style_index.js",
"fileHash": "9f2dfef8",
"fileHash": "cc030ebe",
"needsInterop": false
},
"element-plus/es/components/checkbox/style/index": {
"src": "../../element-plus/es/components/checkbox/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/checkbox/style/index.mjs",
"file": "element-plus_es_components_checkbox_style_index.js",
"fileHash": "9af6d3a5",
"fileHash": "96a4f578",
"needsInterop": false
},
"element-plus/es/components/form-item/style/index": {
"src": "../../element-plus/es/components/form-item/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/form-item/style/index.mjs",
"file": "element-plus_es_components_form-item_style_index.js",
"fileHash": "796b51f1",
"fileHash": "656b0133",
"needsInterop": false
},
"element-plus/es/components/input/style/index": {
"src": "../../element-plus/es/components/input/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/input/style/index.mjs",
"file": "element-plus_es_components_input_style_index.js",
"fileHash": "6810a81c",
"fileHash": "7560e0d7",
"needsInterop": false
},
"jsencrypt": {
"src": "../../jsencrypt/lib/index.js",
"src": "../../.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.js",
"file": "jsencrypt.js",
"fileHash": "0700df96",
"fileHash": "36170e3c",
"needsInterop": false
},
"element-plus/es/locales.mjs": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/locales.mjs",
"file": "element-plus_es_locales__mjs.js",
"fileHash": "9ee1fc4b",
"needsInterop": false
},
"gsap": {
"src": "../../gsap/index.js",
"src": "../../.pnpm/gsap@3.13.0/node_modules/gsap/index.js",
"file": "gsap.js",
"fileHash": "93435ea0",
"fileHash": "80c73c13",
"needsInterop": false
},
"element-plus/es/components/image/style/index": {
"src": "../../element-plus/es/components/image/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/image/style/index.mjs",
"file": "element-plus_es_components_image_style_index.js",
"fileHash": "ade67ad6",
"fileHash": "65fdaaf7",
"needsInterop": false
},
"element-plus/es/components/radio-group/style/index": {
"src": "../../element-plus/es/components/radio-group/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/radio-group/style/index.mjs",
"file": "element-plus_es_components_radio-group_style_index.js",
"fileHash": "2230c661",
"fileHash": "f6746f4f",
"needsInterop": false
},
"element-plus/es/components/radio-button/style/index": {
"src": "../../element-plus/es/components/radio-button/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/radio-button/style/index.mjs",
"file": "element-plus_es_components_radio-button_style_index.js",
"fileHash": "215535d2",
"fileHash": "1a146c86",
"needsInterop": false
},
"element-plus/es/components/table/style/index": {
"src": "../../element-plus/es/components/table/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/table/style/index.mjs",
"file": "element-plus_es_components_table_style_index.js",
"fileHash": "8fc19294",
"fileHash": "c67b6370",
"needsInterop": false
},
"element-plus/es/components/table-column/style/index": {
"src": "../../element-plus/es/components/table-column/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/table-column/style/index.mjs",
"file": "element-plus_es_components_table-column_style_index.js",
"fileHash": "0e0deee5",
"fileHash": "3e51f843",
"needsInterop": false
},
"element-plus/es/components/empty/style/index": {
"src": "../../element-plus/es/components/empty/style/index.mjs",
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/empty/style/index.mjs",
"file": "element-plus_es_components_empty_style_index.js",
"fileHash": "193464b9",
"fileHash": "62165c23",
"needsInterop": false
},
"three": {
"src": "../../three/build/three.module.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/build/three.module.js",
"file": "three.js",
"fileHash": "a2a26ed0",
"fileHash": "acd8be1d",
"needsInterop": false
},
"three/examples/jsm/controls/OrbitControls.js": {
"src": "../../three/examples/jsm/controls/OrbitControls.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/controls/OrbitControls.js",
"file": "three_examples_jsm_controls_OrbitControls__js.js",
"fileHash": "34cf4c25",
"fileHash": "28b59dff",
"needsInterop": false
},
"three/examples/jsm/renderers/CSS2DRenderer.js": {
"src": "../../three/examples/jsm/renderers/CSS2DRenderer.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js",
"file": "three_examples_jsm_renderers_CSS2DRenderer__js.js",
"fileHash": "7468204b",
"fileHash": "0402defc",
"needsInterop": false
},
"three/addons/renderers/CSS3DRenderer.js": {
"src": "../../three/examples/jsm/renderers/CSS3DRenderer.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js",
"file": "three_addons_renderers_CSS3DRenderer__js.js",
"fileHash": "7bef1bf6",
"fileHash": "e187b6ec",
"needsInterop": false
},
"three/addons/postprocessing/EffectComposer.js": {
"src": "../../three/examples/jsm/postprocessing/EffectComposer.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/postprocessing/EffectComposer.js",
"file": "three_addons_postprocessing_EffectComposer__js.js",
"fileHash": "9ef4409f",
"fileHash": "73b4ed17",
"needsInterop": false
},
"three/addons/postprocessing/RenderPass.js": {
"src": "../../three/examples/jsm/postprocessing/RenderPass.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/postprocessing/RenderPass.js",
"file": "three_addons_postprocessing_RenderPass__js.js",
"fileHash": "b83c3a33",
"fileHash": "69f178bd",
"needsInterop": false
},
"three/addons/postprocessing/OutlinePass.js": {
"src": "../../three/examples/jsm/postprocessing/OutlinePass.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/postprocessing/OutlinePass.js",
"file": "three_addons_postprocessing_OutlinePass__js.js",
"fileHash": "6e02a652",
"fileHash": "db4d4624",
"needsInterop": false
},
"d3": {
"src": "../../d3/src/index.js",
"src": "../../.pnpm/d3@7.9.0/node_modules/d3/src/index.js",
"file": "d3.js",
"fileHash": "8a875b0d",
"fileHash": "e03cf7b9",
"needsInterop": false
},
"three/examples/jsm/lines/Line2.js": {
"src": "../../three/examples/jsm/lines/Line2.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/lines/Line2.js",
"file": "three_examples_jsm_lines_Line2__js.js",
"fileHash": "b09fa5aa",
"fileHash": "1d1bf1ea",
"needsInterop": false
},
"three/examples/jsm/lines/LineGeometry.js": {
"src": "../../three/examples/jsm/lines/LineGeometry.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/lines/LineGeometry.js",
"file": "three_examples_jsm_lines_LineGeometry__js.js",
"fileHash": "2853a7f4",
"fileHash": "080284d4",
"needsInterop": false
},
"three/examples/jsm/lines/LineMaterial.js": {
"src": "../../three/examples/jsm/lines/LineMaterial.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/lines/LineMaterial.js",
"file": "three_examples_jsm_lines_LineMaterial__js.js",
"fileHash": "a4ea8742",
"fileHash": "4349af95",
"needsInterop": false
},
"three/examples/jsm/renderers/CSS3DRenderer.js": {
"src": "../../three/examples/jsm/renderers/CSS3DRenderer.js",
"src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js",
"file": "three_examples_jsm_renderers_CSS3DRenderer__js.js",
"fileHash": "6deae146",
"fileHash": "df4a41bc",
"needsInterop": false
},
"element-plus/es/locales.mjs": {
"src": "../../element-plus/es/locales.mjs",
"file": "element-plus_es_locales__mjs.js",
"fileHash": "61130207",
"element-plus/es/components/card/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/card/style/index.mjs",
"file": "element-plus_es_components_card_style_index.js",
"fileHash": "218ffed9",
"needsInterop": false
},
"element-plus/es/components/link/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/link/style/index.mjs",
"file": "element-plus_es_components_link_style_index.js",
"fileHash": "0f278fe0",
"needsInterop": false
}
},
"chunks": {
"chunk-IYMVL6BZ": {
"file": "chunk-IYMVL6BZ.js"
},
"chunk-NY4Z4LNU": {
"file": "chunk-NY4Z4LNU.js"
},
"chunk-FEBRQDH5": {
"file": "chunk-FEBRQDH5.js"
"chunk-CQSJN7WN": {
"file": "chunk-CQSJN7WN.js"
},
"chunk-ZYSY3OGM": {
"file": "chunk-ZYSY3OGM.js"
"chunk-PPLACW3U": {
"file": "chunk-PPLACW3U.js"
},
"chunk-MFBDIXYG": {
"file": "chunk-MFBDIXYG.js"
"chunk-YP2RKF6U": {
"file": "chunk-YP2RKF6U.js"
},
"chunk-ZS2WBNEI": {
"file": "chunk-ZS2WBNEI.js"
"chunk-ZYZE4ADI": {
"file": "chunk-ZYZE4ADI.js"
},
"chunk-4GXJ2MCF": {
"file": "chunk-4GXJ2MCF.js"
"chunk-IXSGC3JQ": {
"file": "chunk-IXSGC3JQ.js"
},
"chunk-HNP5HSLD": {
"file": "chunk-HNP5HSLD.js"
"chunk-27VY4B4A": {
"file": "chunk-27VY4B4A.js"
},
"chunk-RG7S6HTO": {
"file": "chunk-RG7S6HTO.js"
"chunk-QMPMWDA4": {
"file": "chunk-QMPMWDA4.js"
},
"chunk-TZOTQKIH": {
"file": "chunk-TZOTQKIH.js"
"chunk-U7ZX2BS5": {
"file": "chunk-U7ZX2BS5.js"
},
"chunk-372N3PK6": {
"file": "chunk-372N3PK6.js"
"chunk-WGK4RKLA": {
"file": "chunk-WGK4RKLA.js"
},
"chunk-PCQ6BLF2": {
"file": "chunk-PCQ6BLF2.js"
"chunk-KL6JP65J": {
"file": "chunk-KL6JP65J.js"
},
"chunk-IQCPA24U": {
"file": "chunk-IQCPA24U.js"
"chunk-XJ4FNH6G": {
"file": "chunk-XJ4FNH6G.js"
},
"chunk-TKM7ANES": {
"file": "chunk-TKM7ANES.js"
"chunk-ZFNCKSYC": {
"file": "chunk-ZFNCKSYC.js"
},
"chunk-S4WGN4LU": {
"file": "chunk-S4WGN4LU.js"
"chunk-WYGDTZ7H": {
"file": "chunk-WYGDTZ7H.js"
},
"chunk-3EK6V4TN": {
"file": "chunk-3EK6V4TN.js"
"chunk-5WDSIG6Y": {
"file": "chunk-5WDSIG6Y.js"
},
"chunk-5HXAQIWW": {
"file": "chunk-5HXAQIWW.js"
},
"chunk-JDSL2H4L": {
"file": "chunk-JDSL2H4L.js"
"chunk-P6TLTLJ2": {
"file": "chunk-P6TLTLJ2.js"
},
"chunk-G3PMV62Z": {
"file": "chunk-G3PMV62Z.js"
},
"chunk-HQ2UCEI6": {
"file": "chunk-HQ2UCEI6.js"
}
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -311,7 +311,6 @@ import {
localeContextKey,
makeInstaller,
makeList,
mentionDefaultProps,
mentionEmits,
mentionProps,
menuEmits,
......@@ -510,11 +509,10 @@ import {
virtualizedScrollbarProps,
watermarkProps,
zIndexContextKey
} from "./chunk-IQCPA24U.js";
import "./chunk-TKM7ANES.js";
import "./chunk-S4WGN4LU.js";
import "./chunk-3EK6V4TN.js";
import "./chunk-JDSL2H4L.js";
} from "./chunk-ZFNCKSYC.js";
import "./chunk-WYGDTZ7H.js";
import "./chunk-5WDSIG6Y.js";
import "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js";
var export_dayjs = import_dayjs.default;
export {
......@@ -832,7 +830,6 @@ export {
localeContextKey,
makeInstaller,
makeList,
mentionDefaultProps,
mentionEmits,
mentionProps,
menuEmits,
......
import "./chunk-G3PMV62Z.js";
// node_modules/mitt/dist/mitt.mjs
// node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs
function mitt_default(n) {
return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {
var i = n.get(t);
......
{
"version": 3,
"sources": ["../../mitt/src/index.ts"],
"sources": ["../../.pnpm/mitt@3.0.1/node_modules/mitt/src/index.ts"],
"sourcesContent": ["export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n"],
"mappings": ";;;sBA8CCA,GAAAA;AAOA,SAAO,EAINA,KANDA,IAAMA,KAAO,oBAAIC,OAchBC,IAAAA,SAA6BC,GAAWC,GAAAA;AACvC,QAAMC,IAAmDL,EAAKM,IAAIH,CAAAA;AAC9DE,QACHA,EAASE,KAAKH,CAAAA,IAEdJ,EAAKQ,IAAIL,GAAM,CAACC,CAAAA,CAAAA;EAAAA,GAWlBK,KAAAA,SAA8BN,GAAWC,GAAAA;AACxC,QAAMC,IAAmDL,EAAKM,IAAIH,CAAAA;AAC9DE,UACCD,IACHC,EAASK,OAAOL,EAASM,QAAQP,CAAAA,MAAa,GAAG,CAAA,IAEjDJ,EAAKQ,IAAIL,GAAM,CAAA,CAAA;EAAA,GAelBS,MAAAA,SAA+BT,GAAWU,GAAAA;AACzC,QAAIR,IAAWL,EAAKM,IAAIH,CAAAA;AACpBE,SACFA,EACCS,MAAAA,EACAC,IAAI,SAACX,IAAAA;AACLA,MAAAA,GAAQS,CAAAA;IAAAA,CAAAA,IAIXR,IAAWL,EAAKM,IAAI,GAAA,MAElBD,EACCS,MAAAA,EACAC,IAAI,SAACX,IAAAA;AACLA,MAAAA,GAAQD,GAAMU,CAAAA;IAAAA,CAAAA;EAAAA,EAAAA;AAAAA;",
"names": ["all", "Map", "on", "type", "handler", "handlers", "get", "push", "set", "off", "splice", "indexOf", "emit", "evt", "slice", "map"]
......
......@@ -16,10 +16,10 @@ import {
unref,
watch,
watchEffect
} from "./chunk-JDSL2H4L.js";
} from "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js";
// node_modules/@vue/devtools-api/lib/esm/env.js
// node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/env.js
function getDevtoolsGlobalHook() {
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
}
......@@ -28,11 +28,11 @@ function getTarget() {
}
var isProxyAvailable = typeof Proxy === "function";
// node_modules/@vue/devtools-api/lib/esm/const.js
// node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/const.js
var HOOK_SETUP = "devtools-plugin:setup";
var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
// node_modules/@vue/devtools-api/lib/esm/time.js
// node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/time.js
var supported;
var perf;
function isPerformanceSupported() {
......@@ -55,7 +55,7 @@ function now() {
return isPerformanceSupported() ? perf.now() : Date.now();
}
// node_modules/@vue/devtools-api/lib/esm/proxy.js
// node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/proxy.js
var ApiProxy = class {
constructor(plugin, hook) {
this.target = null;
......@@ -155,7 +155,7 @@ var ApiProxy = class {
}
};
// node_modules/@vue/devtools-api/lib/esm/index.js
// node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/index.js
function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
const descriptor = pluginDescriptor;
const target = getTarget();
......@@ -177,7 +177,7 @@ function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
}
}
// node_modules/vue-router/dist/vue-router.mjs
// node_modules/.pnpm/vue-router@4.5.1_vue@3.5.21_typescript@5.8.3_/node_modules/vue-router/dist/vue-router.mjs
var isBrowser = typeof document !== "undefined";
function isRouteComponent(component) {
return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -168,7 +168,7 @@ import {
withMemo,
withModifiers,
withScopeId
} from "./chunk-JDSL2H4L.js";
} from "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js";
export {
BaseTransition,
......
......@@ -47,9 +47,6 @@ importers:
nprogress:
specifier: ^0.2.0
version: 0.2.0
particles.vue3:
specifier: ^2.12.0
version: 2.12.0(typescript@5.8.3)
pinia:
specifier: ^3.0.3
version: 3.0.3(typescript@5.8.3)(vue@3.5.21(typescript@5.8.3))
......@@ -62,9 +59,6 @@ importers:
three:
specifier: ^0.181.2
version: 0.181.2
tsparticles:
specifier: ^3.9.1
version: 3.9.1
vue:
specifier: ^3.5.18
version: 3.5.21(typescript@5.8.3)
......@@ -631,147 +625,6 @@ packages:
'@tailwindcss/postcss@4.1.13':
resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==}
'@tsparticles/basic@3.9.1':
resolution: {integrity: sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ==}
'@tsparticles/engine@3.9.1':
resolution: {integrity: sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ==}
'@tsparticles/interaction-external-attract@3.9.1':
resolution: {integrity: sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg==}
'@tsparticles/interaction-external-bounce@3.9.1':
resolution: {integrity: sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==}
'@tsparticles/interaction-external-bubble@3.9.1':
resolution: {integrity: sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ==}
'@tsparticles/interaction-external-connect@3.9.1':
resolution: {integrity: sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA==}
'@tsparticles/interaction-external-grab@3.9.1':
resolution: {integrity: sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow==}
'@tsparticles/interaction-external-pause@3.9.1':
resolution: {integrity: sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g==}
'@tsparticles/interaction-external-push@3.9.1':
resolution: {integrity: sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw==}
'@tsparticles/interaction-external-remove@3.9.1':
resolution: {integrity: sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA==}
'@tsparticles/interaction-external-repulse@3.9.1':
resolution: {integrity: sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw==}
'@tsparticles/interaction-external-slow@3.9.1':
resolution: {integrity: sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ==}
'@tsparticles/interaction-external-trail@3.9.1':
resolution: {integrity: sha512-Au0v2oiqfKTemI/4bzjD4dUXzIngB5Q2T4nJcMCYpP24uZfwZh5xTjUMH7gyJyyaRTdMl9IJrp8ySjyYbLfeGg==}
'@tsparticles/interaction-particles-attract@3.9.1':
resolution: {integrity: sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ==}
'@tsparticles/interaction-particles-collisions@3.9.1':
resolution: {integrity: sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w==}
'@tsparticles/interaction-particles-links@3.9.1':
resolution: {integrity: sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg==}
'@tsparticles/move-base@3.9.1':
resolution: {integrity: sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ==}
'@tsparticles/move-parallax@3.9.1':
resolution: {integrity: sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA==}
'@tsparticles/plugin-absorbers@3.9.1':
resolution: {integrity: sha512-q9SQllpbPPgw1+euxHPYCFawOVUazQkkwnleiIgpYSiimlCyjIdwGnFPSNe1Sypzqmr2h6oOyX2vkK5ZVNEu8A==}
'@tsparticles/plugin-easing-quad@3.9.1':
resolution: {integrity: sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw==}
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
resolution: {integrity: sha512-z+9MsAPWr++sNz6N6303rRDjusW0BIPhHY51E5eXGDcRdOqrESDs6y99AJ/6Kdb/PpibCIYjFY9jVi2JJADPRA==}
'@tsparticles/plugin-emitters-shape-square@3.9.1':
resolution: {integrity: sha512-dhA1c7FKs19B8lgTf25OTA3JoptNA+rjorsqCFuY1BZDI8g9E8DNqikUge14/W7nZN96+98hY+ghxSl4K2YsgA==}
'@tsparticles/plugin-emitters@3.9.1':
resolution: {integrity: sha512-h7opR8SoFWBmVHceDLJUerLENaPfkJSh2zQYvzmLj2L+V3VLS1QDgty+4QZVeZfqNROmgQw2eLFA5El1E0sqqw==}
'@tsparticles/plugin-hex-color@3.9.1':
resolution: {integrity: sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg==}
'@tsparticles/plugin-hsl-color@3.9.1':
resolution: {integrity: sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w==}
'@tsparticles/plugin-rgb-color@3.9.1':
resolution: {integrity: sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ==}
'@tsparticles/shape-circle@3.9.1':
resolution: {integrity: sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g==}
'@tsparticles/shape-emoji@3.9.1':
resolution: {integrity: sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ==}
'@tsparticles/shape-image@3.9.1':
resolution: {integrity: sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==}
'@tsparticles/shape-line@3.9.1':
resolution: {integrity: sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ==}
'@tsparticles/shape-polygon@3.9.1':
resolution: {integrity: sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ==}
'@tsparticles/shape-square@3.9.1':
resolution: {integrity: sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ==}
'@tsparticles/shape-star@3.9.1':
resolution: {integrity: sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA==}
'@tsparticles/shape-text@3.9.1':
resolution: {integrity: sha512-oNsLHI0lGkIXoUw3W598iwd7dtoHCDrwpwJRGnQzgfk6T5a9dCpSD5vDeQN89lr3BUbVui4lhxq+/TyC64oAqA==}
'@tsparticles/slim@3.9.1':
resolution: {integrity: sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw==}
'@tsparticles/updater-color@3.9.1':
resolution: {integrity: sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg==}
'@tsparticles/updater-destroy@3.9.1':
resolution: {integrity: sha512-MjMzEhZwCQIbxO6ZRM0eXsHVwmlXuUqwC43WCPZCpjhK3AJrMu3KR4xsJieFTWIbVNguAvbgoTB10FfJOUU5VA==}
'@tsparticles/updater-life@3.9.1':
resolution: {integrity: sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA==}
'@tsparticles/updater-opacity@3.9.1':
resolution: {integrity: sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw==}
'@tsparticles/updater-out-modes@3.9.1':
resolution: {integrity: sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg==}
'@tsparticles/updater-roll@3.9.1':
resolution: {integrity: sha512-zl4JeM3gUBJ0uttmIsond3lrZ3f3AkItFeS0Lhj/7jiCKfUoRyyOMrcBk8R1AhW7lI+7ko1iBs3jhO0jnxz9vg==}
'@tsparticles/updater-rotate@3.9.1':
resolution: {integrity: sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ==}
'@tsparticles/updater-size@3.9.1':
resolution: {integrity: sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==}
'@tsparticles/updater-stroke-color@3.9.1':
resolution: {integrity: sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA==}
'@tsparticles/updater-tilt@3.9.1':
resolution: {integrity: sha512-PB2yaoyXRmSk4iIVgjtRrzOxXMK9mjeAQHIJGtT4faq46Z8cbIIEFgjTwqrUV8qOrNg/h4sm5NE/s0qsTYjp1Q==}
'@tsparticles/updater-twinkle@3.9.1':
resolution: {integrity: sha512-xgTcYr6LmP44IPIBeQmEExN2Y5Nfl3ikmC08eOh5nZy/ta6ORP+JTsprrnfuv/O2DwTyoqFLkZ16hZfkdc1yOQ==}
'@tsparticles/updater-wobble@3.9.1':
resolution: {integrity: sha512-c99Ogy9q4QWO+zsDXol0UnpUwZiY2UucFb8ltuDv9AlbGUeprygoub8jhgT5pEDv+GdzWOJGSgq7rfgv9cHBrg==}
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
......@@ -1435,10 +1288,6 @@ packages:
nprogress@0.2.0:
resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
particles.vue3@2.12.0:
resolution: {integrity: sha512-t1AFUSuL+zzXO5fvBq6y76DAyy6sXtBOVY3UirNzaRQ0JCqSV3wCQwQ2N51tJRG6V952ARi87NMcQP5VwfTkqA==}
deprecated: '@tsparticles/vue3 is the new package for v3, please use that'
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
......@@ -1557,13 +1406,6 @@ packages:
tslib@2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
tsparticles-engine@2.12.0:
resolution: {integrity: sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==}
deprecated: starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name
tsparticles@3.9.1:
resolution: {integrity: sha512-Y780IGSL4qjkZj7+fI92PV/cziHqLR/s6nnYri4K6vH3NQRmDK5D6pfskDO8T4Y96ChCWHY3uxPtOb/hKQ83Qg==}
typescript@5.8.3:
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
engines: {node: '>=14.17'}
......@@ -2038,228 +1880,6 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.13
'@tsparticles/basic@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base': 3.9.1
'@tsparticles/plugin-hex-color': 3.9.1
'@tsparticles/plugin-hsl-color': 3.9.1
'@tsparticles/plugin-rgb-color': 3.9.1
'@tsparticles/shape-circle': 3.9.1
'@tsparticles/updater-color': 3.9.1
'@tsparticles/updater-opacity': 3.9.1
'@tsparticles/updater-out-modes': 3.9.1
'@tsparticles/updater-size': 3.9.1
'@tsparticles/engine@3.9.1': {}
'@tsparticles/interaction-external-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bounce@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bubble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-connect@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-grab@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-pause@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-push@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-remove@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-repulse@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-slow@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-collisions@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-links@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-parallax@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-absorbers@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-easing-quad@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hex-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hsl-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-rgb-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-emoji@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-image@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-line@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-polygon@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-star@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-text@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/slim@3.9.1':
dependencies:
'@tsparticles/basic': 3.9.1
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-attract': 3.9.1
'@tsparticles/interaction-external-bounce': 3.9.1
'@tsparticles/interaction-external-bubble': 3.9.1
'@tsparticles/interaction-external-connect': 3.9.1
'@tsparticles/interaction-external-grab': 3.9.1
'@tsparticles/interaction-external-pause': 3.9.1
'@tsparticles/interaction-external-push': 3.9.1
'@tsparticles/interaction-external-remove': 3.9.1
'@tsparticles/interaction-external-repulse': 3.9.1
'@tsparticles/interaction-external-slow': 3.9.1
'@tsparticles/interaction-particles-attract': 3.9.1
'@tsparticles/interaction-particles-collisions': 3.9.1
'@tsparticles/interaction-particles-links': 3.9.1
'@tsparticles/move-parallax': 3.9.1
'@tsparticles/plugin-easing-quad': 3.9.1
'@tsparticles/shape-emoji': 3.9.1
'@tsparticles/shape-image': 3.9.1
'@tsparticles/shape-line': 3.9.1
'@tsparticles/shape-polygon': 3.9.1
'@tsparticles/shape-square': 3.9.1
'@tsparticles/shape-star': 3.9.1
'@tsparticles/updater-life': 3.9.1
'@tsparticles/updater-rotate': 3.9.1
'@tsparticles/updater-stroke-color': 3.9.1
'@tsparticles/updater-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-destroy@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-life@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-opacity@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-out-modes@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-roll@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-rotate@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-size@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-stroke-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-tilt@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-twinkle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-wobble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@types/estree@1.0.8': {}
'@types/js-cookie@3.0.6': {}
......@@ -2954,13 +2574,6 @@ snapshots:
nprogress@0.2.0: {}
particles.vue3@2.12.0(typescript@5.8.3):
dependencies:
tsparticles-engine: 2.12.0
vue: 3.5.21(typescript@5.8.3)
transitivePeerDependencies:
- typescript
path-browserify@1.0.1: {}
pathe@2.0.3: {}
......@@ -3091,24 +2704,6 @@ snapshots:
tslib@2.3.0: {}
tsparticles-engine@2.12.0: {}
tsparticles@3.9.1:
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail': 3.9.1
'@tsparticles/plugin-absorbers': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-circle': 3.9.1
'@tsparticles/plugin-emitters-shape-square': 3.9.1
'@tsparticles/shape-text': 3.9.1
'@tsparticles/slim': 3.9.1
'@tsparticles/updater-destroy': 3.9.1
'@tsparticles/updater-roll': 3.9.1
'@tsparticles/updater-tilt': 3.9.1
'@tsparticles/updater-twinkle': 3.9.1
'@tsparticles/updater-wobble': 3.9.1
typescript@5.8.3: {}
ufo@1.6.1: {}
......
......@@ -60,3 +60,12 @@ export function countBySysType(deptId: number) {
method: "get",
});
}
// 地图 获取设备
export function deviceList(deptId: number) {
return request({
url: "/iot-device/baseDevice/list?pageNum=1&pageSize=10000000000000",
method: "get",
});
// pageNum=1&pageSize=10
}
......@@ -129,7 +129,7 @@ import SysClassification from "./components/SysClassification.vue";
import DeviceClassification from "./components/DeviceClassification.vue";
import EquipmentAlarm from "./components/EquipmentAlarm.vue";
import Alert7Days from "./components/Alert7Days.vue";
import MapEcharts from "./components/MapEcharts.vue";
import MapEcharts from "./components/MapEcharts1.vue";
import DeployProject from "./components/DeployProject.vue";
import SubsidiaryCompanyEquipment from "./components/SubsidiaryCompanyEquipment.vue";
// import Map from "./components/Map.vue";
......
......@@ -121,18 +121,16 @@
</template>
<script setup lang="ts">
import { ref, onMounted, onUnmounted } from "vue";
import DeviceNumber from "./components/DeviceNumber.vue";
import SysClassification from "./components/SysClassification.vue";
import DeviceClassification from "./components/DeviceClassification.vue";
import EquipmentAlarm from "./components/EquipmentAlarm.vue";
import Alert7Days from "./components/Alert7Days.vue";
import MapEcharts from "./components/Map1.vue";
import MapEcharts from "./components/Map.vue";
import DeployProject from "./components/DeployProject.vue";
import SubsidiaryCompanyEquipment from "./components/SubsidiaryCompanyEquipment.vue";
import ContainerWrap from "@/components/ContainerWrap/index.vue";
// import Map from "./components/Map.vue";
import { ref, onMounted, onUnmounted } from "vue";
import { eventBus } from "@/eventBus";
import { nowTime } from "@/api/iot/home";
const nowTimes = ref("");
......
......@@ -7,12 +7,12 @@
import { ref, onMounted, onBeforeUnmount } from "vue";
import * as echarts from "echarts";
import { countByDay } from "@/api/iot/home";
import { de } from "element-plus/es/locales.mjs";
const chartRef = ref<HTMLDivElement>();
const chartContainer = ref<HTMLDivElement>();
const chartInstance = ref<echarts.ECharts | null>(null);
let resizeObserver: ResizeObserver | null = null;
const isNull = ref(true);
const xData = ref<any[]>([
{
......@@ -73,6 +73,17 @@ const initChart = () => {
chartInstance.value = echarts.init(chartRef.value);
const option = {
title: {
show: !isNull.value,
text: "暂无数据",
x: "center",
y: "center",
textStyle: {
fontSize: 16,
color: "#66FFFF",
fontFamily: "PangMen",
},
},
tooltip: {
trigger: "axis",
axisPointer: {
......@@ -269,10 +280,14 @@ onMounted(() => {
endTime: new Date().toISOString().substring(0, 10) + " 23:59:59",
};
// 获取近7天告警统计
countByDay(data).then((res) => {
countByDay(data).then((res: any) => {
if (res.code === 200) {
const haveHandle = res.data.haveHandle; //已处理
const notHandle = res.data.notHandle; //未处理
const haveIgnore = res.data.haveIgnore; //已忽略
if (!haveHandle && !notHandle && !haveIgnore) {
isNull.value = false; //暂无数据
}
// 将近7天的日期添加到xData.time中,格式为yyyy-MM-dd 00:00:00
xData.value.forEach((item, index) => {
item.time = `${new Date(
......@@ -285,7 +300,6 @@ onMounted(() => {
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getDate()} 00:00:00`;
});
// 将近7天的时间戳添加到xData.timestamp中
xData.value.forEach((item, index) => {
item.timestamp = new Date(item.time).getTime();
......@@ -322,6 +336,27 @@ onMounted(() => {
}
}
initChart();
} else {
// 将近7天的日期添加到xData.time中,格式为yyyy-MM-dd 00:00:00
xData.value.forEach((item, index) => {
item.time = `${new Date(
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getFullYear()}-${
new Date(
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getMonth() + 1
}-${new Date(
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getDate()} 00:00:00`;
});
xData.value.forEach((item) => {
item.haveHandle = 0;
item.notHandle = 0;
item.haveIgnore = 0;
});
isNull.value = false; //暂无数据
initChart();
}
});
// 使用 ResizeObserver 监听容器尺寸变化
......
......@@ -192,6 +192,8 @@ const handleResize = () => {
onMounted(() => {
deviceCountByType(props.deptId, "1").then((res: any) => {
if (res.code === 200) {
const dcbt = res.dcbt || [];
if (dcbt.length > 0) {
//将res.dcbt中的数据赋值给datas.value
datas.value = res.dcbt.map((item: any) => ({
value: item.count,
......@@ -202,6 +204,22 @@ onMounted(() => {
(acc: number, item: any) => acc + item.count,
0
);
} else {
datas.value = [
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
];
totalCount.value = 0;
}
initChart();
} else {
datas.value = [
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
];
totalCount.value = 0;
initChart();
}
});
......
......@@ -70,7 +70,7 @@ const props = defineProps({
},
});
// 设备接入数量(在线、离线)
var sumCount = ref([]);
var sumCount = ref("0".padStart(9, "0").split(""));
//在线数量
var onLineCount = ref(0);
//离线数量
......
......@@ -45,7 +45,7 @@
<div
class="font-medium text-[28px] text-[#66FFFF] font-[YouSheBiaoTiHei]"
>
{{ processedCount }}
{{ ignoredCount }}
</div>
<img
src="@/assets/imgs/equ-right-icon.png"
......
<template>
<div ref="mapContainer" class="map-container"></div>
<!-- map-container上面加一个下拉框 -->
<div class="map-container w-full h-full relative" id="container">
<div class="absolute top-2 left-2 z-10">
<el-select
style="width: 130px"
v-model="selectedScene"
placeholder="设备筛选"
@change="handleSceneChange"
>
<el-option
v-for="item in deviceData"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
import sd1Img from '/src/assets/imgs/sd-1.png'
import sd2Img from '/src/assets/imgs/sd-2.png'
import sd3Img from '/src/assets/imgs/sd-3.png'
import tooltipbox from '/src/assets/imgs/tooltipbox1.png'
const mapContainer = ref<HTMLDivElement>()
onMounted(() => {
const myChart = echarts.init(mapContainer.value)
var jsonData = {
"dataPoint": [{
"name": "xxx隧道1",
"value": [112.466466, 37.954529, 300],
"tunnelLength": "5.2公里",
"tunnelType": "双向四车道",
"progress": "75%",
"constructionUnit": "山西路桥建设集团",
"builder": "中铁十二局",
"constructionDays": "450天",
"isCompleted": "否"
}, {
"name": "xxx隧道2",
"value": [112.867566, 36.564529, 300],
"tunnelLength": "3.8公里",
"tunnelType": "双向两车道",
"progress": "92%",
"constructionUnit": "山西交通建设集团",
"builder": "中铁十八局",
"constructionDays": "380天",
"isCompleted": "否"
}]
}
myChart.showLoading();
var colorList = ["#d1d756", "#e8a74f", "#d64560"];
var dataTemp: any[] = jsonData.dataPoint;
var realData = []
echarts.util.each(dataTemp, (item, index) => {
if (index == undefined) return;
realData.push({
name: dataTemp[index].name,
value: dataTemp[index].value,
tunnelLength: dataTemp[index].tunnelLength,
tunnelType: dataTemp[index].tunnelType,
progress: dataTemp[index].progress,
constructionUnit: dataTemp[index].constructionUnit,
builder: dataTemp[index].builder,
constructionDays: dataTemp[index].constructionDays,
isCompleted: dataTemp[index].isCompleted,
itemStyle: {
normal: {
color: colorList[index]
}
}
});
})
const loadJson = async () => {
const response = await fetch('/shanxi.json')
const data = await response.json()
return data
}
loadJson().then(data => {
echarts.registerMap('shanxi', data);
myChart.hideLoading();
const option = {
// 标题
title: {
show: false,
<script setup>
import { onMounted, onUnmounted, nextTick } from "vue";
import AMapLoader from "@amap/amap-jsapi-loader";
import mapBg from "/src/assets/imgs/map-bg.png";
import closeIcon from "/src/assets/imgs/close-icon.png";
import { deviceList } from "@/api/iot/home";
let map = null;
let showInfoWindow = false;
let infoWindow = null;
var points = ref([]);
const props = defineProps({
deptId: {
type: Number,
default: 0,
},
});
tooltip: {
trigger: 'item',
},
// 地理坐标系组件
geo: {
map: 'shanxi',
zoom: 1,
label: {
show: true, // 将这里从false改为true
fontSize: 12, // 可以根据需要调整字体大小
color: '#044B4D', // 标签颜色
},
itemStyle: {
areaColor: 'rgba(4, 31, 83, 0.8)',
// 设置外层边框
borderWidth: 1,
shadowColor: 'rgba(0, 133, 255, 0.4)',
shadowOffsetY: 7,
shadowOffsetX: 7,
},
},
series: [
const deviceData = [
{
// 图表的类型为散点图(地图上的黄色旗子)
type: 'scatter',
name: 'hasProperty',
// 采用的坐标系为地理坐标系
coordinateSystem: 'geo',
// 散点图上点的大小
symbolSize: 26,
// 标记的图形
symbol: function (value, params) {
const imageIndex = params.dataIndex % 3;
if (imageIndex === 0) {
return `image://${sd1Img}`;
} else if (imageIndex === 1) {
return `image://${sd2Img}`;
} else {
return `image://${sd3Img}`;
}
},
// 区名称的样式
label: {
show: true,
formatter: '{b}',
position: 'bottom',
color: '#fff',
fontSize: 14,
},
itemStyle: {
color: '#ddb926',
opacity: 1,
},
// 添加选中模式
selectedMode: 'single', // 可以是'single'或'multiple'
// 添加选中状态的样式
select: {
itemStyle: {
borderColor: '#ff6b6b',
borderWidth: 3,
shadowBlur: 10,
shadowColor: 'rgba(255, 107, 107, 0.5)'
},
symbolSize: 30 // 选中时放大
},
// 添加高亮状态的样式
emphasis: {
itemStyle: {
borderColor: '#2CC5D4',
borderWidth: 2
},
symbolSize: 28 // 悬停时放大
},
// 提示框
tooltip: {
backgroundColor: 'rgba(0, 0, 0, 0.4)',
textStyle: {
color: '#fff',
fontSize: 14,
},
borderWidth: 0,
padding: 0,
alwaysShowContent: true,
className: 'w-full h-full',
formatter: function (params) {
// 检查是否存在隧道详情数据
if (!params.data) {
return params.name + '<br>' + '暂无详细信息';
}
// 使用HTML创建美观的tooltip内容
return `
<div style="background: url(${tooltipbox}) no-repeat; background-size: 100% 100%; width: 280px; height: 210px; padding: 10px;">
<div style="font-size: 18px; font-weight: bold; margin-bottom: 8px; color: #4CAF50;">${params.data.name}</div>
<table style="width: 100%;">
<tr>
<td style="text-align: left; color: #ddd;">隧道总长:</td>
<td style="text-align: right; ">${params.data.tunnelLength}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">隧道类型:</td>
<td style="text-align: right; ">${params.data.tunnelType}</td>
</tr>
<tr>
<td style="text-align: left;color: #ddd;">施工进度:</td>
<td style="text-align: right;">
<span style="display: inline-block; padding: 2px 8px; background-color: ${params.data.progress === '100%' ? '#4CAF50' : '#2196F3'}; border-radius: 4px;">
${params.data.progress}
</span>
</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">建设单位:</td>
<td style="text-align: right;">${params.data.constructionUnit}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">施工单位:</td>
<td style="text-align: right; ">${params.data.builder}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">施工天数:</td>
<td style="text-align: right; ">${params.data.constructionDays}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">是否完工:</td>
<td style="text-align: right; ">
<span style="display: inline-block; padding: 2px 8px; background-color: ${params.data.isCompleted === '是' ? '#4CAF50' : '#FF9800'}; border-radius: 4px;">
${params.data.isCompleted}
</span>
</td>
</tr>
</table>
</div>
`;
},
},
data: realData,
value: 1,
label: "设备1",
},
{
"type": "map",
"map": "shanxi",
// 标签的样式
label: {
// 标签在默认状态下的样式
normal: {
show: true,
fontSize: 12, // 可以根据需要调整字体大小
color: '#42d8df', // 标签颜色
},
// 标签在高亮状态下的样式
emphasis: {
show: false,
},
},
// 选中状态下的样式
select: {
// 标签在选中状态下的样式
label: {
show: false,
value: 2,
label: "设备2",
},
];
// 选中状态下地图上区域块的样式
itemStyle: {
areaColor: '#2b8bf3',
},
},
// 地图上区域块的样式
itemStyle: {
// 默认状态下地图的颜色
areaColor: 'rgba(4, 31, 83, 0.8)',
borderColor: 'rgba(0, 209, 255, 1)', // #00d2ff
color: '#fff',
// 选中状态下地图的颜色
emphasis: {
areaColor: '#2b8bf3',
},
},
data: [],
},
],
onMounted(() => {
window._AMapSecurityConfig = {
securityJsCode: "40f496011ee130bf5a5713bc90291655",
};
myChart.setOption(option);
// 添加点击事件处理
myChart.on('click', function(params) {
// 检查点击的是否是散点图元素
if (params.seriesType === 'scatter') {
console.log('点击了散点图:', params);
// 可以在这里处理点击事件,比如显示详情弹窗、跳转到详情页面等
// 示例:显示点击的隧道信息
if (params.data) {
console.log('隧道名称:', params.data.name);
console.log('隧道长度:', params.data.tunnelLength);
console.log('施工进度:', params.data.progress);
// 这里可以根据需要添加业务逻辑,比如打开详情模态框等
});
function initMap() {
AMapLoader.load({
key: "fee919a8e608c39d1d528ec662a2ca17", // 申请好的Web端开发者Key,首次调用 load 时必填
version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
plugins: [
"AMap.Scale",
"AMap.DistrictSearch",
"AMap.MarkerCluster",
"AMap.IndexCluster",
"AMap.ToolBar",
"AMap.MapType",
"AMap.Geolocation",
"AMap.AutoComplete",
"AMap.PlaceSearch",
"AMap.HawkEye",
"AMap.InfoWindow",
], //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
})
.then((AMap) => {
// 绘制省份边界
const district = new AMap.DistrictSearch({
subdistrict: 0,
extensions: "all",
level: "province",
});
district.search("山西", function (status, result) {
// 查询成功时,result即为对应的行政区信息
const bounds = result.districtList[0].boundaries;
const mask = [];
for (let i = 0; i < bounds.length; i++) {
mask.push([bounds[i]]);
}
const map = new AMap.Map("container", {
pitch: 40, // 倾斜角度
zoom: 6.3, // 设置当前显示级别
expandZoomRange: true, // 开启显示范围设置
animateEnable: true,
zooms: [3, 20], //最小显示级别为7,最大显示级别为20
center: [112.55, 37.87], // 设置地图中心点位置
viewMode: "3D", // 特别注意,设置为3D则其他地区不显示
zoomEnable: true, // 是否可以缩放地图
resizeEnable: true, // 是否开启地图自动调整大小
mapStyle: "amap://styles/darkblue", // 地图样式,默认值为amap://styles/normal
// mapStyle: "amap://styles/whitesmoke", //设置地图的显示样式
});
// 添加描边
for (let i = 0; i < bounds.length; i++) {
const polyline = new AMap.Polyline({
path: bounds[i], // polyline 路径,支持 lineString 和 MultiLineString
strokeColor: "blue", // 线条颜色,使用16进制颜色代码赋值。默认值为#00D3FC
strokeWeight: 5, // 轮廓线宽度,默认为:2
// map:map // 这种方式相当于: polyline.setMap(map);
});
polyline.setMap(map);
}
//添加图层MarkerClusterer
const cluster = new AMap.MarkerClusterer(
map, // 地图实例
points.value, // 海量点数据,数据中需包含经纬度信息字段 lnglat
{
gridSize: 20, // 聚合网格的像素大小,默认值为60
//聚合点样式
// renderClusterMarker: _renderClusterMarker,
//非聚合点样式
renderMarker: (context) => {
const item = context.data[0];
context.marker.setOffset(new AMap.Pixel(-12, -24));
context.marker.setContent(
`<img src="${item.remark}" alt="" style="width: 25px;height: 25px;">`
);
// context.marker.setContent(
// `<div style="width: 10px;height: 10px;">${item.img}</div>`
// );
let isMouseInTooltip = false;
// 自定义点击事件
context.marker.on("click", function (e) {
var info = [];
info.push(
`<div style="background:url(${mapBg}) no-repeat; background-size: 100% 100%;width: 260px;height: 130px;">`
);
info.push(
"<div style='display: flex; align-items: center; justify-content: space-between;'>"
);
info.push(
"<div style='margin-left: 20px;margin-top: 5px; font-size: 16px;font-family: YouSheBiaoTiHei;'>设备信息</div>"
);
info.push(
`<div style="margin-right: 10px;background:url(${closeIcon}) no-repeat; background-size: 100% 100%;height: 20px;width: 20px;" class="close-info-window"></div></div>`
);
// 在创建 InfoWindow 后,通过事件委托绑定点击事件
// document.body.addEventListener("click", function (e) {
// if (e.target.classList.contains("close-info-window")) {
// infoWindow.close(map, e.target.getPosition());
// }
// });
info.push("<div style='display: flex;'>");
info.push(
"<div style='font-size: 11px;color:#357abd;height: 150px'>"
);
info.push(
"<div class='form_info_font'> 设备名称 </div> <div class='form_info_font'> 设备类型 </div> <div class='form_info_font'> 所属单位 </div> <div class='form_info_font'>是否在线</div></div>"
);
info.push(
"<div style='font-size: 11px;color:#000;'> <div class='form_info_font1'> " +
item.name +
"</div> <div class='form_info_font1'>" +
item.sysType +
" </div> <div class='form_info_font1'>" +
item.sysDept.deptName +
"</div> <div class='form_info_font1'> " +
item.state +
"</div></div>"
);
infoWindow = new AMap.InfoWindow({
isCustom: true, // 是否自定义窗体
autoMove: true, // 是否自动调整窗体到视野内
offset: new AMap.Pixel(0, -30),
content: info.join(""), //使用默认信息窗体框样式,显示信息内容
});
infoWindow.open(map, context.marker.getPosition());
var closeBtn = document.querySelector(".close-info-window");
if (closeBtn) {
closeBtn.addEventListener("click", function () {
infoWindow.close(map, e.target.getPosition());
});
}
});
context.marker.on("mouseout", function (e) {
infoWindow.close(map, e.target.getPosition());
});
},
}
);
});
})
})
.catch((e) => {
console.log(e);
});
}
//关闭信息窗体
var closeInfoWindow = function () {
infoWindow.close();
};
//聚合点样式
var _renderClusterMarker = function (context) {
// debugger;
// let clusterCount = context.count; //聚合点内点数量
// let clusterData = context.clusterData; //聚合点数组
// let mainKey = context.index.mainKey; //聚合点对应索引
// let constData = clusterData[0][mainKey]; //当前层级(市/区)展示名
// 构建聚合点的显示内容
let content;
content = `
<div style="display: flex; align-items: center; justify-content: center; text-align: center;">
<img style="width:60px; height: 60px;" src="http://webapi.amap.com/theme/v1.3/m1.png"/>
<div style="font-size: 12px; text-align: center;">${111}</div>
</div>`;
context.marker.setContent(content);
// 自定义点击事件
context.marker.on("click", function (e) {
// touchend 移动端点击事件;mouseup pc点击
// let clickType = e.originEvent.type;
//创建窗体实例
// let infoWindow = new AMap.InfoWindow({
// content: "test", //窗体内容,支持插入dom.innerHTML
// anchor: "top-right", //锚点,窗体相对鼠标点击位置
// });
// //显示窗体
// //map:地图实例,[lng,lat]:窗体在地图中位置
// infoWindow.open(map, [e.lnglat.lng, e.lnglat.lat]);
// let infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) });
// infoWindow.open(map, [e.lnglat.lng, e.lnglat.lat]);
// 移动端
// if (clusterData.length != 0 && mainKey == "building") {
// setTimeout(() => {
// emits("pointsClick", clusterData); //向父组件传递点位信息
// }, 100);
// }
});
};
//非聚合点样式
var _renderMarker = function (context) {
//context 为回调参数,
//包含如下属性 marker:当前非聚合点
context.marker.setContent('<div style="background-color:#ff0000">1</div>');
// 自定义点击事件
context.marker.on("click", function (e) {
// touchend 移动端点击事件;mouseup pc点击
// let clickType = e.originEvent.type;
// let infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) });
// infoWindow.open(map, [e.lnglat.lng, e.lnglat.lat]);
// alert(e.lnglat.lng, e.lnglat.lat);
});
};
onUnmounted(() => {
map?.destroy();
});
function getDeviceList() {
deviceList(props.deptId).then((res) => {
points.value = res.rows;
// lnglat: ["113.12", "36.2"],
points.value.forEach((item) => {
item.lnglat = [item.longitude, item.latitude];
item.weight = 1;
});
initMap(); //
});
}
getDeviceList();
</script>
<style scoped lang="scss">
.map-container {
width: 100%;
height: 100%;
<style>
.form_info_font {
font-size: 12px;
color: #fff;
margin-left: 25px;
margin-top: 3px;
/* font-family: "YouSheBiaoTiHei"; */
}
.form_info_font1 {
font-size: 12px;
color: #fff;
margin-left: 10px;
margin-top: 3px;
font-family: "YouSheBiaoTiHei";
}
</style>
<template>
<div id="map-container" ref="mapContainer" class="w-full h-full"></div>
</template>
<script>
import { ref, onMounted, onBeforeUnmount } from "vue";
onMounted(() => {
initMap();
});
function initMap() {
//创建地图对象
this.map = new AMap.Map("map", {
center: [113.280637, 23.125178],
resizeEnable: true,
zoom: 7,
});
//获取边界坐标点
AMap.plugin("AMap.DistrictSearch", () => {
var districtSearch = new AMap.DistrictSearch({
// 关键字对应的行政区级别,共有5种级别
level: "province",
// 是否显示下级行政区级数,1表示返回下一级行政区
subdistrict: 0,
// 返回行政区边界坐标点
extensions: "all",
});
// 搜索所有省/直辖市信息
districtSearch.search("广东", (status, result) => {
// 查询成功时,result即为对应的行政区信息
this.handlePolygon(result);
});
});
}
// function handlePolygon(result) {
// let bounds = result.districtList[0].boundaries
// if (bounds) {
// for (let i = 0, l = bounds.length; i < l; i++) {
// //生成行政区划polygon
// let polygon = new AMap.Polygon({
// map: this.map, // 指定地图对象
// strokeWeight: 1, // 轮廓线宽度
// path: bounds[i], //轮廓线的节点坐标数组
// fillOpacity: 0.15, //透明度
// fillColor: '#256edc', //填充颜色
// strokeColor: '#256edc', //线条颜色
// })
// polygon.on('click', (e) => {
// // 点击绘制的区域时执行其他交互
// // ......
// })
// }
// // 地图自适应
// this.map.setFitView()
// }
</script>
<style scoped></style>
<template>
<div style="width: 99.5%; height: 100%; display: relative">
<div style="width: 100%; height: 99.5%" id="map-container"></div>
</div>
</template>
<script>
// 引入你的JSON文件
import mapConfig from "@/assets/map_config.json";
import Cluster from "@bmapgl-plugin/cluster";
export default {
props: {
lngLat: {
type: Object,
default: () => {},
},
},
data() {
return {
province: "山西", //镂空面覆盖物绘制地点
provincePoint: {
// 省份中心经纬度
lng: 112.569376,
lat: 37.879831,
},
icons: {
景点: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
美食: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
娱乐: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/play.png",
其他: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
},
testData: [
{
name: "如家酒店(大同西环路古城云冈店)",
location: {
lat: 40.08472,
lng: 113.274893,
},
address: "大同市平城区西环路1012号",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "如家酒店·neo(大同火车站古城墙店)",
location: {
lat: 40.112869,
lng: 113.305864,
},
address: "大同市平城区山西省大同市平城区操场城街舒心园西南侧",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "47732a158db9f03fa80dd8d8",
telephone: "(010)61943083",
detail: 1,
uid: "47732a158db9f03fa80dd8d8",
},
{
name: "如家酒店(大同云冈同煤大厦店)",
location: {
lat: 40.04529,
lng: 113.18582,
},
address: "大同市云冈区大同市同泉路2609号",
province: "大同市",
city: "大同市",
area: "云冈区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "山西路桥科技中心",
location: {
lat: 37.779196,
lng: 112.594208,
},
address:
"太原市小店区山西省太原市小店区龙城大街中国知网大厦西侧约140米",
province: "太原市",
city: "太原市",
area: "小店区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原清徐路桥有限公司",
location: {
lat: 37.6086,
lng: 112.376871,
},
address: "太原市清徐县山西省太原市清徐县晋夏公路北段128号",
province: "太原市",
city: "太原市",
area: "清徐县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原市升东晟路桥有限公司",
location: {
lat: 37.86051,
lng: 112.618145,
},
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "金泽华府",
location: {
lat: 37.86051,
lng: 112.482037,
},
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "薛公岭隧道",
location: {
lat: 37.357485,
lng: 111.529365,
},
address: "山西省吕梁市",
province: "山西省",
city: "吕梁市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "窑头隧道",
location: {
lat: 36.26254,
lng: 110.805996,
},
address: "山西省临汾市吉县",
province: "山西省",
city: "临汾市",
area: "吉县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "半沟隧道",
location: {
lat: 36.081288,
lng: 111.129536,
},
address: "山西省临汾市乡宁县",
province: "山西省",
city: "临汾市",
area: "乡宁县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "六郎山隧道",
location: {
lat: 39.435607,
lng: 112.29432,
},
address: "山西省朔州市",
province: "山西省",
city: "朔州市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 36.489879,
lng: 113.303412,
},
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 35.919902,
lng: 113.530767,
},
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
],
typeNames: {
camera: "摄像头",
locator: "定位设备",
electricity: "电表",
water: "水表",
},
// POIS2: [
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.40117598725185, 39.917496499307106],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 2 },
// geometry: {
// coordinates: [116.40609801022335, 39.91781683086878],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.4033665713415, 39.92449656182445],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 3 },
// geometry: {
// coordinates: [116.40790853727025, 39.91147861064821],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.41044853871885, 39.91612647923265],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 3 },
// geometry: {
// coordinates: [116.39618975366365, 39.910958630526714],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 2 },
// geometry: {
// coordinates: [116.40026933598598, 39.90835546566821],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 3 },
// geometry: {
// coordinates: [116.40564023406542, 39.90620748623179],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.41125037081005, 39.90843843492922],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 2 },
// geometry: {
// coordinates: [116.41082630756705, 39.92688284638931],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.38301668817219, 39.90858933995743],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38198411670496, 39.90131297510226],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 1 },
// geometry: {
// coordinates: [116.3892838714981, 39.90018227749477],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 2 },
// geometry: {
// coordinates: [116.39360121462066, 39.89651211104164],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.39820809946946, 39.89163819422168],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 1 },
// geometry: {
// coordinates: [116.4001758068418, 39.892338593804745],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38194537734067, 39.88686980582857],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38200770208384, 39.88247083918294],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.40640125219007, 39.88955122723463],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 1 },
// geometry: {
// coordinates: [116.40548744206848, 39.88286572025555],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 2 },
// geometry: {
// coordinates: [116.40916404764522, 39.88432891360925],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.41070696491894, 39.88510584402358],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.40234473483078, 39.88017171403035],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 1 },
// geometry: {
// coordinates: [116.3987213749928, 39.883787242021064],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 1 },
// geometry: {
// coordinates: [116.41434185411153, 39.888814006865424],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 2 },
// geometry: {
// coordinates: [116.41982806435747, 39.88311565864899],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.4190210738216, 39.89011608374457],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.41300051330123, 39.89694073472795],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 1 },
// geometry: {
// coordinates: [116.4138192887874, 39.89468403535929],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.37604796635118, 39.90727878462027],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.37383890099464, 39.90825999828604],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 1 },
// geometry: {
// coordinates: [116.37586567530394, 39.91056975145827],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.37382829825515, 39.91362965653005],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.37760398160935, 39.913881842269426],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 1 },
// geometry: {
// coordinates: [116.37420079620057, 39.918855235149216],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.37837899710793, 39.91789403333389],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.3814336389292, 39.91736851661584],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.40386566807278, 39.91452186113865],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38180254030767, 39.899426890521994],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 2 },
// geometry: {
// coordinates: [116.38854832965072, 39.88047000472972],
// type: "Point",
// },
// },
// ],
// DISTRICT: {
// 北京: { center: [116.41166495284781, 39.91132325515489] },
// 亦庄开发区: { center: [116.51304200676753, 39.80159986499759] },
// 密云区: { center: [116.84989592098923, 40.38324333304818] },
// 怀柔区: { center: [116.64350659050258, 40.330619395409954] },
// 门头沟区: { center: [116.11197849644687, 39.94284236690663] },
// 顺义区: { center: [116.65994391271919, 40.13520537588947] },
// 朝阳区: { center: [116.49291431416613, 39.92741782883638] },
// 通州区: { center: [116.66503327354069, 39.908681829896985] },
// 大兴区: { center: [116.344660065905, 39.734563741672254] },
// 昌平区: { center: [116.24250251375423, 40.22385570403618] },
// 西城区: { center: [116.37330041522624, 39.921246010697004] },
// 东城区: { center: [116.42517546956796, 39.923732774405735] },
// 房山区: { center: [116.14561576009883, 39.74170042926774] },
// 石景山区: { center: [116.20196558557446, 39.920498461554565] },
// 海淀区: { center: [116.31681412228001, 39.96206690060246] },
// 丰台区: { center: [116.29337416063721, 39.869974028133] },
// },
// REGION2: {
// A区: [116.4129334479332, 39.89114408478398],
// B区: [116.39381608532736, 39.88834674887524],
// C区: [116.37927800871893, 39.91116256112852],
// D区: [116.40260640778828, 39.916132914732614],
// },
};
},
async mounted() {
setTimeout(() => {
this.initMap();
}, 300);
},
created() {},
methods: {
initMap() {
var map = new BMapGL.Map("map-container", {
enableDblclickZoom: false,
displayOptions: {
building: false,
},
});
// 初始化地图,设置中心点坐标和地图级别
map.centerAndZoom(
new BMapGL.Point(this.provincePoint.lng, this.provincePoint.lat),
7
);
// 开启鼠标滚轮缩放
map.enableScrollWheelZoom(true);
// 本地个性化地图,通过JSON文件的方式获取
map.setMapStyleV2({ styleJson: mapConfig });
// 绘制省份镂空面
var bd = new BMapGL.Boundary();
bd.get(this.province, function (rs) {
var hole = new BMapGL.Polygon(rs.boundaries, {
fillColor: "blue", // 填充颜色
fillOpacity: 0.3, // 填充透明度
strokeWeight: 5, //设置多边形边线线粗
strokeColor: "blue", // 边线颜色
strokeOpacity: 0.5,
});
map.addOverlay(hole);
});
// 添加聚合数据
this.addCluster(map);
},
// 添加聚合数据
// addCluster(map) {
// const cluster = new Cluster.View(map, {
// clusterMinPoints: 2,
// clusterMaxZoom: 18,
// updateRealTime: true,
// fitViewOnClick: true,
// clusterType: [
// [3, 14, Cluster.ClusterType.ATTR_REF, "region"],
// [15, null, Cluster.ClusterType.DIS_PIXEL, 64],
// ],
// clusterDictionary: (type, key) => {
// var center = this.REGION2[key];
// if (center) {
// return {
// point: center,
// };
// }
// return null;
// },
// clusterMap: (props) => {
// var data = {
// 景点: 0,
// 美食: 0,
// 娱乐: 0,
// 其他: 0,
// };
// data[["景点", "美食", "娱乐", "其他"][props.type - 1]] += 1;
// return data;
// },
// clusterReduce: (accumulated, props) => {
// for (var key in props) {
// accumulated[key] += props[key];
// }
// },
// renderClusterStyle: {
// type: Cluster.ClusterRender.DOM,
// inject: (props) => {
// var reduces = props.reduces;
// var size = Math.round(
// 25 + Math.pow(props.pointCount / props.allCount, 1 / 8) * 80
// );
// var reduce_text = "";
// if (reduces) {
// for (var key in reduces) {
// reduce_text +=
// "<img" +
// " src=" +
// this.icons[key] +
// " class=" +
// (key === "其他" ? "icon2" : "icon") +
// " />" +
// reduces[key];
// }
// if (reduce_text.length > 0) {
// size = 12 * Math.max(reduce_text.length, 2) + 20;
// }
// }
// var content =
// '<span class="clusterCount">' + reduce_text + "</span>";
// var text = props.belongValue
// ? '<span class="clusterTitle">' + props.belongValue + "</span>"
// : "";
// text += content;
// var div = document.createElement("div");
// div.className = "cluster-item";
// div.innerHTML = text;
// div.style.color = "#ffffff";
// div.style.textAlign = "center";
// div.style.border = "solid 1px rgba(8,60,156,1)";
// div.style.borderRadius = size + "px";
// div.style.backgroundColor = "rgba(8,60,156,.8)";
// div.style.boxShadow = "0px 0px 5px rgba(0,0,0,0.8)";
// div.style.cursor = "pointer";
// return div;
// },
// },
// renderSingleStyle: {
// type: Cluster.ClusterRender.WEBGL,
// style: {
// width: 16,
// height: 16,
// icon: [
// "match",
// ["get", "type"],
// 1,
// this.icons["景点"],
// 2,
// this.icons["美食"],
// 3,
// this.icons["娱乐"],
// this.icons["其他"],
// ],
// },
// },
// });
// cluster.on(Cluster.ClusterEvent.CLICK, (e) => {
// console.log("ClusterEvent.CLICK", e);
// });
// cluster.on(Cluster.ClusterEvent.MOUSE_OVER, (e) => {
// console.log("ClusterEvent.MOUSEOVER", e);
// });
// cluster.on(Cluster.ClusterEvent.MOUSE_OUT, (e) => {
// console.log("ClusterEvent.MOUSEOUT", e);
// });
// cluster.setData(this.POIS2);
// },
// 添加聚合数据
addCluster(map) {
const cluster = new Cluster.View(map);
cluster.on(Cluster.ClusterEvent.CLICK, (e) => {
console.log("ClusterEvent.CLICK", e);
});
cluster.on(Cluster.ClusterEvent.MOUSE_OVER, (e) => {
// console.log("ClusterEvent.MOUSEOVER", e);
});
cluster.on(Cluster.ClusterEvent.MOUSE_OUT, (e) => {
// console.log("ClusterEvent.MOUSEOUT", e);
});
var points = Cluster.pointTransformer(this.testData, function (data) {
return {
point: [data.location.lng, data.location.lat],
properties: {
name: data.name,
address: data.address,
province: data.province,
city: data.city,
area: data.area,
},
};
});
cluster.setData(points);
},
},
};
</script>
<style lang="scss" scoped></style>
<style type="text/css">
.anchorBL {
display: none;
}
</style>
<template>
<div ref="mapContainer" class="map-container w-full h-full"></div>
</template>
<script>
import { ref, onMounted, onBeforeUnmount, nextTick } from "vue";
import mapConfig from "@/assets/map_config.json";
import Cluster from "@bmapgl-plugin/cluster";
import { testData } from "@/views/components/mapData";
import { iconsData } from "@/views/components/mapData";
export default {
props: {
lngLat: {
type: Object,
default: () => ({}),
},
},
setup(props) {
const mapContainer = ref(null);
const mapInstance = ref(null);
const resizeObserver = ref(null);
const province = "山西";
const provincePoint = {
lng: 112.569376,
lat: 37.879831,
};
const initMap = () => {
if (!mapContainer.value) return;
// 确保地图容器有明确尺寸
mapContainer.value.style.width = "100%";
mapContainer.value.style.height = "100%";
// 创建地图实例
const map = new BMapGL.Map(mapContainer.value, {
enableDblclickZoom: false,
displayOptions: {
building: false,
},
});
mapInstance.value = map;
// 初始化地图视图
map.centerAndZoom(
new BMapGL.Point(provincePoint.lng, provincePoint.lat),
7
);
// 开启鼠标滚轮缩放
map.enableScrollWheelZoom(true);
// 设置地图样式
map.setMapStyleV2({ styleJson: mapConfig });
// 绘制省份镂空面
var bd = new BMapGL.Boundary();
bd.get(province, function (rs) {
var hole = new BMapGL.Polygon(rs.boundaries, {
fillColor: "blue",
fillOpacity: 0.2,
strokeWeight: 5,
strokeColor: "blue",
strokeOpacity: 0.5,
});
map.addOverlay(hole);
});
// 添加聚合数据
addCluster(map);
};
const addCluster = (map) => {
const cluster = new Cluster.View(map, {
renderSingleStyle: {
type: Cluster.ClusterRender.WEBGL,
style: {
width: 13,
height: 13,
icon: [
"match",
["get", "type"],
1,
iconsData[0],
2,
iconsData[1],
3,
iconsData[2],
iconsData[3],
],
},
},
});
cluster.on(Cluster.ClusterEvent.CLICK, (e) => {
// 点击聚合事件
});
cluster.on(Cluster.ClusterEvent.MOUSE_OVER, (e) => {
if (!e.isCluster) {
let sContent = `
<div>
<p style="font-size:14px;">设备名称:${
e.properties.typeNames
}</p>
<p style="font-size:14px;">在线状态:<span style="color:${
e.properties.online ? "green" : "red"
};">${e.properties.online ? "在线" : "不在线"}</span></p>
<p style="font-size:14px;">设备地址:${e.properties.address}</p>
<p style="font-size:14px;">城市:${e.properties.city} ${
e.properties.area
}</p>
</div>
`;
let opts = {
offset: new BMapGL.Size(10, -20),
};
let infoWindow = new BMapGL.InfoWindow(sContent, opts);
let point = new BMapGL.Point(e.latLng[0], e.latLng[1]);
map.openInfoWindow(infoWindow, point);
}
});
cluster.on(Cluster.ClusterEvent.MOUSE_OUT, (e) => {
if (!e.isCluster) {
map.closeInfoWindow();
}
});
var points = Cluster.pointTransformer(testData, function (data) {
return {
point: [data.location.lng, data.location.lat],
properties: {
name: data.name,
address: data.address,
province: data.province,
city: data.city,
area: data.area,
type: data.properties.type,
typeNames: data.typeNames,
online: data.online,
},
};
});
cluster.setData(points);
};
// 监听容器大小变化
const setupResizeObserver = () => {
if (typeof ResizeObserver !== "undefined" && mapContainer.value) {
resizeObserver.value = new ResizeObserver(() => {
if (mapInstance.value) {
mapInstance.value.centerAndZoom(
new BMapGL.Point(provincePoint.lng, provincePoint.lat),
mapInstance.value.getZoom()
);
}
});
resizeObserver.value.observe(mapContainer.value);
}
};
onMounted(() => {
nextTick(() => {
// 确保DOM完全渲染
setTimeout(() => {
initMap();
setupResizeObserver();
}, 300);
});
});
onBeforeUnmount(() => {
if (resizeObserver.value) {
resizeObserver.value.disconnect();
}
if (mapInstance.value) {
mapInstance.value.destroy();
}
});
return {
mapContainer,
};
},
};
</script>
<style lang="scss" scoped>
.map-container {
:deep(.BMap_bubble_content) {
color: #fff !important;
top: -15px !important;
}
:deep(.BMap_bubble_pop) {
background-color: #121b4d !important;
border: 1px solid #408bde !important;
}
}
// 隐藏百度地图logo
:global(.anchorBL) {
display: none;
}
</style>
......@@ -8,7 +8,6 @@ import { ref, onMounted, onBeforeUnmount } from "vue";
import * as echarts from "echarts";
import { debounce } from "lodash-es"; // 或使用自定义防抖函数
import { deviceCountByChild } from "@/api/iot/home";
import { de } from "element-plus/es/locales.mjs";
const chartRef = ref<HTMLDivElement>();
const chart = ref<echarts.ECharts | null>(null);
......@@ -34,6 +33,18 @@ const initChart = () => {
chart.value?.dispose();
chart.value = echarts.init(chartRef.value);
const option = {
title: {
show: xData.value[0] === "",
text: "暂无数据",
x: "center",
y: "center",
textStyle: {
fontSize: 16,
color: "#66FFFF",
fontFamily: "PangMen",
},
},
tooltip: {
trigger: "axis",
axisPointer: {
......@@ -43,6 +54,7 @@ const initChart = () => {
legend: {
show: false,
},
xAxis: {
data: xData.value,
axisLabel: {
......@@ -104,18 +116,28 @@ onMounted(() => {
deviceCountByChild(props.deptId).then((res: any) => {
if (res.code === 200) {
const childDeptList = res.result?.childDeptList || [];
const numMap = res.result?.numMap || [];
const numMap = res.result?.numMap || {};
if (numMap && Object.keys(numMap).length > 0) {
//numMap中的 key 和childDeptList.deptId 进行匹配
Object.entries(numMap).forEach(([key, value]) => {
console.log(`Key: ${key}, Value: ${value}`);
yData.value.push(value);
// 匹配到后,将对应的部门名称添加到 xData
// 匹配到后,将对应的部门名称添加到xData
for (let i = 0; i < childDeptList.length; i++) {
if (childDeptList[i].deptId === Number(key)) {
xData.value.push(childDeptList[i].deptName);
}
}
});
} else {
// 没有匹配到的部门,添加默认值
xData.value.push("");
yData.value.push(0);
}
initChart();
} else {
// 没有子部门,添加默认值
xData.value.push("");
yData.value.push(0);
initChart();
}
});
......
......@@ -41,47 +41,53 @@
</div>
</template>
<script setup lang="ts">
import { sw } from "element-plus/es/locales.mjs";
import { ref } from "vue";
import { useRouter } from "vue-router";
import { countBySysType } from "@/api/iot/home";
const router = useRouter();
const props = defineProps({
deptId: {
type: Number,
default: 0,
},
});
const sysClassificationList = ref([
{
name: "智慧隧道",
number: 100,
online: 150,
offline: 10,
number: 0,
online: 0,
offline: 0,
},
{
name: "幸福小镇",
number: 110,
online: 100,
offline: 20,
number: 0,
online: 0,
offline: 0,
},
{
name: "智慧园区",
number: 234,
online: 50,
offline: 30,
number: 0,
online: 0,
offline: 0,
},
{
name: "拌合站",
number: 455,
online: 200,
offline: 50,
number: 0,
online: 0,
offline: 0,
},
{
name: "视频监控",
number: 231,
online: 100,
number: 0,
online: 0,
offline: 0,
},
{
name: "钢筋场",
number: 432,
online: 30,
offline: 11,
number: 0,
online: 0,
offline: 0,
},
]);
......@@ -113,6 +119,22 @@ const handleClick = (item: any, index: number) => {
break;
}
};
function getCountBySysType() {
countBySysType(props.deptId).then((res: any) => {
if (res.code === 200) {
res.data.map((item: any) => {
// 如果 item.type==1 则赋值给 sysClassificationList[0]
if (item.type === 1) {
sysClassificationList.value[0].number = item.count || 0; // 智慧隧道 总数
sysClassificationList.value[0].online = item.count || 0; // 在线
// sysClassificationList.value[0].offline = item.offline || 0;
}
});
}
});
}
getCountBySysType();
</script>
<style scoped lang="scss">
......
export const iconsData = {
0: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
1: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
2: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/play.png",
3: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
};
export const testData = [
{
name: "如家酒店(大同西环路古城云冈店)",
location: {
lat: 40.08472,
lng: 113.274893,
},
type: "1",
properties: { region: "C区", type: 2 },
online: true,
typeNames: "摄像头",
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
address: "大同市平城区西环路1012号",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "如家酒店·neo(大同火车站古城墙店)",
location: {
lat: 40.112869,
lng: 113.305864,
},
properties: { region: "C区", type: 1 },
type: "1",
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
address: "大同市平城区山西省大同市平城区操场城街舒心园西南侧",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "47732a158db9f03fa80dd8d8",
telephone: "(010)61943083",
detail: 1,
uid: "47732a158db9f03fa80dd8d8",
},
{
name: "如家酒店(大同云冈同煤大厦店)",
location: {
lat: 40.04529,
lng: 113.18582,
},
type: "1",
properties: { region: "C区", type: 1 },
online: true,
typeNames: "摄像头",
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
address: "大同市云冈区大同市同泉路2609号",
province: "大同市",
city: "大同市",
area: "云冈区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "山西路桥科技中心",
location: {
lat: 37.779196,
lng: 112.594208,
},
type: "2",
online: true,
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
address: "太原市小店区山西省太原市小店区龙城大街中国知网大厦西侧约140米",
province: "太原市",
city: "太原市",
area: "小店区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原清徐路桥有限公司",
location: {
lat: 37.6086,
lng: 112.376871,
},
type: "2",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
address: "太原市清徐县山西省太原市清徐县晋夏公路北段128号",
province: "太原市",
city: "太原市",
area: "清徐县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原市升东晟路桥有限公司",
location: {
lat: 37.86051,
lng: 112.618145,
},
type: "2",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "金泽华府",
location: {
lat: 37.86051,
lng: 112.482037,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "薛公岭隧道",
location: {
lat: 37.357485,
lng: 111.529365,
},
type: "3",
properties: { region: "C区", type: 2 },
typeNames: "定位设备",
online: false,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省吕梁市",
province: "山西省",
city: "吕梁市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "窑头隧道",
location: {
lat: 36.26254,
lng: 110.805996,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: false,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省临汾市吉县",
province: "山西省",
city: "临汾市",
area: "吉县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "半沟隧道",
location: {
lat: 36.081288,
lng: 111.129536,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: false,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省临汾市乡宁县",
province: "山西省",
city: "临汾市",
area: "乡宁县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "六郎山隧道",
location: {
lat: 39.435607,
lng: 112.29432,
},
type: "3",
properties: { region: "C区", type: 3 },
typeNames: "电表",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省朔州市",
province: "山西省",
city: "朔州市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 36.489879,
lng: 113.303412,
},
type: "3",
properties: { region: "C区", type: 3 },
typeNames: "电表",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 35.919902,
lng: 113.530767,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
];
// 测试数据
export const POIS2 = [
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.40117598725185, 39.917496499307106],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 2 },
geometry: {
coordinates: [116.40609801022335, 39.91781683086878],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.4033665713415, 39.92449656182445],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 3 },
geometry: {
coordinates: [116.40790853727025, 39.91147861064821],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.41044853871885, 39.91612647923265],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 3 },
geometry: {
coordinates: [116.39618975366365, 39.910958630526714],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 2 },
geometry: {
coordinates: [116.40026933598598, 39.90835546566821],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 3 },
geometry: {
coordinates: [116.40564023406542, 39.90620748623179],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.41125037081005, 39.90843843492922],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 2 },
geometry: {
coordinates: [116.41082630756705, 39.92688284638931],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.38301668817219, 39.90858933995743],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38198411670496, 39.90131297510226],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 1 },
geometry: {
coordinates: [116.3892838714981, 39.90018227749477],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 2 },
geometry: {
coordinates: [116.39360121462066, 39.89651211104164],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.39820809946946, 39.89163819422168],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 1 },
geometry: {
coordinates: [116.4001758068418, 39.892338593804745],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38194537734067, 39.88686980582857],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38200770208384, 39.88247083918294],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.40640125219007, 39.88955122723463],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 1 },
geometry: {
coordinates: [116.40548744206848, 39.88286572025555],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 2 },
geometry: {
coordinates: [116.40916404764522, 39.88432891360925],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.41070696491894, 39.88510584402358],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.40234473483078, 39.88017171403035],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 1 },
geometry: {
coordinates: [116.3987213749928, 39.883787242021064],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 1 },
geometry: {
coordinates: [116.41434185411153, 39.888814006865424],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 2 },
geometry: {
coordinates: [116.41982806435747, 39.88311565864899],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.4190210738216, 39.89011608374457],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.41300051330123, 39.89694073472795],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 1 },
geometry: {
coordinates: [116.4138192887874, 39.89468403535929],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.37604796635118, 39.90727878462027],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.37383890099464, 39.90825999828604],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 1 },
geometry: {
coordinates: [116.37586567530394, 39.91056975145827],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.37382829825515, 39.91362965653005],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.37760398160935, 39.913881842269426],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 1 },
geometry: {
coordinates: [116.37420079620057, 39.918855235149216],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.37837899710793, 39.91789403333389],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.3814336389292, 39.91736851661584],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.40386566807278, 39.91452186113865],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38180254030767, 39.899426890521994],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 2 },
geometry: {
coordinates: [116.38854832965072, 39.88047000472972],
type: "Point",
},
},
];
export const icons = {
景点: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
美食: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
娱乐: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/play.png",
其他: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
};
export const DISTRICT = {
北京: { center: [116.41166495284781, 39.91132325515489] },
亦庄开发区: { center: [116.51304200676753, 39.80159986499759] },
密云区: { center: [116.84989592098923, 40.38324333304818] },
怀柔区: { center: [116.64350659050258, 40.330619395409954] },
门头沟区: { center: [116.11197849644687, 39.94284236690663] },
顺义区: { center: [116.65994391271919, 40.13520537588947] },
朝阳区: { center: [116.49291431416613, 39.92741782883638] },
通州区: { center: [116.66503327354069, 39.908681829896985] },
大兴区: { center: [116.344660065905, 39.734563741672254] },
昌平区: { center: [116.24250251375423, 40.22385570403618] },
西城区: { center: [116.37330041522624, 39.921246010697004] },
东城区: { center: [116.42517546956796, 39.923732774405735] },
房山区: { center: [116.14561576009883, 39.74170042926774] },
石景山区: { center: [116.20196558557446, 39.920498461554565] },
海淀区: { center: [116.31681412228001, 39.96206690060246] },
丰台区: { center: [116.29337416063721, 39.869974028133] },
};
export const REGION2 = {
A: [116.4129334479332, 39.89114408478398],
B: [116.39381608532736, 39.88834674887524],
C: [116.37927800871893, 39.91116256112852],
D: [116.40260640778828, 39.916132914732614],
};
......@@ -54,6 +54,7 @@ export default defineConfig({
proxy: {
"/dev-api": {
target: "http://192.168.19.84:8081",
// target: "http://192.168.19.9:8081",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, ""),
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment