From 3d9f400c8326632c3f7a07fff1a78843d496c5cf Mon Sep 17 00:00:00 2001 From: pierrbt Date: Sun, 5 Apr 2026 21:02:47 +0200 Subject: [PATCH 1/7] fix: add files to gitignore --- .gitignore | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 13f3646..2a59ddf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,15 @@ -# VS Code -.vscode \ No newline at end of file +# dependencies +node_modules/ + +# build output +dist/ + +# local tooling +.vscode/ +.idea/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* From 90c756d693ba97c2dee73305a7ab594a04f05496 Mon Sep 17 00:00:00 2001 From: pierrbt Date: Sun, 5 Apr 2026 21:03:17 +0200 Subject: [PATCH 2/7] feat: change to vite stack --- package-lock.json | 1091 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 23 + tsconfig.json | 17 + vite.config.ts | 6 + 4 files changed, 1137 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3108a3d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1091 @@ +{ + "name": "map-insa", + "version": "2.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "map-insa", + "version": "2.0.0", + "dependencies": { + "maptalks": "^1.12.1", + "maptalks.three": "^0.42.0", + "three": "^0.183.2" + }, + "devDependencies": { + "@types/geojson": "^7946.0.16", + "@types/three": "^0.183.1", + "typescript": "^6.0.2", + "vite": "^8.0.3" + } + }, + "node_modules/@dimforge/rapier3d-compat": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", + "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@maptalks/feature-filter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@maptalks/feature-filter/-/feature-filter-1.3.0.tgz", + "integrity": "sha512-O6GcFzPuCbz6bO4TNBnmP8VunS0GexTzZ4m36A4HbYQICY1cplpFgntX2fyB/TY3cZrFRGoeMePBeMZFMOOhcQ==" + }, + "node_modules/@maptalks/function-type": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@maptalks/function-type/-/function-type-1.4.1.tgz", + "integrity": "sha512-Z78FdI8mZ4vdcBqxlMDV6HP6WE/njZ9PhlM5JwbURxW1DnQK7R1GP+fubkGJPP6hVSv0Y52/dK8cZE/HuXVZ3A==", + "dependencies": { + "colorin": "^0.5.0" + } + }, + "node_modules/@maptalks/function-type/node_modules/colorin": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/colorin/-/colorin-0.5.0.tgz", + "integrity": "sha512-gN6fIMCehYUonAhbmm5+ZHeFunG75u77hI2tRlVndNthO6v0wZMV2G2FwYSi8Ws4b4lpFJK1ql2a/MlW9z/Vhg==", + "license": "MIT" + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz", + "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.122.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.122.0.tgz", + "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz", + "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz", + "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz", + "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz", + "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz", + "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz", + "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz", + "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz", + "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz", + "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@tweenjs/tween.js": { + "version": "23.1.3", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", + "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stats.js": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", + "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/three": { + "version": "0.183.1", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.183.1.tgz", + "integrity": "sha512-f2Pu5Hrepfgavttdye3PsH5RWyY/AvdZQwIVhrc4uNtvF7nOWJacQKcoVJn0S4f0yYbmAE6AR+ve7xDcuYtMGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@dimforge/rapier3d-compat": "~0.12.0", + "@tweenjs/tween.js": "~23.1.3", + "@types/stats.js": "*", + "@types/webxr": ">=0.5.17", + "@webgpu/types": "*", + "fflate": "~0.8.2", + "meshoptimizer": "~1.0.1" + } + }, + "node_modules/@types/webxr": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", + "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webgpu/types": { + "version": "0.1.69", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.69.tgz", + "integrity": "sha512-RPmm6kgRbI8e98zSD3RVACvnuktIja5+yLgDAkTmxLr90BEwdTXRQWNLF3ETTTyH/8mKhznZuN5AveXYFEsMGQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/colorin": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/colorin/-/colorin-0.6.0.tgz", + "integrity": "sha512-huI54MwKNMP6eypurqzxGf7rvTA3pNWdXZopQbN7v3TDxXYWyyGQ3CtQndNZ2Z0Gy6HDWqA7sRYxbjRDO2FZMA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/deyihu-geometry-extrude": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/deyihu-geometry-extrude/-/deyihu-geometry-extrude-0.1.10.tgz", + "integrity": "sha512-qvX/TbA7aELZOwYOlhp2+gJILRGiUPGyErJDgTV8sooyocKERSxYWJxvwCT5bySnrVoJAd9Juh6jF8MvXzVbxA==", + "license": "MIT", + "dependencies": { + "earcut": "^2.1.3" + } + }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", + "license": "ISC" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/frustum-intersects": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/frustum-intersects/-/frustum-intersects-0.1.0.tgz", + "integrity": "sha512-W0S6dmX5LJLtamimyuKhvbkpDTm5eVfMgk4X9yXNyWQ1zZ/cMm0PZoeX9Pm0tL302l+erQVrdfRGhV3ILfeTeQ==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lineclip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz", + "integrity": "sha512-KlA/wRSjpKl7tS9iRUdlG72oQ7qZ1IlVbVgHwoO10TBR/4gQ86uhKow6nlzMAJJhjCWKto8OeoAzzIzKSmN25A==", + "license": "ISC" + }, + "node_modules/maptalks": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/maptalks/-/maptalks-1.12.1.tgz", + "integrity": "sha512-Vvr6Ikp3GRtPToUhPD0FzyA+tLLp8dsakJdNvp6N6ScPnQw9gfS+bpZP7Apc0kEjGBK55mHzJmuyNaQxYuhLlw==", + "license": "BSD-3-Clause", + "dependencies": { + "@maptalks/feature-filter": "^1.3.0", + "@maptalks/function-type": "^1.4.1", + "colorin": "^0.6.0", + "frustum-intersects": "^0.1.0", + "lineclip": "^1.1.5", + "rbush": "^2.0.2", + "simplify-js": "^1.2.1" + }, + "optionalDependencies": { + "@rollup/rollup-darwin-x64": "^4.13.0", + "@rollup/rollup-linux-x64-gnu": "^4.13.0" + } + }, + "node_modules/maptalks.three": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/maptalks.three/-/maptalks.three-0.42.0.tgz", + "integrity": "sha512-Ru5/X/oRMvlLRQ7GB0HW2xeDOy2k5ZgLisrQF2/UhAqlKJBJZ/vKQXo2qAER8kQTtmwBB+S54N/y7b0waSAICQ==", + "license": "MIT", + "dependencies": { + "deyihu-geometry-extrude": "0.1.10", + "poly-extrude": "^0.16.0" + } + }, + "node_modules/meshoptimizer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-1.0.1.tgz", + "integrity": "sha512-Vix+QlA1YYT3FwmBBZ+49cE5y/b+pRrcXKqGpS5ouh33d3lSp2PoTpCw19E0cKDFWalembrHnIaZetf27a+W2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/poly-extrude": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/poly-extrude/-/poly-extrude-0.16.0.tgz", + "integrity": "sha512-zZVn8mbCkYS9chcvZI82tbdj4Xsth0tvYiOOqtdAjCgzgD8DkEnY3qCbdUUdSKGCqF86VlfMy+Gd7WDF4HGnjQ==", + "license": "ISC", + "dependencies": { + "earcut": "^3.0.1" + } + }, + "node_modules/poly-extrude/node_modules/earcut": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.2.tgz", + "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==", + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==", + "license": "ISC" + }, + "node_modules/rbush": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", + "license": "MIT", + "dependencies": { + "quickselect": "^1.0.1" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.12.tgz", + "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.122.0", + "@rolldown/pluginutils": "1.0.0-rc.12" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.12", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", + "@rolldown/binding-darwin-x64": "1.0.0-rc.12", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" + } + }, + "node_modules/simplify-js": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/simplify-js/-/simplify-js-1.2.4.tgz", + "integrity": "sha512-vITfSlwt7h/oyrU42R83mtzFpwYk3+mkH9bOHqq/Qw6n8rtR7aE3NZQ5fbcyCUVVmuMJR6ynsAhOfK2qoah8Jg==", + "license": "BSD-2-Clause" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/three": { + "version": "0.183.2", + "resolved": "https://registry.npmjs.org/three/-/three-0.183.2.tgz", + "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/typescript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.3.tgz", + "integrity": "sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.12", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0e5363b --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "map-insa", + "version": "2.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc --noEmit && vite build", + "preview": "vite preview", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "maptalks": "^1.12.1", + "maptalks.three": "^0.42.0", + "three": "^0.183.2" + }, + "devDependencies": { + "@types/geojson": "^7946.0.16", + "@types/three": "^0.183.1", + "typescript": "^6.0.2", + "vite": "^8.0.3" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1759d70 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "types": ["vite/client"], + "strict": true, + "noEmit": true, + "isolatedModules": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "useDefineForClassFields": true + }, + "include": ["src", "vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..f7b9682 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + base: "./", + publicDir: "json", +}); From 6ab693f0f10a99cf4f8d6b6b4bb42a6f915f8338 Mon Sep 17 00:00:00 2001 From: pierrbt Date: Sun, 5 Apr 2026 21:03:42 +0200 Subject: [PATCH 3/7] refactor: remove old files --- css/maptalks.min.css | 1 - css/styles.css | 252 -------------------------------------- js/maptalks.min.js | 6 - js/maptalks.three.min.js | 22 ---- js/script.js | 255 --------------------------------------- 5 files changed, 536 deletions(-) delete mode 100644 css/maptalks.min.css delete mode 100644 css/styles.css delete mode 100644 js/maptalks.min.js delete mode 100644 js/maptalks.three.min.js delete mode 100644 js/script.js diff --git a/css/maptalks.min.css b/css/maptalks.min.css deleted file mode 100644 index 877219c..0000000 --- a/css/maptalks.min.css +++ /dev/null @@ -1 +0,0 @@ - .maptalks-zoom {text-align: center;}.maptalks-zoom .maptalks-zoom-zoomlevel {display: block;width: 29px;height: 29px;background: #172029;color: #fff;line-height: 29px;font-size: 12px;transform: scale(0.8);-ms-transform: scale(0.8);transform-origin: bottom left;-ms-transform-origin: bottom left;}.maptalks-zoom-slider {margin-top: 6px;}.maptalks-zoom-slider a.maptalks-zoom-zoomin, .maptalks-zoom-slider a.maptalks-zoom-zoomout {display: block;font-size: 16px;width: 21px;height: 21px;border: 1px solid #363539;background: #172029;color: #fff;line-height: 19px;text-decoration: none;}.maptalks-zoom-slider-box {width: 21px;height: 124px;background: #34495e;background: url(../assets/images/control/kedu.png) repeat-y;border: 1px solid #35383b;position: relative;}.maptalks-zoom-slider-box .maptalks-zoom-slider-ruler {width: 5px;height: 112px;background: #372e2b;border-radius: 2px;-moz-border-radius: 2px;-webkit-border-radius: 2px;margin: 4px auto;position: relative;}.maptalks-zoom-slider-box .maptalks-zoom-slider-ruler .maptalks-zoom-slider-reading {width: 5px;height: 50%;position: absolute;bottom: 0;left: 0;background: #1bbc9b;border-radius: 2px;-moz-border-radius: 2px;-webkit-border-radius: 2px;}.maptalks-zoom-slider-box .maptalks-zoom-slider-dot {width: 15px;height: 15px;background: url(../assets/images/control/3.png) no-repeat;position: absolute;top: 50%;left: 3px;cursor: pointer;}.maptalks-toolbar-vertical {margin: 0;overflow: visible;}.maptalks-toolbar-horizonal ul, .maptalks-toolbar-vertical ul {margin: 0;padding: 0;}.maptalks-toolbar-vertical ul li + li {border-top: 1px solid #425568;}.maptalks-toolbar-vertical li {text-align: center;list-style: none;line-height: 28px;color: #fff;background: #34495e;min-width: 10px;min-height: 28px;position: relative;padding: 0 10px;}.maptalks-toolbar-vertical li:hover {background: #1bbc9b;}.maptalks-toolbar-vertical li .maptalks-dropMenu {padding: 0;position: absolute;top: 0;overflow: visible;}.maptalks-toolbar-vertical li .maptalks-dropMenu li {list-style: none;min-width: 95px;background: #223140;height: 27px;}.maptalks-toolbar-vertical li .maptalks-dropMenu li a {color: #fff;display: block;line-height: 27px;background: url(../assets/images/control/ico-dot.png) no-repeat 14px 10px;text-indent: 33px;text-decoration: none;font-size: 12px;}.maptalks-toolbar-vertical li .maptalks-dropMenu em.maptalks-ico {display: block;width: 5px;height: 6px;position: absolute;top: 12px;right: -4px;}.maptalks-toolbar-vertical li .maptalks-dropMenu li.maptalks-on, .maptalks-toolbar-vertical li .maptalks-dropMenu li:hover {background: #0e595e;}.maptalks-toolbar-horizonal {margin: 0;overflow: visible;}.maptalks-toolbar-horizonal li {text-align: left;line-height: 28px;color: #fff;padding: 0 10px;list-style: none;min-width: 28px;min-height: 28px;float: left;background: #34495e;position: relative;}.maptalks-toolbar-horizonal ul li + li {border-left: 1px solid #425568;}.maptalks-toolbar-horizonal li:hover {background: #1bbc9b;}.maptalks-toolbar-horizonal li .maptalks-dropMenu {display: block;position: absolute;left: 0;overflow: visible;}.maptalks-toolbar-horizonal li .maptalks-dropMenu li {list-style: none;min-width: 95px;background: #223140;height: 27px;}.maptalks-toolbar-horizonal li .maptalks-dropMenu li + li {border-left: none;border-top: 1px solid #425568;}.maptalks-toolbar-horizonal li .maptalks-dropMenu li a {color: #fff;display: block;line-height: 27px;background: url(../assets/images/control/ico-dot.png) no-repeat 5px 10px;text-indent: 20px;text-decoration: none;font-size: 12px;}.maptalks-toolbar-horizonal li .maptalks-dropMenu em.maptalks-ico {display: block;width: 5px;height: 6px;position: absolute;top: -4px;left: 12px;}.maptalks-toolbar-horizonal .maptalks-dropMenu li:hover {background: #0e595e;}.maptalks-menu {background: #fff;padding: 1px;width: 172px;border: 1px solid #b4b3b3;}.maptalks-menu em.maptalks-ico {display: block;width: 17px;height: 10px;background: url(../assets/images/control/5.png) no-repeat;position: absolute;top: -10px;left: 8px;}.maptalks-menu .maptalks-menu-items {color: #5a5756;margin: 0;padding: 0;font-size: 12px;}.maptalks-menu .maptalks-menu-items li {list-style: none;height: 30px;line-height: 30px;text-indent: 16px;}.maptalks-menu .maptalks-menu-items li:hover {background: #007fbe;color: #fff;cursor: pointer;}.maptalks-menu .maptalks-menu-items li.maptalks-menu-splitter {list-style: none;height: 2px;background: #ddd;}.maptalks-msgBox {background: #fff;border: 1px solid #b4b3b3;border-radius: 3px;}.maptalks-msgBox em.maptalks-ico {display: block;width: 17px;height: 10px;background: url(../assets/images/control/5_1.png) no-repeat;position: absolute;left: 50%;margin-left: -5px;bottom: -10px;}.maptalks-msgBox h2 {display: block;font-weight: 700;font-size: 14px;padding: 10px 10px 0 10px;margin: 0;}.maptalks-msgBox a.maptalks-close {display: block;width: 13px;height: 13px;background: url(../assets/images/control/infownd-close.png) no-repeat;position: absolute;top: 15px;right: 10px;}.maptalks-msgBox a.maptalks-close:hover {background: url(../assets/images/control/infownd-close-hover.png) no-repeat;}.maptalks-msgBox .maptalks-msgContent {font-size: 12px;padding: 10px;min-width: 200px;}.maptalks-panel {background: #fff;border: 1px solid #b4b3b3;border-radius: 3px;}.maptalks-panel .maptalks-panel-content {padding: 10px;min-width: 200px;min-height: 60px;}.maptalks-panel a.maptalks-close {display: block;width: 6px;height: 7px;background: url(../assets/images/control/close-2.png) no-repeat;position: absolute;top: 10px;right: 10px;}.maptalks-panel a.maptalks-close:hover {opacity: 0.5;}.maptalks-attribution {display: inline-block;opacity: 1;background: #fff;background-color: hsla(0, 0%, 100%, 0.7);padding: 0;font-size: 13px;font-family: microsoft yahei, Helvetica Neue, Helvetica, sans-serif;}.maptalks-attribution a {text-decoration: none;color: #0078a8;}.maptalks-attribution a:hover {text-decoration: underline;}.maptalks-overview {background: #fff;border: 1px solid #b4b3b3;width: 100%;height: 100%;}.maptalks-overview-button {cursor: pointer;background: #fff;width: 18px;height: 18px;position: absolute;bottom: 1px;right: 1px;font: 16px sans-serif;text-align: center;line-height: 16px;border: 1px solid #b4b3b3;color: #363539;}.maptalks-layer-switcher ul {list-style: none;}.maptalks-layer-switcher .panel > ul {padding-left: 1em;}.maptalks-layer-switcher .group > ul {padding-left: 10px;}.maptalks-layer-switcher .group + .group {padding-top: 1em;}.maptalks-layer-switcher label {text-overflow: ellipsis;overflow: hidden;display: inline-block;font-size: 14px;white-space: nowrap;color: #bbb;}.maptalks-layer-switcher .group > label {font-weight: 700;color: #ddd;width: 100%;}.maptalks-layer-switcher .layer label {padding-top: 5px;width: 92%;}.maptalks-layer-switcher input {margin: 0 5px;position: relative;top: -2px;}.maptalks-layer-switcher input[disabled="disabled"] {cursor: not-allowed;}.maptalks-layer-switcher input[disabled="disabled"] + label {color: #666;}.maptalks-layer-switcher .panel, .maptalks-layer-switcher button {border-radius: 4px;}.maptalks-layer-switcher button {width: 28px;height: 28px;background: url(../assets/images/control/layer.png) no-repeat 4px 4px;background-color: #172029;border: none;}.maptalks-layer-switcher.shown button {display: none;}.maptalks-layer-switcher .panel {background-color: #172029;display: none;overflow-y: auto;overflow-x: hidden;min-width: 120px;max-width: 400px;max-height: 500px;}.maptalks-layer-switcher li {white-space: nowrap;}.maptalks-layer-switcher li.group {margin-right: 1em;}.maptalks-layer-switcher.shown .panel {display: block;}.maptalks-layer-switcher ::-webkit-scrollbar {width: 6px;}.maptalks-layer-switcher ::-webkit-scrollbar-track {background-color: #1f1f1f;}.maptalks-layer-switcher ::-webkit-scrollbar-thumb {border-radius: 5px;background-color: #777;}.maptalks-tooltip {display: block;background: #fff;border: 1px solid #b4b3b3;padding: 0 4px;height: 24px;line-height: 24px;font-size: 14px;white-space: nowrap;} \ No newline at end of file diff --git a/css/styles.css b/css/styles.css deleted file mode 100644 index fd3d4ff..0000000 --- a/css/styles.css +++ /dev/null @@ -1,252 +0,0 @@ -* { - font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; -} - -html, -body { - margin: 0px; - height: 100%; -} -.heading { - background-color: #34495e; - color: #fff; - padding: 8px 8px; - font: 24px sans-serif; -} - -#map { - width: 100%; - height: 100%; -} - -#searchContainer { - position: absolute; - width: calc(100% - 20px); - z-index: 999; - margin-left: 10px; - margin-right: 10px; - margin-top: 10px; - display: flex; - flex-direction: column; - border: 1px solid rgb(156 163 175); - border-radius: 8px; - background-color: white; - overflow: hidden; -} - -@media (min-width: 640px) { - #searchContainer { - max-width: 320px; - margin-left: 33px; - margin-right: 33px; - margin-top: 33px; - } -} - -#search { - display: flex; - align-items: center; - padding: 8px 12px; - gap: 4px; -} - -#searchIcon > svg { - width: 24px; - height: 24px; -} - -#searchInput { - outline: 0; - width: 100%; - font-size: 16px; - height: 24px; - border: 0; -} - -#searchInput::placeholder { - color: #9ca3af; -} - -#suggestions { - overflow-y: scroll; - max-height: 16rem; - display: none; - list-style-type: none; - margin: 0; - padding: 0; -} - -#suggestions > li { - padding: 8px 12px; - cursor: pointer; -} - -#suggestions > li:hover { - background-color: rgb(243 244 246); -} - -#controls { - position: absolute; - z-index: 999; - right: 10px; - bottom: 10px; -} - -@media (min-width: 640px) { - #controls { - right: 40px; - bottom: 33px; - } -} - -#controls > div { - display: flex; - flex-direction: column; - gap: 4px; -} - -.control { - padding: 4px; - background-color: white; - border: 0; -} - -.control:hover { - background-color: rgb(229 231 235) !important; -} - -.control > svg { - width: 1.5rem; - height: 1.5rem; -} - -#resetControl, -#aboutControl { - border-radius: 6px; -} - -#zoomControls { - display: flex; - flex-direction: column; -} - -#zoomControls > button:hover { - background-color: white; -} - -#zoomControls > button:first-child { - border-radius: 6px 6px 0 0; -} - -#zoomControls > button:last-child { - border-radius: 0 0 6px 6px; -} - -#modalScreen { - position: relative; - z-index: 9999; - display: none; -} - -#modalOverlay { - position: fixed; - inset: 0; - background-color: rgba(107, 114, 128, 0.75); -} - -#modalContainer { - position: fixed; - inset: 0; - z-index: 10; - overflow-y: hidden; - display: flex; - align-items: flex-end; - justify-content: center; - padding: 16px; - text-align: center; -} - -@media (min-width: 640px) { - #modalContainer { - align-items: center; - padding: 0px; - } -} - -#modal { - overflow: hidden; - border-radius: 8px; - background-color: white; - width: 100%; -} - -@media (min-width: 640px) { - #modal { - max-width: 512px; - margin-top: 24px; - margin-bottom: 24px; - } -} - -#modalBody { - background-color: white; - padding: 20px 16px 0px 16px; - text-align: center; -} - -@media (min-width: 640px) { - #modalBody { - padding: 24px 24px 0px 24px; - text-align: left; - } -} - -#modalTitle { - font-size: 18px; - font-weight: 500; -} - -#modalContent { - margin-top: 8px; - color: rgb(107 114 128); - font-size: 14px; -} - -#modalActions { - padding: 12px 16px; -} - -@media (min-width: 640px) { - #modalActions { - display: flex; - flex-direction: row-reverse; - padding-left: 24px; - padding-right: 24px; - } -} - -.modalAction { - margin-top: 12px; - display: inline-flex; - width: 100%; - justify-content: center; - border-radius: 6px; - border: 1px solid rgb(209 213 219); - background-color: white; - padding: 8px 16px; - font-weight: 500; - color: rgb(55 65 81); -} - -.modalAction:hover { - background-color: rgb(249 250 251); -} - -@media (min-width: 640px) { - .modalAction { - margin-top: 0; - margin-left: 12px; - width: auto; - } -} diff --git a/js/maptalks.min.js b/js/maptalks.min.js deleted file mode 100644 index e76ede3..0000000 --- a/js/maptalks.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * maptalks v1.0.0-rc.14 - * LICENSE : BSD-3-Clause - * (c) 2016-2022 maptalks.org - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).maptalks={})}(this,function(t){"use strict";var c="_maptalks__internal_layer_",n=["MultiPoint","MultiLineString","MultiPolygon","GeometryCollection"],s=["FeatureCollection","Feature","Point","LineString","Polygon"].concat(n),g=["markerFile","polygonPatternFile","linePatternFile","markerFillPatternFile","markerLinePatternFile"],p=[["markerWidth","markerHeight"],[],[null,"lineWidth"],[],[null,"markerLineWidth"]],r={lineWidth:1,lineOpacity:1,lineDx:1,lineDy:1,polygonOpacity:1,markerWidth:1,markerHeight:1,markerDx:1,markerDy:1,markerOpacity:1,markerFillOpacity:1,markerLineWidth:1,markerLineOpacity:1,textSize:1,textOpacity:1,textHaloRadius:1,textWrapWidth:1,textLineSpacing:1,textDx:1,textDy:1},i=["lineColor","polygonFill","markerFill","markerLineColor","textFill"],a=14;function v(){return Date.now()}function H(t){for(var e=1;e=t.x-e&&this.x<=t.x+e&&this.y>=t.y-e&&this.y<=t.y+e},i.mag=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},i.unit=function(){return this.copy()._unit()},i._unit=function(){return this._div(this.mag()),this},i.perp=function(){return this.copy()._perp()},i._perp=function(){var t=this.y;return this.y=this.x,this.x=-t,this},i.angleWith=function(t){return this.angleWithSep(t.x,t.y)},i.angleWithSep=function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},i._rotate=function(t){var e=Math.cos(t),i=Math.sin(t),n=e*this.x-i*this.y,r=i*this.x+e*this.y;return this.x=n,this.y=r,this},i.rotate=function(t){return this.copy()._rotate(t)},e}(ot);function st(t){var e="data:image/svg+xml";return 4>8-o%1*8)){if(255<(i=n.charCodeAt(o+=.75)))throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");e=e<<8|i}return r}function kt(t,e){for(var i=atob(t),n=new ArrayBuffer(i.length),r=new Uint8Array(n),o=0;o=t.stops.length||e<=t.stops[n][0]);)n++;return 0===n?t.stops[n][1]:n===t.stops.length?t.stops[n-1][1]:function i(n,r,o,s,a,h){return"function"==typeof a?function(){var t=a.apply(void 0,arguments),e=h.apply(void 0,arguments);return i(n,r,o,s,t,e)}:a.length?function(t,e,i,n,r,o){for(var s=[],a=0;a"===e||"<="===e||">="===e?oe(t[1],t[2],e,!0):"any"===e?se(t.slice(1),"||"):"all"===e?se(t.slice(1),"&&"):"none"===e?le(se(t.slice(1),"||")):"in"===e?ae(t[1],t.slice(2)):"!in"===e?le(ae(t[1],t.slice(2))):"has"===e?he(t[1]):"!has"===e?le(he(t[1])):"true")+")"}function re(t){return"$"===t[0]?"f."+t.substring(1):"p["+JSON.stringify(t)+"]"}function oe(t,e,i,n){var r=re(t),o="$type"===t?ee.indexOf(e):JSON.stringify(e);return(n?"typeof "+r+"=== typeof "+o+"&&":"")+r+i+o}function se(t,e){return t.map(ne).join(e)}function ae(t,e){"$type"===t&&(e=e.map(function(t){return ee.indexOf(t)}));var i=JSON.stringify(e.sort(ue)),n=re(t);return e.length<=200?i+".indexOf("+n+") !== -1":"function(v, a, i, j) {\n while (i <= j) { var m = (i + j) >> 1;\n if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;\n }\n return false; }("+n+", "+i+",0,"+(e.length-1)+")"}function he(t){return"$id"===t?'"id" in f':JSON.stringify(t)+" in p"}function le(t){return"!("+t+")"}function ue(t,e){return t");for(var f=0;f"),"data:image/svg+xml;base64,"+At(d.join(" "))}function xe(t,e){if(!t)return[];var i=t;Array.isArray(t)||(i=[t]);for(var n,r,o,s,a=[],h=g,l=i.length-1;0<=l;l--)if(t=i[l]){e&&(t=we(t));for(var u=0;u/i.test(t)}function Pi(t,e){var i=bi(t);b(e)?i.innerHTML=e:i.appendChild(e);var n=new Pe(i.clientWidth,i.clientHeight);return si(i),n}function bi(t){var e=document.createElement(t);return e.style.cssText="position:absolute;left:-10000px;top:-10000px;",document.body.appendChild(e),e}var Mi,Ti=ai,Si=hi,Ei=Object.freeze({TRANSFORM:ti,TRANSFORMORIGIN:ei,TRANSITION:ii,CSSFILTER:ni,createEl:ri,createElOn:oi,removeDomNode:si,addDomEvent:ai,removeDomEvent:hi,listensDomEvent:li,preventDefault:ui,stopPropagation:ci,preventSelection:di,offsetDom:fi,computeDomPosition:gi,getEventContainerPoint:pi,setStyle:mi,hasClass:_i,addClass:vi,setClass:yi,getClass:xi,setOpacity:function(t,e){return t.style.opacity=e,this},setTransform:wi,setTransformMatrix:function(t,e){var i="matrix("+(b(e)?e:e.join())+")";return t.style[ti]!==i&&(t.style[ti]=i),this},removeTransform:function(t){return t.style[ti]&&(t.style[ti]=""),this},isHTML:Ci,measureDom:Pi,getDomRuler:bi,on:Ti,off:Si}),Ri="function"==typeof Map,Ai=function(){},ki=function(){function t(t,e){this.max=t,this.onRemove=e||Ai,this.reset()}var e=t.prototype;return e.reset=function(){for(var t in this.data)this.onRemove(this.data[t]);return this.data={},this.order=[],this},e.clear=function(){this.reset(),delete this.onRemove},e.add=function(t,e){if(this.has(t))this.order.splice(this.order.indexOf(t),1),this.data[t]=e,this.order.push(t);else if(this.data[t]=e,this.order.push(t),this.order.length>this.max){var i=this.getAndRemove(this.order[0]);i&&this.onRemove(i)}return this},e.has=function(t){return t in this.data},e.keys=function(){return this.order},e.getAndRemove=function(t){if(!this.has(t))return null;var e=this.data[t];return delete this.data[t],this.order.splice(this.order.indexOf(t),1),e},e.get=function(t){return this.has(t)?this.data[t]:null},e.remove=function(t){if(!this.has(t))return this;var e=this.data[t];return delete this.data[t],this.onRemove(e),this.order.splice(this.order.indexOf(t),1),this},e.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this.getAndRemove(this.order[0]);e&&this.onRemove(e)}return this},t}();Ri&&(Mi=function(){function t(t,e){this.max=t,this.onRemove=e||Ai,this.reset()}var e=t.prototype;return e.reset=function(){if(this.data){var t=this.data.values(),e=Array.isArray(t),i=0;for(t=e?t:t[Symbol.iterator]();;){var n;if(e){if(i>=t.length)break;n=t[i++]}else{if((i=t.next()).done)break;n=i.value}var r=n;this.onRemove(r)}}return this.data=new Map,this},e.clear=function(){this.reset(),delete this.onRemove},e.add=function(t,e){return e&&(this.has(t)?(this.data.delete(t),this.data.set(t,e),this.data.size>this.max&&this.shrink()):this.data.set(t,e)),this},e.keys=function(){var t=new Array(this.data.size),e=0,i=this.data.keys(),n=Array.isArray(i),r=0;for(i=n?i:i[Symbol.iterator]();;){var o;if(n){if(r>=i.length)break;o=i[r++]}else{if((r=i.next()).done)break;o=r.value}var s=o;t[e++]=s}return t},e.shrink=function(){for(var t=this.data.keys(),e=t.next();this.data.size>this.max;){var i=this.getAndRemove(e.value);i&&this.onRemove(i),e=t.next()}},e.has=function(t){return this.data.has(t)},e.getAndRemove=function(t){if(!this.has(t))return null;var e=this.data.get(t);return this.data.delete(t),e},e.get=function(t){return this.has(t)?this.data.get(t):null},e.remove=function(t){if(!this.has(t))return this;var e=this.data.get(t);return this.data.delete(t),this.onRemove(e),this},e.setMaxSize=function(t){return this.max=t,this.data.size>this.max&&this.shrink(),this},t}());var Oi=Ri?Mi:ki,Li={jsonp:function(t,e){var i="_maptalks_jsonp_"+lt();t.match(/\?/)?t+="&callback="+i:t+="?callback="+i;var n=document.createElement("script");return n.type="text/javascript",n.src=t,window[i]=function(t){e(null,t),document.getElementsByTagName("head")[0].removeChild(n),n=null,delete window[i]},document.getElementsByTagName("head")[0].appendChild(n),this},get:function(t,e,i){if(G(e)){var n=i;i=e,e=n}if(f&&Li.get.node)return Li.get.node(t,i,e);var r=Li._getClient(i);if(r.open("GET",t,!0),e){for(var o in e.headers)r.setRequestHeader(o,e.headers[o]);r.withCredentials="include"===e.credentials,e.responseType&&(r.responseType=e.responseType)}return r.send(null),r},post:function(t,e,i){var n;if(b(t)){if(G(e)){var r=i;i=e,e=r}n=(e=e||{}).postData}else{var o=i;n=e,t=(e=t).url,i=o}if(f&&Li.post.node)return e.url=t,Li.post.node(e,n,i);var s=Li._getClient(i);if(s.open("POST",e.url,!0),e.headers||(e.headers={}),e.headers["Content-Type"]||(e.headers["Content-Type"]="application/x-www-form-urlencoded"),"setRequestHeader"in s)for(var a in e.headers)e.headers.hasOwnProperty(a)&&s.setRequestHeader(a,e.headers[a]);return b(n)||(n=JSON.stringify(n)),s.send(n),s},_wrapCallback:function(t,e){return function(){4===t.readyState&&(200===t.status?"arraybuffer"===t.responseType?0===t.response.byteLength?e(new Error("http status 200 returned without content.")):e(null,{data:t.response,cacheControl:t.getResponseHeader("Cache-Control"),expires:t.getResponseHeader("Expires"),contentType:t.getResponseHeader("Content-Type")}):e(null,t.responseText):e(new Error(t.statusText+","+t.status)))}},_getClient:function(t){var e;try{e=new XMLHttpRequest}catch(t){try{e=new ActiveXObject("Msxml2.XMLHTTP")}catch(t){try{e=new ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}}return e.onreadystatechange=Li._wrapCallback(e,t),e},getArrayBuffer:function(t,e,i){if(G(e)){var n=i;i=e,e=n}return e||(e={}),e.responseType="arraybuffer",Li.get(t,e,i)},getImage:function(o,t,e){return Li.getArrayBuffer(t,e,function(t,e){if(t)o.onerror&&o.onerror(t);else if(e){var i=window.URL||window.webkitURL,n=o.onload;o.onload=function(){n&&n(),i.revokeObjectURL(o.src)};var r=new Blob([new Uint8Array(e.data)],{type:e.contentType});o.cacheControl=e.cacheControl,o.expires=e.expires,o.src=e.data.byteLength?i.createObjectURL(r):Dt}})},getJSON:function(t,e,n){if(G(e)){var i=n;n=e,e=i}var r=function(t,e){var i=e?ft(e):null;n(t,i)};return e&&e.jsonp?Li.jsonp(t,r):Li.get(t,e,r)}},Di=!1,Ii=null,ji=Math.PI/180,zi={setHitTesting:function(t){Di=t},createCanvas:function(t,e,i){var n;return f?n=new i(t,e):((n=ri("canvas")).width=t,n.height=e),n},prepareCanvasFont:function(t,e){t.textBaseline="top",t.font=ze(e);var i=e.textFill;i||(i="#000"),t.fillStyle=zi.getRgba(i,e.textOpacity)},prepareCanvas:function(t,e,i,n){if(e){var r=e.lineWidth;ut(r)||t.lineWidth===r||(t.lineWidth=r);var o=e.linePatternFile,s=e.lineColor||"#000";if(n)t.strokeStyle="#000";else if(o&&i){var a;(e.linePatternDx||e.linePatternDy)&&(a=[e.linePatternDx,e.linePatternDy]),zi._setStrokePattern(t,o,r,a,i),e.lineDasharray=[]}else Ze(s)?e.lineGradientExtent?t.strokeStyle=zi._createGradient(t,s,e.lineGradientExtent):t.strokeStyle="#000":(Array.isArray(s)&&(s=zi.normalizeColorToRGBA(s)),t.strokeStyle=s);e.lineJoin&&(t.lineJoin=e.lineJoin),e.lineCap&&(t.lineCap=e.lineCap),t.setLineDash&&Pt(e.lineDasharray)&&t.setLineDash(e.lineDasharray);var h=e.polygonPatternFile,l=e.polygonFill||"rgba(255,255,255,0)";if(n)t.fillStyle="#000";else if(h&&i){var u=Gi(h),c=i.getImage([u,null,null]);if(c||(c=i.getImage([u+"-texture",null,r])),st(u)&&c instanceof Image&&(tt.edge||tt.ie)){var d=c.width||20,f=c.height||20,g=zi.createCanvas(d,f);zi.image(g.getContext("2d"),c,0,0,d,f),c=g}c?(t.fillStyle=t.createPattern(c,"repeat"),(e.polygonPatternDx||e.polygonPatternDy)&&(t.fillStyle.polygonPatternOffset=[e.polygonPatternDx,e.polygonPatternDy])):"undefined"!=typeof console&&console.warn("img not found for",u)}else Ze(l)?e.polygonGradientExtent?t.fillStyle=zi._createGradient(t,l,e.polygonGradientExtent):t.fillStyle="rgba(255,255,255,0)":(Array.isArray(l)&&(l=zi.normalizeColorToRGBA(l)),t.fillStyle=l)}},_createGradient:function(t,e,i){var n=null,r=e.places,o=i.getMin(),s=i.getMax(),a=i.getWidth(),h=i.getHeight();if(e.type&&"linear"!==e.type){if("radial"===e.type){if(r){if(6!==r.length)throw new Error("A radial gradient's places should have 6 numbers.");r=[o.x+r[0]*a,o.y+r[1]*h,a*r[2],o.x+r[3]*a,o.y+r[4]*h,a*r[5]]}else{var l=i.getCenter()._round();r=[l.x,l.y,Math.abs(l.x-o.x),l.x,l.y,0]}n=t.createRadialGradient.apply(t,r)}}else{if(r){if(4!==r.length)throw new Error("A linear gradient's places should have 4 numbers.");r=[o.x+r[0]*a,o.y+r[1]*h,o.x+r[2]*a,o.y+r[3]*h]}else r=[o.x,o.y,s.x,o.y];n=t.createLinearGradient.apply(t,r)}return e.colorStops.forEach(function(t){n.addColorStop.apply(n,t)}),n},_setStrokePattern:function(t,e,i,n,r){var o,s=Gi(e);if(f)o=r.getImage([s,null,i]);else{var a=s+"-texture-"+i;if(!(o=r.getImage(a))){var h=r.getImage([s,null,null]);if(h){var l;l=h.width&&h.height?Math.round(h.width*i/h.height):i;var u=zi.createCanvas(l,i,t.canvas.constructor);zi.image(u.getContext("2d"),h,0,0,l,i),r.addResource([a,null,i],u),o=u}}}o?(t.strokeStyle=t.createPattern(o,"repeat"),t.strokeStyle.linePatternOffset=n):"undefined"!=typeof console&&console.warn("img not found for",s)},clearRect:function(t,e,i,n,r){t.canvas._drawn=!1,t.clearRect(e,i,n,r)},fillCanvas:function(t,e,i,n){if(Di&&(e=1),t.canvas._drawn=!0,0!==e){var r,o=zi._isPattern(t.fillStyle),s=t.fillStyle&&t.fillStyle.polygonPatternOffset,a=s?s[0]:0,h=s?s[1]:0;ut(e)&&(e=1),e<1&&(r=t.globalAlpha,t.globalAlpha*=e),o&&(i=i||0,n=n||0,t.translate(i+a,n+h)),t.fill(),o&&t.translate(-i-a,-n-h),e<1&&(t.globalAlpha=r)}},getRgba:function(t,e){return ut(e)&&(e=1),"#"!==t[0]?(Array.isArray(t)&&(t=zi.normalizeColorToRGBA(t,e)),t):(7===t.length?(i=parseInt(t.substring(1,3),16),n=parseInt(t.substring(3,5),16),r=parseInt(t.substring(5,7),16)):(i=17*parseInt(t.substring(1,2),16),n=17*parseInt(t.substring(2,3),16),r=17*parseInt(t.substring(3,4),16)),"rgba("+i+","+n+","+r+","+e+")");var i,n,r},normalizeColorToRGBA:function(t,e){return void 0===e&&(e=1),"rgba("+255*t[0]+","+255*t[1]+","+255*t[2]+","+(4===t.length?t[3]:1)*e+")"},image:function(t,e,i,n,r,o){t.canvas._drawn=!0;try{F(r)&&F(o)?t.drawImage(e,i,n,r,o):t.drawImage(e,i,n)}catch(t){console&&(console.warn("error when drawing image on canvas:",t),console.warn(e))}},text:function(t,e,i,n,r){zi._textOnMultiRow(t,r.rows,n,i,r.size,r.rawSize)},_textOnMultiRow:function(t,e,i,n,r,o){for(var s,a,h=Ie(r,i.textHorizontalAlignment,i.textVerticalAlignment),l=o.height+i.textLineSpacing,u=n.add(0,h.y),c=i.textMaxHeight,d=0,f=0,g=e.length;f=c));f++);},_textOnLine:function(t,e,i,n,r,o){Di&&(o=1);var s,a,h=0!==o&&0!==n;t.textBaseline="top";var l=t.shadowBlur,u=t.shadowOffsetX,c=t.shadowOffsetY;if(h){var d=t.globalAlpha;t.globalAlpha*=o,t.miterLimit=2,t.lineJoin="round",t.lineCap="round",t.lineWidth=2*n,Array.isArray(r)&&(r=zi.normalizeColorToRGBA(r)),t.strokeStyle=r,t.strokeText(e,i.x,i.y+1),t.miterLimit=10,t.globalAlpha=d,s=t.globalCompositeOperation,t.globalCompositeOperation="destination-out",a=t.fillStyle,t.fillStyle="#000"}l&&h&&(t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0),zi.fillText(t,e,i),s&&(t.globalCompositeOperation=s,zi.fillText(t,e,i,a),l&&(t.shadowBlur=l,t.shadowOffsetX=u,t.shadowOffsetY=c))},fillText:function(t,e,i,n){t.canvas._drawn=!0,n&&(t.fillStyle=n),t.fillText(e,i.x,i.y+1)},_stroke:function(t,e,i,n){if(Di&&(e=1),t.canvas._drawn=!0,0!==e){var r,o=t.strokeStyle&&t.strokeStyle.linePatternOffset,s=o?o[0]:0,a=o?o[1]:0,h=zi._isPattern(t.strokeStyle)&&(!ut(i)&&!ut(n)||!ut(s)&&!ut(a));ut(e)&&(e=1),e<1&&(r=t.globalAlpha,t.globalAlpha*=e),h&&(i=i||0,n=n||0,t.translate(i+s,n+a)),t.stroke(),h&&t.translate(-i-s,-n-a),e<1&&(t.globalAlpha=r)}},_path:function(r,t,e,o,i){if(Pt(t))for(var n,s,a=Pt(e),h=!0!==i&&zi._isPattern(r.strokeStyle),l=0,u=t.length;li.x&&(a=Math.PI-a);var h=a-(90*ji-r/2),l=Math.cos(h)*s,u=Math.sin(h)*s,c=e.x+l,d=e.y+u,f=Math.asin((i.y-d)/s);c>i.x&&(f=Math.PI-f);var g=f+r;return t.beginPath(),t.arc(c,d,s,f,g),[c,d]},_lineTo:function(t,e){t.lineTo(e.x,e.y)},bezierCurveAndFill:function(t,e,i,n){t.beginPath();var r=e[0];t.moveTo(r.x,r.y);var o=[t];o.push.apply(o,e.splice(1)),zi._bezierCurveTo.apply(zi,o),zi.fillCanvas(t,n),zi._stroke(t,i)},_bezierCurveTo:function(t,e,i,n){t.bezierCurveTo(e.x,e.y,i.x,i.y,n.x,n.y)},ellipse:function(t,e,i,n,r,o,s){var a,h,l,u,c,d,f,g,p;t.beginPath(),i===n&&i===r?t.arc(e.x,e.y,i,0,2*Math.PI):t.ellipse?n!==r?(t.ellipse(e.x,e.y,i,n,0,180*ji,360*ji,!1),t.ellipse(e.x,e.y,i,r,0,0,180*ji,!1)):t.ellipse(e.x,e.y,i,n,0,0,360*ji,!1):(a=e.x,h=e.y,f=(l=i)*(d=.5522848),g=(u=n)*d,p=(c=r)*d,t.moveTo(a-l,h),t.bezierCurveTo(a-l,h-g,a-f,h-u,a,h-u),t.bezierCurveTo(a+f,h-u,a+l,h-g,a+l,h),t.bezierCurveTo(a+l,h+p,a+f,h+c,a,h+c),t.bezierCurveTo(a-f,h+c,a-l,h+p,a-l,h),t.closePath()),zi.fillCanvas(t,s,e.x-i,e.y-n),zi._stroke(t,o,e.x-i,e.y-n)},rectangle:function(t,e,i,n,r){var o=e.x,s=e.y;t.beginPath(),t.rect(o,s,i.width,i.height),zi.fillCanvas(t,r,o,s),zi._stroke(t,n,o,s)},sector:function(t,e,i,n,h,l){var u=ji,r=n[0],o=n[1];function s(t,e,i,n,r,o){var s=u*-o,a=u*-r;t.beginPath(),t.moveTo(e,i),t.arc(e,i,n,s,a),t.lineTo(e,i),zi.fillCanvas(t,l,e-n,i-n),zi._stroke(t,h,e-n,i-n)}s(t,e.x,e.y,i,r,o)},_isPattern:function(t){return!(b(t)||"addColorStop"in t)},drawCross:function(t,e,i,n,r){t.canvas._drawn=!0,t.strokeStyle=r,t.lineWidth=n,t.beginPath(),t.moveTo(e-5,i),t.lineTo(e+5,i),t.moveTo(e,i-5),t.lineTo(e,i+5),t.stroke()},copy:function(t,e){var i=e||ri("canvas");return i.width=t.width,i.height=t.height,i.getContext("2d").drawImage(t,0,0),i},pixelRect:function(t,e,i,n){var r=t.lineWidth,o=t.globalAlpha,s=!1;if(0=t.minX&&e.maxY>=t.minY}function dn(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function fn(t,e,i,n,r){for(var o,s=[e,i];s.length;)(i=s.pop())-(e=s.pop())<=n||(o=e+Math.ceil((i-e)/n/2)*n,Qi(t,o,e,i,r),s.push(e,o,o,i))}tn.prototype={all:function(){return this._all(this.data,[])},search:function(t){var e=this.data,i=[],n=this.toBBox;if(!cn(t,e))return i;for(var r,o,s,a,h=[];e;){for(r=0,o=e.children.length;rthis._maxEntries;)this._split(o,e),e--;this._adjustParentBBoxes(r,o,e)},_split:function(t,e){var i=t[e],n=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,n);var o=this._chooseSplitIndex(i,r,n),s=dn(i.children.splice(o,i.children.length-o));s.height=i.height,s.leaf=i.leaf,nn(i,this.toBBox),nn(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(i,s)},_splitRoot:function(t,e){this.data=dn([t,e]),this.data.height=t.height+1,this.data.leaf=!1,nn(this.data,this.toBBox)},_chooseSplitIndex:function(t,e,i){var n,r,o,s,a,h,l,u,c,d,f,g,p,m;for(h=l=1/0,n=e;n<=i-e;n++)r=rn(t,0,n,this.toBBox),o=rn(t,n,i,this.toBBox),c=r,d=o,void 0,f=Math.max(c.minX,d.minX),g=Math.max(c.minY,d.minY),p=Math.min(c.maxX,d.maxX),m=Math.min(c.maxY,d.maxY),s=Math.max(0,p-f)*Math.max(0,m-g),a=hn(r)+hn(o),se.x?(this.xmin=e.x,this.xmax=t.x):(this.xmin=t.x,this.xmax=e.x),t.y>e.y?(this.ymin=e.y,this.ymax=t.y):(this.ymin=t.y,this.ymax=e.y)):F(t.xmin)&&F(t.xmax)&&F(t.ymin)&&F(t.ymax)&&this.set(t.xmin,t.ymin,t.xmax,t.ymax)}},e._add=function(t){return this._dirty=!0,ut(t.x)?ut(t.xmin)?ut(t[0])||(this.xmin+=t[0],this.ymin+=t[1],this.xmax+=t[0],this.ymax+=t[1]):(this.xmin+=t.xmin,this.ymin+=t.ymin,this.xmax+=t.xmax,this.ymax+=t.ymax):(this.xmin+=t.x,this.ymin+=t.y,this.xmax+=t.x,this.ymax+=t.y),this},e.add=function(){var t=new this.constructor(this.xmin,this.ymin,this.xmax,this.ymax,this.projection);return t._add.apply(t,arguments)},e._scale=function(t){return this._dirty=!0,this.xmin*=t,this.ymin*=t,this.xmax*=t,this.ymax*=t,this},e._sub=function(t){return this._dirty=!0,ut(t.x)?ut(t.xmin)?ut(t[0])||(this.xmin-=t[0],this.ymin-=t[1],this.xmax-=t[0],this.ymax-=t[1]):(this.xmin-=t.xmin,this.ymin-=t.ymin,this.xmax-=t.xmax,this.ymax-=t.ymax):(this.xmin-=t.x,this.ymin-=t.y,this.xmax-=t.x,this.ymax-=t.y),this},e._substract=function(){return this._sub.apply(this,arguments)},e.sub=function(){var t=new this.constructor(this.xmin,this.ymin,this.xmax,this.ymax,this.projection);return t._sub.apply(t,arguments)},e.substract=function(){return this.sub.apply(this,arguments)},e.round=function(){return new this.constructor(Math.round(this.xmin),Math.round(this.ymin),Math.round(this.xmax),Math.round(this.ymax),this.projection)},e._round=function(){return this._dirty=!0,this.xmin=Math.round(this.xmin),this.ymin=Math.round(this.ymin),this.xmax=Math.round(this.xmax),this.ymax=Math.round(this.ymax),this},e.getMin=function(t){return t?(t.set(this.xmin,this.ymin),t):new this._clazz(this.xmin,this.ymin)},e.getMax=function(t){return t?(t.set(this.xmax,this.ymax),t):new this._clazz(this.xmax,this.ymax)},e.getCenter=function(t){var e=(this.xmin+this.xmax)/2,i=(this.ymin+this.ymax)/2;return t?(t.set(e,i),t):new this._clazz(e,i)},e.isValid=function(){return!(ut(this.xmin)||ut(this.ymin)||ut(this.xmax)||ut(this.ymax))},e.equals=function(t){return this.xmin===t.xmin&&this.xmax===t.xmax&&this.ymin===t.ymin&&this.ymax===t.ymax},e.intersects=function(t){this._project(this),this._project(t);var e=Math.max(this.pxmin,t.pxmin),i=Math.max(this.pymin,t.pymin),n=Math.min(this.pxmax,t.pxmax),r=Math.min(this.pymax,t.pymax),o=!(n=t.pxmin&&this.pxmax<=t.pxmax&&this.pymin>=t.pymin&&this.pymax<=t.pymax},e.contains=function(t){if(!t)return!1;this._project(this);var e=this.projection;if(e)if(void 0!==t.x){var i=Mn;Array.isArray(t)?(i.x=t[0],i.y=t[1]):(i.x=t.x,i.y=t.y),t=e.project(i,i)}else void 0!==t.xmin&&this._project(t);return(t.x||t.pxmin||0)>=this.pxmin&&(t.x||t.pxmax||0)<=this.pxmax&&(t.y||t.pymin||0)>=this.pymin&&(t.y||t.pymax||0)<=this.pymax},e.getWidth=function(){return Math.abs(this.xmax-this.xmin)},e.getHeight=function(){return Math.abs(this.ymax-this.ymin)},e.getSize=function(){return new Pe(this.getWidth(),this.getHeight())},e.set=function(t,e,i,n){return this.xmin=t,this.ymin=e,this.xmax=i,this.ymax=n,this._dirty=!0,this},e.__combine=function(t){var e,i,n,r;void 0!==t.x&&(Pn.xmin=Pn.xmax=t.x,Pn.ymin=Pn.ymax=t.y,t=Pn),this._project(t),this._project(this),F(this.pxmin)?(e=Math.min(this.pxmin,t.pxmin),i=Math.min(this.pymin,t.pymin),n=Math.max(this.pxmax,t.pxmax),r=Math.max(this.pymax,t.pymax)):(e=t.pxmin,i=t.pymin,n=t.pxmax,r=t.pymax);var o=this.projection;if(o){Tn.set(e,i),Sn.set(n,r);var s=o.unproject(Tn,Tn),a=o.unproject(Sn,Sn);e=s.x,i=s.y,n=a.x,r=a.y}return Dn[0]=e,Dn[1]=i,Dn[2]=n,Dn[3]=r,Dn},e._combine=function(t){if(!t||t.isValid&&!t.isValid())return this;var e=this.__combine(t);return this.set(e[0],e[1],e[2],e[3]),this._dirty=!0,this},e.combine=function(t){if(!t||t.isValid&&!t.isValid())return this;var e=this.__combine(t);return new this.constructor(e[0],e[1],e[2],e[3],this.projection)},e.intersection=function(t){if(!this.intersects(t))return null;En.x=Math.max(this.pxmin,t.pxmin),En.y=Math.max(this.pymin,t.pymin),Rn.x=Math.min(this.pxmax,t.pxmax),Rn.y=Math.min(this.pymax,t.pymax);var e=En,i=Rn,n=this.projection;return n&&(e=n.unproject(e,e),i=n.unproject(i,i)),new this.constructor(e,i,n)},e.expand=function(t){var e,i;return F(t)?e=i=t:(e=t.width||t.x||t[0]||0,i=t.height||t.y||t[1]||0),new this.constructor(this.xmin-e,this.ymin-i,this.xmax+e,this.ymax+i,this.projection)},e._expand=function(t){var e,i;return F(t)?e=i=t:(e=t.width||t.x||t[0]||0,i=t.height||t.y||t[1]||0),this.xmin-=e,this.ymin-=i,this.xmax+=e,this.ymax+=i,this._dirty=!0,this},e.toJSON=function(){return{xmin:this.xmin,ymin:this.ymin,xmax:this.xmax,ymax:this.ymax}},e.toArray=function(t){var e=this.xmin,i=this.ymin,n=this.xmax,r=this.ymax;return t?(t[0].x=e,t[0].y=r,t[1].x=n,t[1].y=r,t[2].x=n,t[2].y=i,t[3].x=e,t[3].y=i,t[4].x=e,t[4].y=r,t):[new this._clazz([e,r]),new this._clazz([n,r]),new this._clazz([n,i]),new this._clazz([e,i]),new this._clazz([e,r])]},e.toString=function(){return this.xmin+","+this.ymin+","+this.xmax+","+this.ymax},e.copy=function(){return new this.constructor(this.xmin,this.ymin,this.xmax,this.ymax,this.projection)},e.convertTo=function(t,e){if(!this.isValid())return null;var i,n=e||new this.constructor;return e&&n.set(null,null,null,null),this._clazz===wn?i=An:this._clazz===ct&&(i=bn),i.x=this.xmin,i.y=this.ymax,n._combine(t(i)),i.x=this.xmax,n._combine(t(i)),i.y=this.ymin,n._combine(t(i)),i.x=this.xmin,n._combine(t(i)),n},e._project=function(t){if(t&&t.isValid()){var e=this.projection;if(e){if(t._dirty){kn.set(t.xmax,t.ymin),On.set(t.xmin,t.ymax),Ln[0]=kn,Ln[1]=On;var i=e.projectCoords(Ln),n=i[0],r=i[1];t.pxmin=Math.min(n.x,r.x),t.pymin=Math.min(n.y,r.y),t.pxmax=Math.max(n.x,r.x),t.pymax=Math.max(n.y,r.y)}delete t._dirty}else t.pxmin=t.xmin,t.pxmax=t.xmax,t.pymin=t.ymin,t.pymax=t.ymax}else t&&(t.pxmin=t.pxmax=t.pymin=t.pymax=null)},t}();Pn=new In(0,0,0,0);var jn,zn=function(o){function t(t,e,i,n){var r;return(r=o.call(this,t,e,i,n)||this)._clazz=ct,r}return et(t,o),t}(In),Hn=function(){function t(t){this.matrix=t}var e=t.prototype;return e.transform=function(t,e,i){var n=this.matrix[0]*(t.x-this.matrix[2])/e,r=-this.matrix[1]*(t.y-this.matrix[3])/e;return i?(i.x=n,i.y=r,i):new ct(n,r)},e.untransform=function(t,e,i){var n=t.x*e/this.matrix[0]+this.matrix[2],r=t.y*e/-this.matrix[1]+this.matrix[3];return i?(i.x=n,i.y=r,i):new wn(n,r)},t}(),Fn={project:function(){},unproject:function(){},projectCoords:function(t,e){var i=this;if(!t)return[];if(!Array.isArray(t))return this.project(t);if(0===t.length)return[];if(!this.isSphere())return mt(t,this.project,this);if(Array.isArray(t[0]))return t.map(function(t){return i.projectCoords(t,e)});for(var n,r,o,s,a,h,l=!1!==e,u=this.getCircum(),c=this.getSphereExtent(),d=c.sx,f=c.sy,g=t[0],p=[this.project(g)],m=1,_=t.length;m<_;m++)s=(o=t[m]).x-g.x,a=o.y-g.y,h=this.project(o),180g.x),n&&(h._add(-u.x*vt(s)*d,0),o._add(-360*vt(s),0))),90e.x?1:-1,this.extent.sy=t.y>e.y?1:-1}return this.extent}},Gn={measureLength:function(t,e){if(!Array.isArray(t))return this.measureLenBetween(t,e);for(var i=0,n=0,r=t.length;nMath.PI/2&&(l=0Math.PI&&(r-=2*Math.PI),r<-Math.PI&&(r+=2*Math.PI);var o=Math.log(Math.tan(n/2+Math.PI/4)/Math.tan(i/2+Math.PI/4));return(h(Math.atan2(r,o))+360)%360}var Bn=H({measure:"EPSG:4326",sphere:new Nn(6378137),measureLenBetween:function(){return this.sphere.measureLenBetween.apply(this.sphere,arguments)},measureArea:function(){return this.sphere.measureArea.apply(this.sphere,arguments)},_locate:function(){return this.sphere._locate.apply(this.sphere,arguments)},locate:function(){return this.sphere.locate.apply(this.sphere,arguments)},_rotate:function(){return this.sphere._rotate.apply(this.sphere,arguments)},rotate:function(){return this.sphere.rotate.apply(this.sphere,arguments)}},Gn),Vn=H({measure:"BAIDU",sphere:new Nn(6370996.81),measureLenBetween:function(){return this.sphere.measureLenBetween.apply(this.sphere,arguments)},measureArea:function(){return this.sphere.measureArea.apply(this.sphere,arguments)},_locate:function(){return this.sphere._locate.apply(this.sphere,arguments)},locate:function(){return this.sphere.locate.apply(this.sphere,arguments)},_rotate:function(){return this.sphere._rotate.apply(this.sphere,arguments)},rotate:function(){return this.sphere.rotate.apply(this.sphere,arguments)}},Gn),Un=Bn,Jn={};function Yn(t){Jn[t.measure]=t}Yn(Zn),Yn(Bn),Yn(Vn);var qn={getInstance:function(t){if(!t)return Un;for(var e in Jn)if(_(Jn,e)){var i=Jn[e].measure;if(!i)continue;if(t.toLowerCase()===i.toLowerCase())return Jn[e]}return null}},Xn=Object.freeze({Identity:Zn,DEFAULT:Un,Measurer:qn,WGS84Sphere:Bn,BaiduSphere:Vn}),Qn=H({},Fn,{code:"EPSG:3857",rad:Math.PI/180,metersPerDegree:6378137*Math.PI/180,maxLatitude:85.0511287798,project:function(t,e){var i=this.rad,n=this.metersPerDegree,r=this.maxLatitude,o=t.x,s=Math.max(Math.min(r,t.y),-r),a=o*n,h=(0===s?0:Math.log(Math.tan((90+s)*i/2))/i)*n;return e?(e.x=a,e.y=h,e):new wn(a,h)},unproject:function(t,e){var i,n=this.rad,r=this.metersPerDegree,o=t.x/r,s=t.y;0===s?i=0:(i=s/r,i=(2*Math.atan(Math.exp(i*n))-Math.PI/2)/n),Math.abs(Math.abs(o)-180)<1e-7&&(o=180*vt(o)),Math.abs(Math.abs(i)-this.maxLatitude)<1e-7&&(i=vt(i)*this.maxLatitude);var a=wt(o,-180,180),h=wt(i,-this.maxLatitude,this.maxLatitude);return e?(e.x=a,e.y=h,e):new wn(a,h)}},Bn),Kn=H({},Fn,{code:"EPSG:4326",project:function(t,e){return e?(e.x=t.x,e.y=t.y,e):new wn(t)},unproject:function(t,e){return e?(e.x=t.x,e.y=t.y,e):new wn(t)}},Bn),$n=H({},Kn,{code:"EPSG:4490"}),tr=H({},Fn,{code:"BAIDU",project:function(t,e){return this.convertLL2MC(t,e)},unproject:function(t,e){return this.convertMC2LL(t,e)}},Vn,{EARTHRADIUS:6370996.81,MCBAND:[12890594.86,8362377.87,5591021,3481989.83,1678043.12,0],LLBAND:[75,60,45,30,15,0],MC2LL:[[1.410526172116255e-8,898305509648872e-20,-1.9939833816331,200.9824383106796,-187.2403703815547,91.6087516669843,-23.38765649603339,2.57121317296198,-.03801003308653,17337981.2],[-7.435856389565537e-9,8983055097726239e-21,-.78625201886289,96.32687599759846,-1.85204757529826,-59.36935905485877,47.40033549296737,-16.50741931063887,2.28786674699375,10260144.86],[-3.030883460898826e-8,898305509983578e-20,.30071316287616,59.74293618442277,7.357984074871,-25.38371002664745,13.45380521110908,-3.29883767235584,.32710905363475,6856817.37],[-1.981981304930552e-8,8983055099779535e-21,.03278182852591,40.31678527705744,.65659298677277,-4.44255534477492,.85341911805263,.12923347998204,-.04625736007561,4482777.06],[3.09191371068437e-9,8983055096812155e-21,6995724062e-14,23.10934304144901,-.00023663490511,-.6321817810242,-.00663494467273,.03430082397953,-.00466043876332,2555164.4],[2.890871144776878e-9,8983055095805407e-21,-3.068298e-8,7.47137025468032,-353937994e-14,-.02145144861037,-1234426596e-14,.00010322952773,-323890364e-14,826088.5]],LL2MC:[[-.0015702102444,111320.7020616939,0x60e374c3105a3,-0x24bb4115e2e164,0x5cc55543bb0ae8,-0x7ce070193f3784,0x5e7ca61ddf8150,-0x261a578d8b24d0,0x665d60f3742ca,82.5],[.0008277824516172526,111320.7020463578,647795574.6671607,-4082003173.641316,10774905663.51142,-15171875531.51559,12053065338.62167,-5124939663.577472,913311935.9512032,67.5],[.00337398766765,111320.7020202162,4481351.045890365,-23393751.19931662,79682215.47186455,-115964993.2797253,97236711.15602145,-43661946.33752821,8477230.501135234,52.5],[.00220636496208,111320.7020209128,51751.86112841131,3796837.749470245,992013.7397791013,-1221952.21711287,1340652.697009075,-620943.6990984312,144416.9293806241,37.5],[-.0003441963504368392,111320.7020576856,278.2353980772752,2485758.690035394,6070.750963243378,54821.18345352118,9540.606633304236,-2710.55326746645,1405.483844121726,22.5],[-.0003218135878613132,111320.7020701615,.00369383431289,823725.6402795718,.46104986909093,2351.343141331292,1.58060784298199,8.77738589078284,.37238884252424,7.45]],convertMC2LL:function(t,e){for(var i,n=0,r=this.MCBAND.length;n=this.MCBAND[n]){i=this.MC2LL[n];break}return this.convertor(t,i,e)},convertLL2MC:function(t,e){var i,n,r;t.x=this.getLoop(t.x,-180,180),t.y=this.getRange(t.y,-74,74);var o=new wn(t.x,t.y);for(n=0,r=this.LLBAND.length;n=this.LLBAND[n]){i=this.LL2MC[n];break}if(!i)for(n=this.LLBAND.length-1;0<=n;n--)if(o.y<=-this.LLBAND[n]){i=this.LL2MC[n];break}return this.convertor(t,i,e)},convertor:function(t,e,i){if(!t||!e)return null;var n=e[0]+e[1]*Math.abs(t.x),r=Math.abs(t.y)/e[9],o=e[2]+e[3]*r+e[4]*r*r+e[5]*r*r*r+e[6]*r*r*r*r+e[7]*r*r*r*r*r+e[8]*r*r*r*r*r*r;return n*=t.x<0?-1:1,o*=t.y<0?-1:1,i?(i.x=n,i.y=o,i):new wn(n,o)},toRadians:function(t){return Math.PI*t/180},toDegrees:function(t){return 180*t/Math.PI},getRange:function(t,e,i){return null!=e&&(t=Math.max(t,e)),null!=i&&(t=Math.min(t,i)),t},getLoop:function(t,e,i){if(t===1/0)return i;if(t===-1/0)return e;for(;i=this._limit},e.getMessage=function(){return{messageType:"batch",messages:this._messages}},t}(),pr=function(){function t(){this.active={},this.workerCount="undefined"!=typeof window?window.MAPTALKS_WORKER_COUNT||fr:0,this._messages=[],this._messageBuffers=[]}var e=t.prototype;return e.acquire=function(t){if(!this.workers){this.workers=[];for(var e=ur(),i=0;i"===o.type?this.actorId===o.actorId&&this[o.command](o.params,function(t,e,i){var n={type:"",callback:o.callback};t?n.error=t.message:n.data=e,r.post(n,i||vr,o.workerId)}):i&&o.error?i(o.error):i&&i(null,o.data)},e.remove=function(){var e=this;this.workers.forEach(function(t){t.removeEventListener("message",e.receiveFn,!1)}),this.workerPool.release(this.actorId),delete this.receiveFn,delete this.workers,delete this.callbacks,delete this.workerPool},e.post=function(t,e,i){return("number"!=typeof i||isNaN(i))&&(i=this.currentActor=(this.currentActor+1)%this.workerPool.workerCount),t.workerId=i,t.workerKey=this.workerKey,t.actorId=this.actorId,this.workerPool.addMessage(i,t,e||vr),i},e.getDedicatedWorker=function(){return _r=(_r+1)%this.workerPool.workerCount},t}();var xr="core-fetch-image",wr=[],Cr=function(t){function e(){return t.call(this,xr)||this}return et(e,t),e.prototype.fetchImage=function(t,e){var i={url:t};this.send(i,wr,e)},e}(yr),Pr=function(i){function t(t){var e;return(e=i.call(this)||this).layer=t,e._painted=!1,e._drawTime=0,!tt.decodeImageInWorker||"gl"!==t.options.renderer&&tt.safari||(e._resWorkerConn=new Cr),e.setToRedraw(),e}et(t,i);var e=t.prototype;return e.render=function(t){this.prepareRender(),this.getMap()&&this.layer.isVisible()&&(this.resources||(this.resources=new br),this.checkAndDraw(this._tryToDraw,t))},e.checkAndDraw=function(t){var e=this;this._toRedraw=!1;for(var i=arguments.length,n=new Array(1n.width*i||t.y<0||t.y>n.height*i)return!1;var r=this.getImageData&&this.getImageData();if(r){var o=Math.round(i*t.x),s=Math.round(i*t.y)*r.width*4+4*o;return 0n.width||+t[2]>n.height))},e.login=function(t){var e=this.resources[t];e&&e.refCnt++},e.logout=function(t){var e=this.resources[t];e&&e.refCnt--<=0&&delete this.resources[t]},e.getImage=function(t){var e=this._getImgUrl(t);return!this.isResourceLoaded(t)||this._errors[e]?null:this.resources[e].image},e.markErrorResource=function(t){this._errors[this._getImgUrl(t)]=1},e.merge=function(t){if(!t)return this;for(var e in t.resources){var i=t.resources[e];this.addResource([e,i.width,i.height],i.image)}return this},e.forEach=function(t){if(!this.resources)return this;for(var e in this.resources)_(this.resources,e)&&t(e,this.resources[e]);return this},e._getImgUrl=function(t){return Array.isArray(t)?t[0]:t},e.remove=function(){for(var t in this.resources){var e=this.resources[t];e&&e.image&&e.image.close&&e.image.close()}this.resources={}},t}(),Mr={markerWidth:10,markerHeight:10,markerLineWidth:1};var Tr=new ct(0,0);function Sr(t,e,i,n,r,o,s){var a,h,l,u,c,d,f=Tr.set(e,i),g=t.set(f.x,f.y,f.x+o,f.y+s);return g._add(r),n&&(h=n,l=(a=g).xmin,u=a.ymin,c=a.xmax,d=a.ymax,Ir.set(l,u,c,d),Ir.convertTo(function(t){return t._rotate(h)},a)),g}var Er=[];function Rr(t,e,i){var n=Lr(e,(i=i||Dr(Er,e))[0],i[1]);return Sr(t,e.markerDx||0,e.markerDy||0,jr(e),n,i[0],i[1])}function Ar(t){return"rectangle"===t?"right":"middle"}function kr(t){return"bar"===t||"pie"===t||"pin"===t?"top":"rectangle"===t?"bottom":"middle"}var Or=new Pe(0,0);function Lr(t,e,i){var n=2*(t.shadowBlur||0)+.5;Or.width=e,Or.height=i;var r=t.markerType,o=Ie(Or,t.markerHorizontalAlignment||Ar(r),t.markerVerticalAlignment||kr(r));return o.x!==-e/2&&(o.x-=vt(o.x+e/2)*n),o.y!==-i/2&&(o.y-=vt(o.y+i/2)*n),o}function Dr(t,e){var i=_t(e.markerWidth,Mr.markerWidth),n=_t(e.markerHeight,Mr.markerHeight),r=_t(e.markerLineWidth,Mr.markerLineWidth),o=2*((e.shadowBlur||0)+Math.max(Math.abs(e.shadowOffsetX||0)+Math.abs(e.shadowOffsetY||0))),s=Math.round(i+r+o+1),a=Math.round(n+r+o+1);return t[0]=s,t[1]=a,t}var Ir=new zn;function jr(t,e){void 0===e&&(e="markerRotation");var i=t[e];return F(i)?-i*Math.PI/180:0}function zr(t,e,i){var n=e.markerFile,r=i?i.getImage(n):null,o=e.markerWidth||(r?r.width:0),s=e.markerHeight||(r?r.height:0);Or.width=o,Or.height=s;var a=Ie(Or,e.markerHorizontalAlignment||"middle",e.markerVerticalAlignment||"top");return Sr(t,e.markerDx||0,e.markerDy||0,jr(e),a,o,s)}function Hr(t,e,i){var n=i.size,r=Ie(n,e.textHorizontalAlignment,e.textVerticalAlignment);if(e.textHaloRadius){var o=e.textHaloRadius;n=n.add(2*o,2*o)}return Sr(t,e.textDx||0,e.textDy||0,jr(e,"textRotation"),r,n.width,n.height)}var Fr=new zn;function Gr(t,e,i,n){var r=t||new zn;if(Array.isArray(e)){for(var o=e,s=0;se.getMax().x&&(i|=2),t.ye.getMax().y&&(i|=8),i}function $r(t,e,i,n){t=new ct(t);var r,o,s,a=Math.abs(i.x-e.x),h=Math.abs(i.y-e.y),l=Math.sqrt(Math.abs(a*a-h*h));return h<=a?(r=new ct(e.x-l,e.y),o=new ct(e.x+l,e.y),s=2*a):(r=new ct(e.x,e.y-l),o=new ct(e.x,e.y+l),s=2*h),t.distanceTo(r)+t.distanceTo(o)<=s+2*n}var to=function(){function t(){}var e=t.prototype;return e.getMap=function(){return this.geometry.getMap()},e.getPainter=function(){return this.painter},e.isDynamicSize=function(){return!1},t.testColor=function(t){return!(!t||!b(t))&&0<=i.indexOf(t)},t}(),eo=function(t){function e(){return t.apply(this,arguments)||this}et(e,t);var i=e.prototype;return i._prepareContext=function(t){if(qt(this.symbol.opacity)?this._opacityFn||(this._opacityFn=Qt(this.symbol.opacity)):delete this._opacityFn,F(this.symbol.opacity))t.globalAlpha!==this.symbol.opacity&&(t.globalAlpha=this.symbol.opacity);else if(this._opacityFn){var e=this.getMap();t.globalAlpha=this._opacityFn(e.getZoom())}else 1!==t.globalAlpha&&(t.globalAlpha=1)},i.prepareCanvas=function(t,e,i){t.setLineDash&&Pt(e.lineDasharray)&&t.setLineDash(e.lineDasharray);var n=this.getPainter().isHitTesting();zi.prepareCanvas(t,e,i,n)},i.remove=function(){},i.setZIndex=function(){},i.show=function(){},i.hide=function(){},i._defineStyle=function(t){return me(t,this.geometry)},e}(to);function io(t,e,i,n){var r,o,s,a,h,l=no(i),u=i,c=u.markerType.toLowerCase(),d=ro(c,u.markerWidth,u.markerHeight),f=l.lineOpacity,g=l.polygonOpacity;Ze(l.polygonFill)&&(Ze(l.polygonFill)&&(r||(o=e,s=u.markerWidth,a=u.markerHeight,(h=new zn)._combine(o),h.xmin+=-s/2,h.ymin+=-a/2,h.xmax+=s/2,h.ymax+=a/2,r=h),l.polygonGradientExtent=r));zi.prepareCanvas(t,l,n);var p=u.markerWidth,m=u.markerHeight,_=u.markerLineWidth/2;if("ellipse"===c)zi.ellipse(t,e,p/2,m/2,m/2,f,g);else if("cross"===c||"x"===c){for(var v=d.length-1;0<=v;v--)d[v]._add(e);zi.path(t,d.slice(0,2),f),zi.path(t,d.slice(2,4),f)}else if("diamond"===c||"bar"===c||"square"===c||"rectangle"===c||"triangle"===c){"bar"===c?e=e.add(0,-_):"rectangle"===c&&(e=e.add(_,_));for(var y=d.length-1;0<=y;y--)d[y]._add(e);zi.polygon(t,d,f,g)}else if("pin"===c){e=e.add(0,-_);for(var x=d.length-1;0<=x;x--)d[x]._add(e);var w=t.lineCap;t.lineCap="round",zi.bezierCurveAndFill(t,d,f,g),t.lineCap=w}else{if("pie"!==c)throw new Error("unsupported markerType: "+c);e=e.add(0,-_);var C=180*Math.atan(p/2/m)/Math.PI,P=t.lineCap;t.lineCap="round",zi.sector(t,e,m,[90-C,90+C],f,g),t.lineCap=P}return t.canvas}function no(t){var e={lineColor:t.markerLineColor,linePatternFile:t.markerLinePatternFile,lineWidth:t.markerLineWidth,lineOpacity:t.markerLineOpacity,lineDasharray:t.markerLineDasharray,lineCap:"butt",lineJoin:"round",polygonFill:t.markerFill,polygonPatternFile:t.markerFillPatternFile,polygonOpacity:t.markerFillOpacity};return 0===e.lineWidth&&(e.lineOpacity=0),e}function ro(t,e,i){var n,r,o,s,a=i/2,h=e/2;if("triangle"===t)return[n=new ct(0,0-a),r=new ct(0-h,0+a),o=new ct(0+h,0+a)];if("cross"===t)return[n=new ct(0-h,0),r=new ct(0+h,0),o=new ct(0,0-a),s=new ct(0,0+a)];if("diamond"===t)return[n=new ct(0-h,0),r=new ct(0,0-a),o=new ct(0+h,0),s=new ct(0,0+a)];if("square"===t)return[n=new ct(0-h,0+a),r=new ct(0+h,0+a),o=new ct(0+h,0-a),s=new ct(0-h,0-a)];if("rectangle"===t)return r=(n=new ct(0,0)).add(e,0),o=n.add(e,i),s=n.add(0,i),[n,r,o,s];if("x"===t)return[n=new ct(0-h,0+a),r=new ct(0+h,0-a),o=new ct(0+h,0+a),s=new ct(0-h,0-a)];if("bar"===t)return[n=new ct(0-h,0-i),r=new ct(0+h,0-i),o=new ct(0+h,0),s=new ct(0-h,0)];if("pin"===t||"pie"===t){var l=i*Math.atan(h/a);return[n=new ct(0,0),r=new ct(0-l,0-i),o=new ct(0+l,0-i),s=new ct(0,0)]}return[]}var oo,so=new ct(0,0),ao=new ct(0,0),ho=new ct(0,0),lo=new ct(0,0),uo=function(r){function t(t,e,i){var n;return(n=r.call(this)||this).symbol=t,n.geometry=e,n.painter=i,n}et(t,r);var e=t.prototype;return e.get2DExtent=function(){for(var t=this.getMap(),e=t.getGLRes(),i=new zn,n=this._getRenderPoints()[0],r=n.length-1;0<=r;r--)n[r]&&i._combine(t._pointAtResToPoint(n[r],e));return i},e.isDynamicSize=function(){var t=this.symbol;return qt(t.markerWidth)||qt(t.markerHeight)||qt(t.textSize)},e._rotateExtent=function(t,e){return t.convertTo(function(t){return t._rotate(e)})},e._getRenderPoints=function(){var t=this.getPainter().isSpriting()?"center":this.getPlacement();return this.getPainter().getRenderPoints(t)},e._getRenderContainerPoints=function(t){var e=this.getPainter();if(e.isSpriting())return this._getRenderPoints()[0];var i,n=this.geometry,r=this.getDxDy();if(n._cPoint&&!t){var o=t?ho:lo;o.set(n._cPoint.x,n._cPoint.y);var s=e.containerOffset;o._sub(s);var a=r.x,h=r.y;(a||h)&&o._add(a||0,h||0),i=[o]}else{var l=this._getRenderPoints()[0];i=this.painter._pointContainerPoints(l,r.x,r.y,t,!0,this.getPlacement())}if(!i||!Array.isArray(i[0]))return i;for(var u=[],c=0,d=i.length;ce.textMaxWidth)&&(e.textWrapWidth||(e.textMaxHeight=1),e.textWrapWidth=e.textMaxWidth),e},e.translateLineAndFill=function(t){return{lineColor:t.textHaloRadius?t.textHaloFill:t.textFill,lineWidth:t.textHaloRadius,lineOpacity:t.textOpacity,lineDasharray:null,lineCap:"butt",lineJoin:"round",polygonFill:t.textFill,polygonOpacity:t.textOpacity}},t}(uo),yo=[],xo=function(o){function t(t,e,i){var n,r=(n=o.call(this,t,e,i)||this).translate();return n._dynamic=Xt(r),n.style=n._defineStyle(r),n.strokeAndFill=n._defineStyle(no(n.style)),n.padding=0,n}et(t,o),t.test=function(t){return Wr(t)};var e=t.prototype;return e.symbolize=function(t,e){var i=this.style;if(this.painter.isHitTesting()||0!==i.markerWidth&&0!==i.markerHeight&&(0!==i.polygonOpacity||0!==i.lineOpacity)){var n=this._getRenderContainerPoints();Pt(n)&&(this._prepareContext(t),this.getPainter().isSpriting()||this.geometry.getLayer().getMask()===this.geometry||this._dynamic||!1===this.geometry.getLayer().options.cacheVectorOnCanvas?this._drawMarkers(t,n,e):this._drawMarkersWithCache(t,n,e))}},e._drawMarkers=function(t,e,i){for(var n=e.length-1;0<=n;n--){var r=e[n],o=this.getRotation()?this._rotate(t,r,this._getRotationAt(n)):null;o&&(r=o),this._drawVectorMarker(t,r,i),o&&t.restore()}},e._drawMarkersWithCache=function(t,e,i){var n=this._stampSymbol(),r=i.getImage(n);r||(r=this._createMarkerImage(t,i),i.addResource([n,r.width,r.height],r));for(var o=Lr(this.style,r.width,r.height),s=e.length-1;0<=s;s--){var a=e[s],h=this.getRotation()?this._rotate(t,a,this._getRotationAt(s)):null;h&&(a=h),zi.image(t,r,a.x+o.x,a.y+o.y),h&&t.restore()}},e._createMarkerImage=function(t,e){var i=t.canvas.constructor,n=Dr(yo,this.style),r=zi.createCanvas(n[0],n[1],i),o=this._getCacheImageAnchor(n[0],n[1]),s=r.getContext("2d");return this._drawVectorMarker(s,o,e),r},e._stampSymbol=function(){return this._stamp||(this._stamp=Fe([this.style.markerType,Ze(this.style.markerFill)?Ne(this.style.markerFill):this.style.markerFill,this.style.markerFillOpacity,this.style.markerFillPatternFile,Ze(this.style.markerLineColor)?Ne(this.style.markerLineColor):this.style.markerLineColor,this.style.markerLineWidth,this.style.markerLineOpacity,this.style.markerLineDasharray?this.style.markerLineDasharray.join(","):"",this.style.markerLinePatternFile,this.style.markerWidth,this.style.markerHeight,this.style.markerHorizontalAlignment,this.style.markerVerticalAlignment].join("_"))),this._stamp},e._getCacheImageAnchor=function(t,e){var i=2*(this.symbol.shadowBlur||0)+this.padding,n=this.style.markerType;return"bar"===n||"pie"===n||"pin"===n?new ct(t/2,e-i):"rectangle"===n?new ct(i,i):new ct(t/2,e/2)},e._getGraidentExtent=function(t){var e=new zn,i=this.getDxDy(),n=this.getFixedExtent();if(Array.isArray(t))for(var r=t.length-1;0<=r;r--)e._combine(t[r]);else e._combine(t);return e.xmin+=n.xmin-i.x,e.ymin+=n.ymin-i.y,e.xmax+=n.xmax-i.x,e.ymax+=n.ymax-i.y,e},e._drawVectorMarker=function(t,e,i){io(t,e,this.style,i)},e.getFixedExtent=function(){var t=this.isDynamicSize(),e=this.style.markerWidth,i=this.style.markerHeight;return this._fixedExtent=this._fixedExtent||new zn,Rr(this._fixedExtent,this.style,t?[128,128*i/e]:null)},e.translate=function(){var t=this.symbol,e={markerType:_t(t.markerType,"ellipse"),markerFill:_t(t.markerFill,"#00f"),markerFillOpacity:_t(t.markerFillOpacity,1),markerFillPatternFile:_t(t.markerFillPatternFile,null),markerLineColor:_t(t.markerLineColor,"#000"),markerLineWidth:_t(t.markerLineWidth,Mr.markerLineWidth),markerLineOpacity:_t(t.markerLineOpacity,1),markerLineDasharray:_t(t.markerLineDasharray,[]),markerLinePatternFile:_t(t.markerLinePatternFile,null),markerDx:_t(t.markerDx,0),markerDy:_t(t.markerDy,0),markerWidth:_t(t.markerWidth,Mr.markerWidth),markerHeight:_t(t.markerHeight,Mr.markerHeight),markerRotation:_t(t.markerRotation,0),shadowBlur:_t(t.shadowBlur,0),shadowOffsetX:_t(t.shadowOffsetX,0),shadowOffsetY:_t(t.shadowOffsetY,0)},i=e.markerType,n=Ar(i),r=kr(i);return e.markerHorizontalAlignment=_t(t.markerHorizontalAlignment,n),e.markerVerticalAlignment=_t(t.markerVerticalAlignment,r),F(t.markerOpacity)&&(F(t.markerFillOpacity)&&(e.markerFillOpacity*=t.markerOpacity),F(t.markerLineOpacity)&&(e.markerLineOpacity*=t.markerOpacity)),e},t}(uo),wo=function(o){function t(t,e,i){var n;ut(t.markerWidth)&&(t.markerWidth=80),ut(t.markerHeight)&&(t.markerHeight=80),t=H(t,(n=o.call(this,t,e,i)||this).translate());var r=n.style=n._defineStyle(t);return tt.gecko?n._url=[ye(r,r.markerWidth,r.markerHeight),r.markerWidth,r.markerHeight]:n._url=[ye(r),r.markerWidth,r.markerHeight],n}et(t,o),t.test=function(t){return Br(t)};var e=t.prototype;return e._prepareContext=function(){},e._getImage=function(e){var i=this;if(e&&e.isResourceLoaded(this._url))return e.getImage(this._url);var n=this.painter,t=new Image;return t.onload=function(){var t=n.getLayer()&&n.getLayer().getRenderer();t&&t.setToRedraw()},t.onerror=function(t){t&&"undefined"!=typeof console&&console.warn(t),e.markErrorResource(i._url)},t.src=this._url[0],e&&e.addResource(this._url,t),t},t}(go),Co={lineWidth:1,polygonFill:"#fff",polygonOpacity:.5},Po=function(r){function t(t,e,i){var n;return(n=r.call(this,t,e,i)||this).style=e.getLayer().options.drawAltitude,n.style&&m(n.style)||(n.style={lineWidth:2}),n.style.lineWidth||(n.style.lineWidth=0),n.dxdy=n._defineStyle({dx:t.textDx||t.markerDx,dy:t.textDy||t.markerDy}),n}et(t,r),t.test=function(t,e){if(!e.getLayer())return!1;var i=e.getJSONType();return"Marker"===i||"LineString"===i};var e=t.prototype;return e.symbolize=function(t){var e=this.geometry.getLayer();if(e.options.drawAltitude){var i=this.geometry.getProperties();if(i&&i[e.options.altitudeProperty]){var n=this._getStyle();if(this._prepareContext(t),"LineString"===this.geometry.type){var r=this._getPaintParams(n.lineDx,n.lineDy,!1,!0);if(!r)return;var o=this.getPainter().getPaintParams(n.lineDx,n.lineDy,!0,!0,"_groundpt")[0];this._drawLineAltitude(t,r[0],o)}else{var s=this._getRenderContainerPoints(),a=this._getRenderContainerPoints(!0);if(!s||0===s.length)return;this._drawMarkerAltitude(t,s[0],a[0])}}}},e.getDxDy=function(){var t=this.dxdy;return new ct(t.dx||0,t.dy||0)},e.get2DExtent=function(){return"LineString"===this.geometry.type?_o.prototype.get2DExtent.apply(this):r.prototype.get2DExtent.call(this)},e.getPlacement=function(){return"point"},e._getPaintParams=function(t,e){return this.getPainter().getPaintParams(t||0,e||0,null,!0,"_altpt")},e._drawMarkerAltitude=function(t,e,i){var n=this._getStyle();this.prepareCanvas(t,n),zi.path(t,[e,i],n.lineOpacity,null,n.lineDasharray)},e._drawLineAltitude=function(t,e,i){var n=this._getStyle();if(0this._unsimpledParams._res&&(this._unsimpledParams._res=f)),this._cachedParams=m}if(!m)return null;this._pitched=g,this._rotated=p;var v=h,y=[],x=m[0],w=l,C=this._pointContainerPoints(x,t,e,i,n||this._hitPoint&&!w.contains(this._hitPoint),null,r);if(!C)return null;y.push(C);for(var P=1,b=m.length;Pi.maxAltitude&&(i.maxAltitude=e),e})):(this.minAltitude=this.maxAltitude=this._meterToPoint(n,t),this.minAltitude):0},e._meterToPoint=function(t,e){var i=this.getMap(),n=i.getGLRes();return i.altitudeToPoint(e,n)*vt(e)},e._verifyProjection=function(){var t=this.geometry._getProjection()||Oo;this._projCode&&this._projCode!==t.code&&this.removeCache(),this._projCode=t.code},e._beforePaint=function(){},e._afterPaint=function(){},t}(Yi);var Io=new zn,jo=function(n){function t(t,e){var i;return(i=n.call(this)||this).geometry=t,i.isMask=e,i}et(t,n);var e=t.prototype;return e._eachPainter=function(t){for(var e,i=this.geometry.getGeometries(),n=0,r=i.length;n=r.left?1:-1,s=r.top>=r.bottom?-1:1;this._transformation=new Hn([o,s,0,0])},t.getResolutions=function(){return this._resolutions||[]},t.getResolution=function(t){var e=0|t;e<0?e=0:e>this._resolutions.length-1&&(e=this._resolutions.length-1);var i=this._resolutions[e];return e!==t&&0i._maxAlt&&(i._maxAlt=e)})):this._minAlt=this._maxAlt=t},t.getMinAltitude=function(){return void 0===this._minAlt&&this._genMinMaxAlt(),this._minAlt?this._minAlt:0},t.getMaxAltitude=function(){return void 0===this._maxAlt&&this._genMinMaxAlt(),this._maxAlt?this._maxAlt:0},i}(Xi(Ui(mn(Yi))));Zo.mergeOptions({id:null,visible:!0,interactive:!0,editable:!0,cursor:null,antiMeridian:!1,defaultProjection:"EPSG:4326"});var No={attribution:null,minZoom:null,maxZoom:null,visible:!0,opacity:1,globalCompositeOperation:null,renderer:"canvas",debugOutline:"#0f0",cssFilter:null,forceRenderOnMoving:!1,forceRenderOnZooming:!1,forceRenderOnRotating:!1,collision:!1,collisionScope:"layer",hitDetect:!tt.mobile},Wo=function(r){function t(t,e){var i,n;return e&&(n=e.canvas,delete e.canvas),(i=r.call(this,e)||this)._canvas=n,i.setId(t),e&&(i.setZIndex(e.zIndex),e.mask&&i.setMask(Zo.fromJSON(e.mask))),i}et(t,r);var e=t.prototype;return e.load=function(){if(!this.getMap())return this;if(this.onLoad()){this._initRenderer();var t=this.getZIndex();ut(t)||(this._renderer.setZIndex(t),this.isCanvasRender()||this._renderer.render()),this.onLoadEnd()}return this},e.getId=function(){return this._id},e.setId=function(t){var e=this._id;return ut(t)||(t+=""),this._id=t,this.fire("idchange",{old:e,new:t}),this},e.addTo=function(t){return t.addLayer(this),this},e.setZIndex=function(t){return ut(this._zIndex=t)?delete this.options.zIndex:this.options.zIndex=t,this.map&&this.map._sortLayersByZIndex(),this._renderer&&this._renderer.setZIndex(t),this},e.getZIndex=function(){return this._zIndex||0},e.getMinZoom=function(){var t=this.getMap(),e=this.options.minZoom;return t?Math.max(t.getMinZoom(),e||0):e},e.getMaxZoom=function(){var t=this.getMap(),e=this.options.maxZoom;return t?Math.min(t.getMaxZoom(),ut(e)?1/0:e):e},e.getOpacity=function(){return this.options.opacity},e.setOpacity=function(t){return this.config("opacity",t),this},e.isCanvasRender=function(){var t=this._getRenderer();return t&&t instanceof Pr},e.getMap=function(){return this.map?this.map:null},e.getProjection=function(){var t=this.getMap();return t?t.getProjection():null},e.bringToFront=function(){var t=this._getLayerList();if(!t.length)return this;var e=t[t.length-1];if(1===t.length||e===this)return this;var i=e.getZIndex();return this.setZIndex(i+1),this},e.bringToBack=function(){var t=this._getLayerList();if(!t.length)return this;var e=t[0];if(1===t.length||e===this)return this;var i=e.getZIndex();return this.setZIndex(i-1),this},e.show=function(){var t=this;if(!this.options.visible){this.options.visible=!0;var e=this.getRenderer();e&&e.show();var i=this.getMap();e&&i?i.once("renderend",function(){t.fire("show")}):this.fire("show")}return this},e.hide=function(){var t=this;if(this.options.visible){this.options.visible=!1;var e=this.getRenderer();e&&e.hide();var i=this.getMap();e&&i?i.once("renderend",function(){t.fire("hide")}):this.fire("hide")}return this},e.isVisible=function(){if(F(this.options.opacity)&&this.options.opacity<=0)return!1;var t=this.getMap();if(t){var e=t.getZoom();if(!ut(this.options.maxZoom)&&this.options.maxZoome)return!1}return ut(this.options.visible)&&(this.options.visible=!0),this.options.visible},e.remove=function(){return this.map&&this.map.removeLayer(this),this},e.getMask=function(){return this._mask},e.setMask=function(t){if(!("Point"===t.type&&t._isVectorMarker()||"Polygon"===t.type||"MultiPolygon"===t.type))throw new Error("Mask for a layer must be a marker with vector marker symbol or a Polygon(MultiPolygon).");if(t._bindLayer(this),"Point"===t.type?t.updateSymbol({markerLineColor:"rgba(0, 0, 0, 0)",markerFillOpacity:0}):t.setSymbol({lineColor:"rgba(0, 0, 0, 0)",polygonOpacity:0}),this._mask=t,this.options.mask=t.toJSON(),!this.getMap()||this.getMap().isZooming())return this;var e=this._getRenderer();return e&&e.setToRedraw&&this._getRenderer().setToRedraw(),this},e.removeMask=function(){if(delete this._mask,delete this.options.mask,!this.getMap()||this.getMap().isZooming())return this;var t=this._getRenderer();return t&&t.setToRedraw&&this._getRenderer().setToRedraw(),this},e.onLoad=function(){return!0},e.onLoadEnd=function(){},e.isLoaded=function(){return!!this._loaded},e.getCollisionIndex=function(){if("layer"===this.options.collisionScope)return this._collisionIndex||(this._collisionIndex=new pn),this._collisionIndex;var t=this.getMap();return t?t.getCollisionIndex():null},e.clearCollisionIndex=function(){return"layer"===this.options.collisionScope&&this._collisionIndex&&this._collisionIndex.clear(),this},e.getRenderer=function(){return this._getRenderer()},e.onConfig=function(t){if(F(t.opacity)||t.cssFilter){var e=this.getRenderer();e&&e.setToRedraw()}},e.onAdd=function(){},e.onRendererCreate=function(){},e.onCanvasCreate=function(){},e.onRemove=function(){},e._bindMap=function(t,e){t&&(this.map=t,ut(e)||this.setZIndex(e),this._switchEvents("on",this),this.onAdd(),this.fire("add"))},e._initRenderer=function(){var t=this.options.renderer;if(this.constructor.getRendererClass){var e=this.constructor.getRendererClass(t);if(!e)throw new Error("Invalid renderer for Layer("+this.getId()+"):"+t);this._renderer=new e(this),(this._renderer.layer=this)._renderer.setZIndex(this.getZIndex()),this._switchEvents("on",this._renderer),this._renderer.onAdd&&this._renderer.onAdd(),this.onRendererCreate(),this.fire("renderercreate",{renderer:this._renderer})}},e._doRemove=function(){this._loaded=!1,this._switchEvents("off",this),this.onRemove(),this._renderer&&(this._switchEvents("off",this._renderer),this._renderer.remove(),delete this._renderer),delete this.map,delete this._collisionIndex},e._switchEvents=function(t,e){e&&e.getEvents&&this.getMap()&&this.getMap()[t](e.getEvents(),e)},e._getRenderer=function(){return this._renderer},e._getLayerList=function(){return this.map?this.map._layers:[]},e._getMask2DExtent=function(){if(!this._mask||!this.getMap())return null;var t=this._mask._getMaskPainter();return t?t.get2DExtent():null},t}(Xi(Ui(rr(Yi))));Wo.mergeOptions(No);var Bo=Wo.prototype.fire;Wo.prototype.fire=function(t,e){return"layerload"===t&&(this._loaded=!0),this.map&&(e||(e={}),e.type=t,(e.target=this).map._onLayerEvent(e)),Bo.apply(this,arguments)};var Vo,Uo,Jo,Yo,qo,Xo,Qo,Ko,$o,ts,es,is,ns,rs,os,ss,as,hs,ls,us,cs,ds,fs,gs,ps,ms,_s,vs,ys,xs,ws,Cs,Ps=new wn(0,0),bs={maxVisualPitch:70,maxPitch:80,centerCross:!1,zoomInCenter:!1,zoomOrigin:null,zoomAnimation:!f,zoomAnimationDuration:330,panAnimation:!f,panAnimationDuration:600,rotateAnimation:!f,zoomable:!0,enableInfoWindow:!0,hitDetect:!tt.mobile,hitDetectLimit:5,fpsOnInteracting:25,layerCanvasLimitOnInteracting:-1,maxZoom:null,minZoom:null,maxExtent:null,fixCenterOnResize:!0,checkSize:!0,checkSizeInterval:1e3,renderer:"canvas",cascadePitches:[10,60],renderable:!0,clickTimeThreshold:280,stopRenderOnOffscreen:!0},Ms=function(h){function l(t,e){var i;if(!e)throw new Error("Invalid options when creating map.");if(!e.center)throw new Error("Invalid center when creating map.");var n=H({},e),r=n.zoom;delete n.zoom;var o=new wn(n.center);delete n.center;var s=n.baseLayer;delete n.baseLayer;var a=n.layers;return delete n.layers,(i=h.call(this,n)||this).VERSION=l.VERSION,Object.defineProperty(it(it(i)),"id",{value:lt(),writable:!1}),i._loaded=!1,i._initContainer(t),i._panels={},i._baseLayer=null,i._layers=[],i._zoomLevel=r,i._center=o,i.setSpatialReference(n.spatialReference||n.view),i._mapViewPoint=new ct(0,0),i._initRenderer(),i._updateMapSize(i._getContainerDomSize()),s&&i.setBaseLayer(s),a&&i.addLayer(a),i.setMaxExtent(n.maxExtent),i._Load(),i}et(l,h),l.addOnLoadHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};return this.prototype._onLoadHooks=this.prototype._onLoadHooks||[],this.prototype._onLoadHooks.push(i),this};var t=l.prototype;return t.isLoaded=function(){return!!this._loaded},t.getContainer=function(){return this._containerDOM},t.getSpatialReference=function(){return this._spatialReference},t.setSpatialReference=function(t){var e=this.options.spatialReference;return this._loaded&&Ho.equals(e,t)||this._updateSpatialReference(t,e),this},t._updateSpatialReference=function(t,e){if(b(t)&&(t=Ho.getPreset(t)),t=H({},t),this._center=this.getCenter(),this.options.spatialReference=t,this._spatialReference=new Ho(t),this.options.spatialReference&&G(this.options.spatialReference.projection)){var i=this._spatialReference.getProjection();this.options.spatialReference.projection=i.code}return this._resetMapStatus(),this._fireEvent("spatialreferencechange",{old:e,new:H({},this.options.spatialReference)}),this},t.onConfig=function(t){var e=t.spatialReference||t.view;return ut(e)||this._updateSpatialReference(e,null),this},t.getProjection=function(){return this._spatialReference?this._spatialReference.getProjection():null},t.getFullExtent=function(){return this._spatialReference?this._spatialReference.getFullExtent():null},t.setCursor=function(t){return delete this._cursor,this._trySetCursor(t),this._cursor=t,this},t.resetCursor=function(){return this.setCursor(null)},t.getCenter=function(){return this._loaded&&this._prjCenter?this.getProjection().unproject(this._prjCenter):this._center},t.setCenter=function(t){if(!t)return this;t=new wn(t);var e=this.getProjection().project(t);return this._verifyExtent(e)&&(this._loaded?(this.onMoveStart(),this._setPrjCenter(e),this.onMoveEnd(this._parseEventFromCoord(this.getCenter()))):this._center=t),this},t.getSize=function(){return ut(this.width)||ut(this.height)?this._getContainerDomSize():new Pe(this.width,this.height)},t.getContainerExtent=function(){var t=this.height,e=this.getPitch(),i=this.options.maxVisualPitch;return i&&i=Math.abs(a))return o+a/s}return r-1},t.setZoom=function(t,e){return void 0===e&&(e={animation:!0}),isNaN(t)||ut(t)||(t=+t,this._loaded&&this.options.zoomAnimation&&e.animation?this._zoomAnimation(t):this._zoom(t)),this},t.getMaxZoom=function(){return ut(this.options.maxZoom)?this.getMaxNativeZoom():this.options.maxZoom},t.setMaxZoom=function(t){var e=this.getMaxNativeZoom();return ethis._zoomLevel&&this.setZoom(t)}return this.options.minZoom=t,this},t.getMaxNativeZoom=function(){var t=this.getSpatialReference();return t?t.getMaxZoom():null},t.getGLRes=function(){if(this._glRes)return this._glRes;var t=this.getSpatialReference().getFullExtent();return this._glRes=(t.right-t.left)/Math.pow(2,19),this._glRes},t.getGLScale=function(t){return ut(t)&&(t=this.getZoom()),this._getResolution(t)/this.getGLRes()},t.zoomIn=function(){return this.setZoom(this.getZoom()+1)},t.zoomOut=function(){return this.setZoom(this.getZoom()-1)},t.isZooming=function(){return!!this._zooming},t.isInteracting=function(){return this.isZooming()||this.isMoving()||this.isRotating()},t.setCenterAndZoom=function(t,e){return ut(e)||this._zoomLevel===e?this.setCenter(t):(this.setCenter(t),this.setZoom(e,{animation:!1})),this},t.getFitZoom=function(t,e){var i=this;if(!(t&&t instanceof In))return this._zoomLevel;if(t.xmin===t.xmax&&t.ymin===t.ymax)return this.getMaxZoom();var n=this.getSize(),r=t.convertTo(function(t){return i.coordToPoint(t)}),o=r.getWidth(),s=r.getHeight(),a=n.width/o,h=n.height/s,l=this.getSpatialReference().getZoomDirection()<0?Math.max(a,h):Math.min(a,h);return this.getZoomForScale(l,null,e)},t.getView=function(){return{center:this.getCenter().toArray(),zoom:this.getZoom(),pitch:this.getPitch(),bearing:this.getBearing()}},t.setView=function(t){return t&&(t.center&&this.setCenter(t.center),null===t.zoom||isNaN(+t.zoom)||this.setZoom(+t.zoom,{animation:!1}),null===t.pitch||isNaN(+t.pitch)||this.setPitch(+t.pitch),null===t.pitch||isNaN(+t.bearing)||this.setBearing(+t.bearing)),this},t.getResolution=function(t){return this._getResolution(t)},t.getScale=function(t){var e=ut(t)?this.getZoom():t,i=this._getResolution(this.getMaxNativeZoom());return this._getResolution(e)/i},t.fitExtent=function(t,e,i,n){if(void 0===i&&(i={}),!t)return this;t=new In(t,this.getProjection());var r=this.getFitZoom(t)+(e||0),o=t.getCenter();return void 0===i.animation||i.animation?this._animateTo({center:o,zoom:r},{duration:i.duration||this.options.zoomAnimationDuration,easing:i.easing||"out"},n):this.setCenterAndZoom(o,r)},t.getBaseLayer=function(){return this._baseLayer},t.setBaseLayer=function(t){var e=!1;if(this._baseLayer&&(e=!0,this._fireEvent("baselayerchangestart"),this._baseLayer.remove()),!t)return delete this._baseLayer,this._fireEvent("baselayerchangeend"),this._fireEvent("setbaselayer"),this;return(this._baseLayer=t)._bindMap(this,-1),this._baseLayer.on("layerload",function(){this._fireEvent("baselayerload"),e&&(e=!1,this._fireEvent("baselayerchangeend"))},this),this._loaded&&this._baseLayer.load(),this._fireEvent("setbaselayer"),this},t.removeBaseLayer=function(){return this._baseLayer&&(this._baseLayer.remove(),delete this._baseLayer,this._fireEvent("baselayerremove")),this},t.getLayers=function(e){return this._getLayers(function(t){return!(t===this._baseLayer||0<=t.getId().indexOf(c))&&(!e||e(t))})},t.getLayer=function(t){if(!t)return null;var e=this._layerCache?this._layerCache[t]:null;if(e)return e;var i=this.getBaseLayer();return i&&i.getId()===t?i:null},t.addLayer=function(t){if(!t)return this;if(!Array.isArray(t))return t=Array.prototype.slice.call(arguments,0),this.addLayer(t);this._layerCache||(this._layerCache={});for(var e=this._layers,i=0,n=t.length;it)&&(this._zoomLevel=t),this._zoomLeveln.bottom?-1:1,o=os.set(this.width/2+t,this.height/2+r*e),s=this.containerPointToCoord(o,ss);return i.measureLength(this.getCenter(),s)}),pointToDistance:function(t,e,i){var n=this.getResolution(i);return this.pointAtResToDistance(t,e,n)},pointAtResToDistance:(es=new ct(0,0),is=new wn(0,0),ns=new wn(0,0),rs=new wn(0,0),function(t,e,i,n){var r=this.getProjection();if(!r)return null;var o=n?r.project(n,is):this._getPrjCenter(),s=this._prjToPointAtRes(o,i,es);s._add(t,e);var a=this.pointAtResToCoord(s,i,ns),h=n||r.unproject(o,rs);return r.measureLength(h,a)}),locateByPoint:(ts=new ct(0,0),function(t,e,i){var n=this.coordToContainerPoint(t,void 0,ts);return this.containerPointToCoord(n._add(e,i))}),_get2DExtent:function(t,e){var i;if(void 0!==t&&t!==this._zoomLevel||!this._mapExtent2D||(i=this._mapExtent2D),i)return e?(e.set(i.xmin,i.ymin,i.xmax,i.ymax),e):i.copy();var n=this._getResolution(t);return this._get2DExtentAtRes(n,e)},_get2DExtentAtRes:($o=new ct(0,0),function(e,t){var i=this;return e===this._mapGlRes&&this._mapGlExtent2D?this._mapGlExtent2D:this.getContainerExtent().convertTo(function(t){return i._containerPointToPointAtRes(t,e,$o)},t)}),_pointToExtent:(Qo=new wn(0,0),Ko=new wn(0,0),function(t){var e=t.getMin(),i=t.getMax(),n=this.getFullExtent(),r=!n||n.left<=n.right?[e.x,i.x]:[i.x,e.x],o=r[0],s=r[1],a=!n||n.top>n.bottom?[i.y,e.y]:[e.y,i.y],h=a[0],l=a[1],u=e.set(o,l),c=i.set(s,h);return new In(this.pointToCoord(u,void 0,Qo),this.pointToCoord(c,void 0,Ko),this.getProjection())}),_getViewPointFrameOffset:(Xo=new ct(0,0),function(){if(this.isZooming())return null;var t=this._getPrjCenter();return this._mapViewCoord&&!this._mapViewCoord.equals(t)?this._prjToContainerPoint(this._mapViewCoord)._sub(this._prjToContainerPoint(t,void 0,Xo)):null}),_viewPointToPrj:(qo=new ct(0,0),function(t,e){return this._containerPointToPrj(this.viewPointToContainerPoint(t,qo),e)}),_prjToContainerPoint:function(t,e,i,n){var r=this._getResolution(e);return this._prjToContainerPointAtRes(t,r,i,n)},_prjToContainerPointAtRes:(Yo=new ct(0,0),function(t,e,i,n){return this._pointAtResToContainerPoint(this._prjToPointAtRes(t,e,Yo),e,n||0,i)}),_prjToViewPoint:(Jo=new ct(0,0),function(t,e,i){var n=this._prjToContainerPoint(t,void 0,Jo,i);return this.containerPointToViewPoint(n,e)}),_viewPointToPoint:(Uo=new ct(0,0),function(t,e,i){return this._containerPointToPoint(this.viewPointToContainerPoint(t,Uo),e,i)}),_pointToViewPoint:(Vo=new wn(0,0),function(t,e,i){return this._prjToViewPoint(this._pointToPrj(t,e,Vo),i)})}),Ms.mergeOptions(bs);var Ts=function(t){function e(){return t.apply(this,arguments)||this}et(e,t);var i=e.prototype;return i.addHooks=function(){this.target&&this.target.on("_dblclick",this._onDoubleClick,this)},i.removeHooks=function(){this.target&&this.target.off("_dblclick",this._onDoubleClick,this)},i._onDoubleClick=function(t){var e=this.target;if(e.options.doubleClickZoom){var i=e.getZoom(),n=t.domEvent.shiftKey?Math.ceil(i)-1:Math.floor(i)+1;e._zoomAnimation(n,t.containerPoint)}},e}(Ji);Ms.mergeOptions({doubleClickZoom:!0}),Ms.addOnLoadHook("addHandler","doubleClickZoom",Ts);var Ss=function(t){function e(){return t.apply(this,arguments)||this}et(e,t);var i=e.prototype;return i.addHooks=function(){var t=this.target;if(t){var e=t._panels.mapWrapper||t._containerDOM;this._dragHandler=new xn(e,{cancelOn:this._cancelOn.bind(this),rightclick:!0}),this._dragHandler.on("mousedown",this._onMouseDown,this).on("dragstart",this._onDragStart,this).on("dragging",this._onDragging,this).on("dragend",this._onDragEnd,this).enable()}},i.removeHooks=function(){this._dragHandler.off("mousedown",this._onMouseDown,this).off("dragstart",this._onDragStart,this).off("dragging",this._onDragging,this).off("dragend",this._onDragEnd,this),this._dragHandler.remove(),delete this._dragHandler},i._cancelOn=function(t){return!(!this.target.isZooming()&&!this._ignore(t))},i._ignore=function(t){return!!t&&(t.domEvent&&(t=t.domEvent),this.target._ignoreEvent(t))},i._onMouseDown=function(t){delete this.startDragTime,delete this._mode,2===t.domEvent.button||t.domEvent.ctrlKey?(this.target.options.dragRotate||this.target.options.dragPitch)&&(this._mode="rotatePitch"):this.target.options.dragPan&&(this._mode="move"),this.target._stopAnim(this.target._mapAnimPlayer),ui(t.domEvent)},i._onDragStart=function(t){this.startDragTime=v(),"move"===this._mode?this._moveStart(t):"rotatePitch"===this._mode&&this._rotateStart(t)},i._onDragging=function(t){this.target._isEventOutMap(t.domEvent)||("move"===this._mode?this._moving(t):"rotatePitch"===this._mode&&this._rotating(t))},i._onDragEnd=function(t){"move"===this._mode?this._moveEnd(t):"rotatePitch"===this._mode&&this._rotateEnd(t),delete this.startDragTime,delete this.startBearing},i._start=function(t){this.preX=t.mousePos.x,this.preY=t.mousePos.y,this.startX=this.preX,this.startY=this.preY,this._startPrjCenter=this.target._getPrjCenter().copy()},i._moveStart=function(t){this._start(t);var e=this.target;e.onMoveStart(t);var i=pi(e._getActualEvent(t.domEvent),e.getContainer());this.startPrjCoord=e._containerPointToPrj(i)},i._moving=function(t){if(this.startDragTime){var e=this.target,i=pi(e._getActualEvent(t.domEvent),e.getContainer());e._setPrjCoordAtContainerPoint(this.startPrjCoord,i),e.onMoving(t)}},i._moveEnd=function(t){if(this.startDragTime){var e="touchend"===t.domEvent.type,i=this.target,n=v()-this.startDragTime,r=t.mousePos.x,o=t.mousePos.y,s=r-this.startX,a=o-this.startY,h=i._getPrjCenter(),l=h.sub(this._startPrjCenter);if(this._clear(),i.options.panAnimation&&!t.interupted&&i._verifyExtent(i._getPrjCenter())&&n<280&&5e.width/2?.6*(this.preY-n):-.6*(this.preY-n);var l=e.getBearing()+h;this._db=this._db||0,this._db+=h,e._setBearing(l)}0<=this._rotateMode.indexOf("pitch")&&e.options.dragPitch&&e._setPitch(e.getPitch()+.4*(this.preY-n)),this.preX=i,this.preY=n,e.getBearing()===o&&e.getPitch()===r||e.onDragRotating(t)}},i._rotateEnd=function(t){var e=this.target,i=e.getBearing();this._clear();var n=v()-this.startDragTime;if(e.onDragRotateEnd(t),e.options.rotateAnimation&&20As?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==i&&(i=1/i);var n=this.target,r=n.getZoom(),o=n.getZoomForScale(i,r,!0);this._delta=0,n.onZooming(o,this._zoomOrigin),this._timeout&&clearTimeout(this._timeout),this._timeout=setTimeout(function(){t._zooming=!1,delete t._timeout,n.onZoomEnd(n.getZoom(),t._zoomOrigin)},210)}},e._interval=function(e,t){var i=this,n=this.target;if(this._zooming)return this._requesting++,!1;var r=(this._requesting=0)<(e.deltaY?-1*e.deltaY:e.wheelDelta?e.wheelDelta:e.detail)?1:-1;e.detail&&(r*=-1);var o=n.getZoom(),s=o+r;if((s=n._checkZoom(0=this.duration&&(this._playStartTime=i,n=0),"running"===this.playState){var r=this._animation(n,this.duration);this.playState=r.state.playState,"running"!==this.playState&&this.target&&delete this.target[Ls],"idle"===this.playState?this.startTime>i&&setTimeout(this._run.bind(this),this.startTime-i):"running"===this.playState?this._framer(function(){"running"===t.playState&&(t.currentTime=n,e&&e(r),t._run())}):"finished"===this.playState&&(this.finished=!0,e&&e(r))}else if(this.target&&delete this.target[Ls],e){"finished"===this.playState?n=this.duration:"idle"===this.playState&&(n=0);var o=this._animation(n,this.duration);o.state.playState=this.playState,e(o)}}});var Hs=Object.freeze({Animation:zs,Easing:Ds,Player:js,Frame:Is}),Fs=Wi(function(e){!function(){function u(t,e,i){var n=e.x,r=e.y,o=i.x-n,s=i.y-r;if(0!==o||0!==s){var a=((t.x-n)*o+(t.y-r)*s)/(o*o+s*s);1a));o++)this._animLenSoFar+=h;if(this._animIdx=o-1,this._animIdx>=s-1)return this.setCoordinates(n),n[n.length-1];var l=this._animIdx,u=r[l],c=r[l+1],d=(a-this._animLenSoFar)/h;this._animTailRatio=d;var f=u.x+(c.x-u.x)*d,g=u.y+(c.y-u.y)*d;this._tempPrjCoord.x=f,this._tempPrjCoord.y=g;var p=this._tempPrjCoord,m=n[l],_=n[l+1],v=m.x+(_.x-m.x)*d,y=m.y+(_.y-m.y)*d;this._tempCoord.x=v,this._tempCoord.y=y;var x=this._tempCoord,w=!!this.getShell;if(!w&&0t&&(t=e[i].lineWidth);else t=e.lineWidth;return n.prototype._hitTestTolerance.call(this)+(F(t)?t/2:1.5)},e._coords2Extent=function(t,e){if(!t||0===t.length||Array.isArray(t[0])&&0===t[0].length)return null;for(var i=new In(e),n=0,r=t.length;nthis.height?this.width:this.height;return 2*Math.PI*t/2-4*Math.abs(this.width-this.height)},t._computeGeodesicArea=function(){return ut(this.width)||ut(this.height)?0:Math.PI*this.width*this.height/4},t._exportGeoJSONGeometry=function(){return{type:"Polygon",coordinates:wn.toNumberArrays([this.getShell()])}},t._toJSON=function(t){var e=H({},t),i=this.getCenter();e.geometry=!1;var n=this.toGeoJSON(e);return n.geometry={type:"Polygon"},{feature:n,subType:"Ellipse",coordinates:[i.x,i.y],width:this.getWidth(),height:this.getHeight()}},n}(Ws(Ns));oa.mergeOptions({numberOfShellPoints:80}),oa.registerJSONType("Ellipse");var sa=function(d){function n(t,e,i,n){var r;return r=d.call(this,null,n)||this,t&&r.setCoordinates(t),r._width=e,r._height=i,r}et(n,d),n.fromJSON=function(t){var e=t.feature,i=new n(t.coordinates,t.width,t.height,t.options);return i.setProperties(e.properties),i};var t=n.prototype;return t.getCoordinates=function(){return this._coordinates},t.setCoordinates=function(t){if(this._coordinates=t instanceof wn?t:new wn(t),!this._coordinates||!this.getMap())return this.onPositionChanged(),this;var e=this._getProjection();return this._setPrjCoordinates(e.project(this._coordinates)),this},t.getWidth=function(){return this._width},t.setWidth=function(t){return this._width=t,this.onShapeChanged(),this},t.getHeight=function(){return this._height},t.setHeight=function(t){return this._height=t,this.onShapeChanged(),this},t.getShell=function(){var t=this._getMeasurer(),e=this._coordinates,i=this.getMap(),n=1,r=-1;if(i){var o=i.getFullExtent();o.left>o.right&&(n=-1),o.bottom>o.top&&(r=1)}var s=[];return s.push(e),s.push(t.locate(e,n*this._width,0)),s.push(t.locate(e,n*this._width,r*this._height)),s.push(t.locate(e,0,r*this._height)),s.push(e),s},t.getHoles=function(){return[]},t.animateShow=function(){return this.show()},t._getPrjCoordinates=function(){var t=this._getProjection();return this._verifyProjection(),!this._pnw&&t&&this._coordinates&&(this._pnw=t.project(this._coordinates)),this._pnw},t._setPrjCoordinates=function(t){this._pnw=t,this.onPositionChanged()},t._getPrjShell=function(){var t=d.prototype._getPrjShell.call(this),e=this._getProjection();if(!e.isSphere())return t;for(var i=e.getSphereExtent(),n=i.sx,r=i.sy,o=this._getProjection().getCircum(),s=t[0],a=1,h=t.length;an.left?1:-1,i*=n.top>n.bottom?1:-1}var r=t.locate(this._coordinates,e,0),o=t.locate(this._coordinates,0,i);return r.y=o.y,r},t._computeGeodesicLength=function(){return ut(this._width)||ut(this._height)?0:2*(this._width+this._height)},t._computeGeodesicArea=function(){return ut(this._width)||ut(this._height)?0:this._width*this._height},t._exportGeoJSONGeometry=function(){return{type:"Polygon",coordinates:wn.toNumberArrays([this.getShell()])}},t._toJSON=function(t){var e=H({},t),i=this.getCoordinates();e.geometry=!1;var n=this.toGeoJSON(e);return n.geometry={type:"Polygon"},{feature:n,subType:"Rectangle",coordinates:[i.x,i.y],width:this.getWidth(),height:this.getHeight()}},n}(Ns);sa.registerJSONType("Rectangle");var aa=function(p){function n(t,e,i,n,r){var o;return(o=p.call(this,t,e,r)||this).startAngle=i,o.endAngle=n,o}et(n,p),n.fromJSON=function(t){var e=t.feature,i=new n(t.coordinates,t.radius,t.startAngle,t.endAngle,t.options);return i.setProperties(e.properties),i};var t=n.prototype;return t.getStartAngle=function(){return this.startAngle},t.setStartAngle=function(t){return this.startAngle=t,this.onShapeChanged(),this},t.getEndAngle=function(){return this.endAngle},t.setEndAngle=function(t){return this.endAngle=t,this.onShapeChanged(),this},t.getShell=function(){for(var t,e,i,n=this._getMeasurer(),r=this.getCoordinates(),o=this.options.numberOfShellPoints-2,s=this.getRadius(),a=[r.copy()],h=this.getStartAngle(),l=this.getEndAngle()-h,u=0;u=i.count))break}}return r},t.getAltitude=function(){return this.options.altitude||0},t.toJSON=function(t){t||(t={});var e={type:this.getJSONType(),id:this.getId(),options:this.config()};if(ut(t.geometries)||t.geometries){var i;if(t.clipExtent){var n=this.getMap(),r=n?n.getProjection():null;i=new In(t.clipExtent,r)}for(var o=[],s=this.getGeometries(),a=0,h=s.length;ai||t.y>n)},t._getDrawLayer=function(){var t=c+"drawtool",e=this._map.getLayer(t);return e||(e=new ba(t,{enableSimplify:!1,enableAltitude:this.options.enableAltitude}),this._map.addLayer(e)),e},t._fireEvent=function(t,e){e||(e={}),e=H({},e),this._geometry&&(e.geometry=this._getRegisterMode().generate(this._geometry,{drawTool:this}),e.tempGeometry=this._geometry),Ta.prototype._fireEvent.call(this,t,e)},n}(Ta);Ea.mergeOptions({symbol:{lineColor:"#000",lineWidth:2,lineOpacity:1,polygonFill:"#fff",polygonOpacity:.3},doubleClickZoom:!1,mode:null,once:!1,autoPanAtEdge:!1,ignoreMouseleave:!0,blockGeometryEvents:!1});var Ra=function(i){function t(t){var e;return(e=i.call(this,t)||this).drawTool=new Ea({mode:"boxZoom",ignoreMouseleave:!1}),e}et(t,i);var e=t.prototype;return e.addHooks=function(){this.target.on("_mousedown",this._onMouseDown,this)},e.removeHooks=function(){this.target.off("_mousedown",this._onMouseDown,this),this.drawTool.isEnabled()&&this.drawTool.remove()},e._onMouseDown=function(t){this.target.options.boxZoom&&t.domEvent.shiftKey&&this.drawTool.setSymbol(this.target.options.boxZoomSymbol).on("drawend",this._boxZoom,this).addTo(this.target)},e._boxZoom=function(t){var e=this.target;this.drawTool.remove();var i=t.geometry,n=i.getCenter(),r=i.getSymbol(),o=r.markerWidth,s=r.markerHeight,a=new In(n,e.locateByPoint(n,o,s),e.getProjection()),h=e.getFitZoom(a);e._animateTo({center:a.getCenter(),zoom:h})},t}(Ji);Ms.mergeOptions({boxZoom:!0,boxZoomSymbol:{markerType:"rectangle",markerLineWidth:3,markerLineColor:"#1bbc9b",markerLineDasharray:[10,5],markerFillOpacity:.1,markerFill:"#1bbc9b",markerWidth:1,markerHeight:1}}),Ms.addOnLoadHook("addHandler","boxZoom",Ra);var Aa=function(t){function e(){return t.apply(this,arguments)||this}et(e,t);var i=e.prototype;return i.addHooks=function(){this.target&&this.target.on("_mousemove",this._onMouseMove,this)},i.removeHooks=function(){this.target&&this.target.off("_mousemove",this._onMouseMove,this)},i._onMouseMove=function(t){var e=this.target;if(e.options.autoPanAtEdge){var i=t.containerPoint,n=e.getContainerExtent();if(n){var r,o=i.x,s=i.y,a=n.xmax,h=n.ymax;o<30&&(r=[Math.abs(o-30),0]),s<30&&(r=[0,Math.abs(s-30)]),athis.options.maxVisualPitch){var e=pi(this._getActualEvent(t),this._containerDOM);if(!this.getContainerExtent().contains(e))return!0}return!1},_parseEvent:function(t,e){if(!t)return null;var i={domEvent:t};if("keypress"!==e){var n=this._getActualEvent(t);if(n&&void 0!==n.clientX){var r=pi(n,this._containerDOM);i=H(i,{containerPoint:r,viewPoint:this.containerPointToViewPoint(r)});var o=this.options.maxVisualPitch;(this.getPitch()<=o||r.y>=this.height-this._getVisualHeight(o))&&(i=H(i,{coordinate:this.containerPointToCoord(r),point2d:this._containerPointToPoint(r)}))}}return i},_parseEventFromCoord:function(t){var e=this.coordToContainerPoint(t);return{coordinate:t,containerPoint:e,viewPoint:this.containerPointToViewPoint(e),point2d:this.coordToPoint(t)}},_getActualEvent:function(t){return t.touches&&0=t.count);h--){var l=r[h];if(l&&l.getMap()&&(t.includeInvisible||l.isVisible())&&(t.includeInternals||!(0<=l.getId().indexOf(c)))){var u=i(l);u&&(Array.isArray(u)?gt(a,u):a.push(u))}}return e.call(this,a),this}}),Ms.include({_zoom:function(t,e){this.options.zoomable&&!this.isZooming()&&(e=this._checkZoomOrigin(e),t=this._checkZoom(t),this.onZoomStart(t,e),this._frameZoom=this.getZoom(),this.onZoomEnd(t,e))},_zoomAnimation:function(t,e,i){this.options.zoomable&&!this.isZooming()&&(t=this._checkZoom(t),this.getZoom()!==t&&(e=this._checkZoomOrigin(e),this._startZoomAnim(t,e,i)))},_checkZoomOrigin:function(t){return t&&!this.options.zoomInCenter||(t=new ct(this.width/2,this.height/2)),this.options.zoomOrigin&&(t=new ct(this.options.zoomOrigin)),t},_startZoomAnim:function(t,e,i){ut(i)&&(i=1);var n=this._getResolution(this._startZoomVal)/this._getResolution(t),r=this.options.zoomAnimationDuration*Math.abs(n-i)/Math.abs(n-1);this._frameZoom=this._startZoomVal,this._animateTo({zoom:t,around:e},{continueOnViewChanged:!0,duration:r})},onZoomStart:function(t,e){this.options.zoomable&&!this.isZooming()&&(this._mapAnimPlayer&&this._stopAnim(this._mapAnimPlayer),this._zooming=!0,this._startZoomVal=this.getZoom(),this._startZoomCoord=this._containerPointToPrj(e),this._fireEvent("zoomstart",{from:this._startZoomVal,to:t}))},onZooming:function(t,e,i){if(this.options.zoomable&&this._frameZoom!==t){ut(i)&&(i=1),this._zoomTo(t,e);var n=this.getResolution(t),r=this.getResolution(this._startZoomVal)/n/i,o=this._prjToContainerPoint(this._startZoomCoord,this._startZoomVal),s=this.getViewPoint();if(!this.isRotating()&&!o.equals(e)&&1!==r){var a=this.getPitch(),h=o._sub(e)._multi(1/(1-r));a&&(h.y/=Math.cos(a*Math.PI/180)),e=e.add(h)}var l={view:[r,0,0,r,(e.x-s.x)*(1-r),(e.y-s.y)*(1-r)]},u=this.getDevicePixelRatio();1!==u&&(e=e.multi(u)),l.container=[r,0,0,r,e.x*(1-r),e.y*(1-r)],this._fireEvent("zooming",{from:this._startZoomVal,to:t,origin:e,matrix:l}),this._frameZoom=t}},onZoomEnd:function(t,e){if(this.options.zoomable){var i=this._startZoomVal;this._zoomTo(t,e),this._zooming=!1,this._getRenderer().onZoomEnd(),this._fireEvent("zoomend",{from:i,to:t}),this._verifyExtent(this._getPrjCenter())||this._panTo(this._prjMaxExtent.getCenter())}},_zoomTo:function(t,e){this._zoomLevel=t,this._calcMatrices(),e&&this._setPrjCoordAtContainerPoint(this._startZoomCoord,e)},_checkZoom:function(t){var e=this.getMaxZoom(),i=this.getMinZoom();return tt/2)){var o=Math.tan(t/2),s=Math.tan(e);r=Math.max(i*o/(1/s-o),r)}return(n+=r)+1},_calcCascadeMatrixes:function(){var l=hh();function o(t,e,i){var n=this.width,r=this.height,o=this.getFov()*Math.PI/180,s=this._getCameraFar(o,e),a=this.cameraCenterDistance;s=a+(s-a)/Math.cos((90-e)*Math.PI/180)*Math.cos((90-t)*Math.PI/180),La(l,o,n/r,.1,s);var h=this.viewMatrix;return ja(i,l,h)}return function(){var t=this.getPitch(),e=this.options.cascadePitches[0],i=this.options.cascadePitches[1],n=this.cascadeFrustumMatrix0=this.cascadeFrustumMatrix0||hh(),r=this.cascadeFrustumMatrix1=this.cascadeFrustumMatrix1||hh();en&&this._viewHistory.splice(0,this._viewHistory.length-n),this._viewHistoryPointer=this._viewHistory.length-1,this._fireViewChange(e,t)},zoomToPreviousView:function(t){if(void 0===t&&(t={}),!this.hasPreviousView())return null;var e=this._viewHistory[--this._viewHistoryPointer];return this._zoomToView(e,t),e},hasPreviousView:function(){return!(!this._viewHistory||0===this._viewHistoryPointer)},zoomToNextView:function(t){if(void 0===t&&(t={}),!this.hasNextView())return null;var e=this._viewHistory[++this._viewHistoryPointer];return this._zoomToView(e,t),e},hasNextView:function(){return!(!this._viewHistory||this._viewHistoryPointer===this._viewHistory.length-1)},_zoomToView:function(e,t){var i=this,n=this.getView();t.animation?this._animateTo(e,{duration:t.duration},function(t){"finished"===t.state.playState&&i._fireViewChange(n,e)}):(this.setView(e),this._fireViewChange(n,e))},getViewHistory:function(){return this._viewHistory},_fireViewChange:function(t,e){this._fireEvent("viewchange",{old:t,new:e})},_getCurrentView:function(){return this._viewHistory?this._viewHistory[this._viewHistoryPointer]:null}}),Ms.mergeOptions({viewHistory:!0,viewHistoryCount:10}),Ms.include({getCollisionIndex:function(){return this._collisionIndex||this.createCollisionIndex(),this._collisionIndex||this.createCollisionIndex()},createCollisionIndex:function(){return this.clearCollisionIndex(),this._collisionIndex=new pn,this._collisionIndex},clearCollisionIndex:function(){return this.collisionFrameTime=0,this._collisionIndex&&this._collisionIndex.clear(),this}});var lh=function(i){function t(t){var e;return(e=i.call(this,t)||this).on("enable",e._afterEnable,it(it(e))).on("disable",e._afterDisable,it(it(e))),e._measureLayers=[],e}et(t,i);var e=t.prototype;return e.clear=function(){if(Pt(this._measureLayers))for(var t=0;tthis._historyPointer-1&&(this._vertexes.length=this._historyPointer-1),this._vertexes.push({label:e,marker:t}),this._measureMarkerLayer.addGeometry(t),e&&this._measureMarkerLayer.addGeometry(e)},e._msOnDrawEnd=function(t){if(this._clearTailMarker(),t.geometry._getPrjCoordinates().length<2)return this._lastMeasure=0,void this._clearMeasureLayers();var e=this._lastVertex.getSize();e||(e=new Pe(10,10)),this._addClearMarker(this._lastVertex.getCoordinates(),this._lastVertex._getPrjCoordinates(),e.width);var i=t.geometry.copy();i._setPrjCoordinates(t.geometry._getPrjCoordinates()),i.addTo(this._measureLineLayer),this._lastMeasure=i.getLength()},e._addClearMarker=function(t,e,i){var n=this.options.clearButtonSymbol,r={markerDx:(n.markerDx||0)+i,textDx:(n.textDx||0)+i};Array.isArray(n)&&(r=n.map(function(t){return t?{markerDx:(t.markerDx||0)+i,textDx:(t.textDx||0)+i}:null})),n=Ve(n,r);var o=new Vs(t,{symbol:n}),s=this._measureLineLayer,a=this._measureMarkerLayer;o.on("click",function(){return s.remove(),a.remove(),!1},this),o.addTo(this._measureMarkerLayer),o._setPrjCoordinates(e)},e._clearTailMarker=function(){this._tailMarker&&(this._tailMarker.remove(),delete this._tailMarker),this._tailLabel&&(this._tailLabel.remove(),delete this._tailLabel)},e._clearMeasureLayers=function(){this._measureLineLayer.remove(),this._measureMarkerLayer.remove()},t}(Ea);lh.mergeOptions({mode:"LineString",language:"zh-CN",metric:!0,imperial:!1,symbol:{lineColor:"#000",lineWidth:3,lineOpacity:1},vertexSymbol:{markerType:"ellipse",markerFill:"#fff",markerLineColor:"#000",markerLineWidth:3,markerWidth:11,markerHeight:11},labelOptions:{textSymbol:{textFaceName:"monospace",textLineSpacing:1,textHorizontalAlignment:"right",textDx:15},boxStyle:{padding:[6,2],symbol:{markerType:"square",markerFill:"#fff",markerFillOpacity:.9,markerLineColor:"#b4b3b3"}}},clearButtonSymbol:[{markerType:"square",markerFill:"#fff",markerLineColor:"#b4b3b3",markerLineWidth:2,markerWidth:15,markerHeight:15,markerDx:20},{markerType:"x",markerWidth:10,markerHeight:10,markerDx:20}]});var uh=function(i){function t(t){var e;return(e=i.call(this,t)||this)._measureLayers=[],e}et(t,i);var e=t.prototype;return e._measure=function(t){var e,i,n=this.getMap();t instanceof Zo?e=n.computeGeometryArea(t):Array.isArray(t)&&(e=n.getProjection().measureArea(t)),this._lastMeasure=e,i="zh-CN"===this.options.language?[" \u5e73\u65b9\u7c73"," \u5e73\u65b9\u516c\u91cc"," \u5e73\u65b9\u82f1\u5c3a"," \u5e73\u65b9\u82f1\u91cc"]:[" sq.m"," sq.km"," sq.ft"," sq.mi"];var r="";if(this.options.metric&&(r+=e<1e6?e.toFixed(0)+i[0]:(e/1e6).toFixed(2)+i[1]),this.options.imperial){e*=3.2808399,0n&&(c=-(a.x+l-n)-50),a.y-u<0?d=Math.abs(a.y-u)+50:a.y+u>r&&(d=r-(a.y+u)-50),n<=l&&(c=n/2-o.x),0!==d||0!==c){var f=o.add(c,d),g=t._containerPointToPoint(f)._sub(t._prjToPoint(t._getPrjCenter())),p=t._pointToPrj(t._prjToPoint(h).sub(g));t._panAnimation(p)}}},i._measureSize=function(t){var e=this._getUIContainer();t.style.position="absolute";var i=t.style.bottom?"bottom":"top";if(t.style.display="",e.appendChild(t),t.getBoundingClientRect){var n=t.getBoundingClientRect();this._size=new Pe(n.width,n.height)}else this._size=new Pe(t.clientWidth,t.clientHeight);return t.style.display="none",t.style.left="0px",t.style[i]="0px",this._size},i._removePrevDOM=function(){this.onDomRemove&&this.onDomRemove();var t=this.options.eventsToStop;if(this._singleton()){var e=this.getMap(),i=this._uiDomKey();if(e[i]){t&&Si(e[i],t,ci);var n=e[i]._uiComponent;n&&n!==this&&n.isVisible()&&n.fire("hide"),si(e[i]),n&&!this.hideDom&&n._switchMapEvents("off"),delete e[i]}delete this.__uiDOM}else this.__uiDOM&&(t&&Si(this.__uiDOM,t,ci),si(this.__uiDOM),delete this.__uiDOM);this._resizeObserver&&(this._resizeObserver.disconnect(),delete this._resizeObserver,delete this._domContentRect)},i._uiDomKey=function(){return"__ui_"+this._getClassName()},i._singleton=function(){return this.options.single},i._getUIContainer=function(){return this.getMap()._panels.ui},i._getClassName=function(){return"UIComponent"},i._switchMapEvents=function(t){var e=this.getMap();if(e){this._mapEventsOn="on"===t;var i=this._getDefaultEvents();if(this.getEvents&&H(i,this.getEvents()),i)for(var n in i)i.hasOwnProperty(n)&&e[t](n,i[n],this)}},i._switchEvents=function(t){var e=this._getOwnerEvents();if(this._owner)for(var i in e)e.hasOwnProperty(i)&&this._owner[t](i,e[i],this)},i._getDefaultEvents=function(){return{"zooming rotate pitch":this.onEvent,zoomend:this.onZoomEnd,moving:this.onMoving,moveend:this.onMoving,resize:this.onResize}},i._getOwnerEvents=function(){var t={};return this._owner&&this._owner instanceof Zo&&(t.positionchange=this.onGeometryPositionChange,t.symbolchange=this._updatePosition),this.getOwnerEvents&&H(t,this.getOwnerEvents()),t},i.onGeometryPositionChange=function(t){this._owner&&this.isVisible()&&(this._showBySymbolChange=!0,this.show(t.target.getCenter()),delete this._showBySymbolChange)},i.onMoving=function(){this.isVisible()&&this.getMap().isTransforming()&&this._updatePosition()},i.onEvent=function(){this.isVisible()&&this._updatePosition()},i.onZoomEnd=function(){this.isVisible()&&this._setPosition()},i.onResize=function(){this.isVisible()&&this._setPosition()},i.onDomSizeChange=function(){this.isVisible()&&this._setPosition()},i._updatePosition=function(){return this.getMap()&&this.getMap()._getRenderer().callInNextFrame(this._setPosition.bind(this)),this},i._setPosition=function(){var t=this.getDOM();if(t){t.style[ii]=null;var e=this.getPosition();this._pos=e,t.style[ti]=this._toCSSTranslate(e)+" scale(1)"}},i._toCSSTranslate=function(t){if(!t)return"";if(tt.any3d){var e=this.getMap(),i=e?e.getBearing():0,n=e?e.getPitch():0,r="";return this.options.pitchWithMap&&n&&(r+=" rotateX("+Math.round(n)+"deg)"),this.options.rotateWithMap&&i&&(r+=" rotateZ("+Math.round(-i)+"deg)"),"translate3d("+t.x+"px,"+t.y+"px, 0px)"+r}return"translate("+t.x+"px,"+t.y+"px)"},i._observerDomSize=function(t){var e=this;return t&&tt.resizeObserver&&!this._resizeObserver&&(this._resizeObserver=new ResizeObserver(function(t){t.length?e._domContentRect=t[0].contentRect:delete e._domContentRect,e.onDomSizeChange&&e.onDomSizeChange()}),this._resizeObserver.observe(t)),this},i.isSupportZoomFilter=function(){return!1},t.isSupport=function(t){return!!(t&&G(t.on)&&G(t.off)&&G(t.getCenter))},t}(Ui(Yi));Ch.mergeOptions({eventsPropagation:!1,eventsToStop:null,dx:0,dy:0,autoPan:!1,autoPanDuration:600,single:!0,animation:"scale",animationOnHide:!1,animationDuration:500,pitchWithMap:!1,rotateWithMap:!1,visible:!0,roundPoint:!1});var Ph="mousedown mouseup mouseenter mouseover mouseout mousemove click dblclick contextmenu keypress touchstart touchmove touchend",bh=function(n){function t(t,e){var i;return(i=n.call(this,e)||this)._markerCoord=new wn(t),i}et(t,n);var e=t.prototype;return e._getClassName=function(){return"UIMarker"},e.setCoordinates=function(t){return this._markerCoord=t,this.fire("positionchange"),this.isVisible()&&(this._coordinate=this._markerCoord,this._setPosition()),this},e.getCoordinates=function(){return this._markerCoord},e.getCenter=function(){return this.getCoordinates()},e.getAltitude=function(){var t=this.getCoordinates()||{};return F(t.z)?t.z:this.options.altitude||0},e.setContent=function(t){var e=this.options.content;return this.options.content=t,this.fire("contentchange",{old:e,new:t}),this.isVisible()&&this.show(),this},e.getContent=function(){return this.options.content},e.onAdd=function(){this.show()},e.show=function(){return n.prototype.show.call(this,this._markerCoord)},e.flash=function(t,e,i,n){return zt.call(this,t,e,i,n)},e.buildOn=function(){var t,e=this.options.content,i=b(e);return i||G(e)?(t=ri("div"),i?t.innerHTML=this.options.content:e.bind(this)(t)):t=this.options.content,this.options.containerClass&&(t.className=this.options.containerClass),this._registerDOMEvents(t),t},e.getOffset=function(){var t=this.getSize();return new ct(-t.width/2,-t.height/2)},e.getTransformOrigin=function(){return"center center"},e.onDomRemove=function(){var t=this.getDOM();this._removeDOMEvents(t)},e.isDragging=function(){return!!this.draggable&&this.draggable.isDragging()},e._registerDOMEvents=function(t){Ti(t,Ph,this._onDomEvents,this)},e._onDomEvents=function(t){var e=this.getMap()._parseEvent(t,t.type),i=t.type;if("mousedown"===i&&(this._mousedownEvent=t),"mouseup"===i&&(this._mouseupEvent=t),("click"!==i||!this._mouseClickPositionIsChange())&&("touchstart"===i&&(this._touchstartTime=v()),this.fire(t.type,e),"touchend"===i&&tt.touch)){var n=this.getMap().options.clickTimeThreshold||280;v()-this._touchstartTime"),o+='
',n.innerHTML=o,this._replaceTemplate(n);var s=n.querySelector(".maptalks-msgContent");return e||t?e?s.innerHTML=this.options.content:this.options.content.bind(this)(s):s.appendChild(this.options.content),this._onCloseBtnClick=this.hide.bind(this),ai(n.querySelector(".maptalks-close"),"click touchend",this._onCloseBtnClick),t||this._replaceTemplate(s),n},i._replaceTemplate=function(t){if(this.options.enableTemplate&&this._owner&&this._owner.getProperties&&t&&t.innerHTML){var i=this._owner.getProperties()||{};if(m(i)){var e=t.innerHTML;t.innerHTML=e.replace(Sh,function(t,e){return i[e]})}}return this},i.getTransformOrigin=function(){return this.getSize().width/2+"px bottom"},i.getOffset=function(){var t=this.getSize(),e=new ct(-t.width/2,0);this.options.custom?e._sub(0,t.height):e._sub(4,12);var i=this.getOwner();if(i instanceof Vs||i instanceof Ks){var n,r;if(i instanceof Vs)n=i._getPainter(),r=i.getSize();else{var o=i.getGeometries();if(!o||!o.length)return e;n=o[0]._getPainter(),r=o[0].getSize()}if(r||(r=Rh),n){var s=n.getFixedExtent();e._add(s.xmax-r.width/2,s.ymin)}else e._add(0,-r.height)}return e},i.show=function(t){return this.getMap()&&this.getMap().options.enableInfoWindow?e.prototype.show.call(this,t):this},i.getEvents=function(){if(!this.options.autoCloseOn)return null;var t={};return t[this.options.autoCloseOn]=this.hide,t},i.getOwnerEvents=function(){var t=this.getOwner();if(!this.options.autoOpenOn||!t)return null;var e={};return e[this.options.autoOpenOn]=this._onAutoOpen,e},i.onRemove=function(){this.onDomRemove()},i.onDomRemove=function(){this._onCloseBtnClick&&(hi(this.getDOM().childNodes[2],"click touchend",this._onCloseBtnClick),delete this._onCloseBtnClick)},i._onAutoOpen=function(t){var e=this,i=this.getOwner();setTimeout(function(){i instanceof Vs||i instanceof Ch?e.show(i.getCoordinates()):i instanceof Ks?e.show(i.findClosest(t.coordinate)):((i instanceof Js||i instanceof ta)&&8<=e.getMap().getScale()&&(t.coordinate=e._rectifyMouseCoordinte(i,t.coordinate)),e.show(t.coordinate))},1)},i._rectifyMouseCoordinte=function(t,e){var i=this;return t instanceof Js?this._rectifyLineStringMouseCoordinate(t,e).coordinate:t instanceof ta?t.getGeometries().map(function(t){return i._rectifyLineStringMouseCoordinate(t,e)}).sort(function(t,e){return t.dis-e.dis})[0].coordinate:e},i._rectifyLineStringMouseCoordinate=function(t,e){for(var i=this,n=t.getCoordinates().map(function(t){return i.getMap().coordToContainerPoint(t)}),r=this.getMap().coordToContainerPoint(e),o=1/0,s=-1,a=0,h=n.length;a'+this._content+"",t},t.onMouseOut=function(){clearTimeout(this._timeout),this.isVisible()&&this._removePrevDOM(),this._switchMapEvents("off")},t.onMouseMove=function(t){var e=this;clearTimeout(this._timeout);var i=this.getMap();if(i){var n=i.locateByPoint(t.coordinate,-5,25);0===this.options.showTimeout?this.show(n):this._timeout=setTimeout(function(){i&&e.show(n)},this.options.showTimeout)}},t.onRemove=function(){clearTimeout(this._timeout),this._owner&&(this._owner.off("mouseover",this.onMouseOver,this),this._owner.off("mouseout",this.onMouseOut,this),this._owner.off(kh,this.hideDom,this))},t.hideDom=function(){return this.hide()},t.onEvent=function(){return n.prototype.onEvent.call(this),this.hideDom(),this},t._getViewPoint=function(){return this.getMap().coordToViewPoint(this._coordinate,void 0,0)._add(this.options.dx,this.options.dy)},e}(Ch);Oh.mergeOptions({width:0,height:0,animation:"fade",containerClass:"maptalks-tooltip",showTimeout:400});var Lh=function(e){function t(t){return e.call(this,t)||this}et(t,e);var i=t.prototype;return i._getClassName=function(){return"Menu"},i.addTo=function(t){return t._menu&&t._menu!==this&&t.removeMenu(),(t._menu=this)._owner=t,Ch.prototype.addTo.apply(this,arguments)},i.setItems=function(t){return this.options.items=t,this},i.getItems=function(){return this.options.items||[]},i.buildOn=function(){if(this.options.custom){if(b(this.options.items)){var t=ri("div");return t.innerHTML=this.options.items,t}return this.options.items}var e=ri("div");this.options.containerClass&&vi(e,this.options.containerClass),e.style.width=this._getMenuWidth()+"px";var i=this._createMenuItemDom();return e.appendChild(i),Ti(e,"contextmenu",ui),e},i.getOffset=function(){if(!this.getMap())return null;var t=this.getMap().getSize(),e=this.getMap().viewPointToContainerPoint(this._getViewPoint()),i=this.getSize(),n=0,r=0;return e.x+i.width>t.width&&(n=-i.width),e.y+i.height>t.height&&(r=-i.height),new ct(n,r)},i.getTransformOrigin=function(){var t=this.getOffset()._multi(-1);return t.x+"px "+t.y+"px"},i.getEvents=function(){return{"_zoomstart _zoomend _movestart _dblclick _click":this._removePrevDOM}},i._createMenuItemDom=function(){var n=this,r=this.getMap(),t=ri("ul");vi(t,"maptalks-menu-items");var e,i,o=this.getItems();function s(i){return function(t){var e=r._parseEvent(t,"click");e.target=n,e.owner=n._owner,e.index=i,!1!==this._callback(e)&&(n.hide(),n._owner&&n._owner.fire("closemenu"))}}for(var a=0,h=o.length;a"}},e}(jh);Hh.mergeOptions({position:{bottom:0,left:0},content:'maptalks'}),Ms.mergeOptions({attribution:!0}),Ms.addOnLoadHook(function(){var t=this.options.attribution||this.options.attributionControl;t&&(this.attributionControl=new Hh(t),this.addControl(this.attributionControl))});var Fh=function(t){function e(){return t.apply(this,arguments)||this}et(e,t);var i=e.prototype;return i.buildOn=function(){var t=this.container=ri("div",this.options.containerClass),e=this.panel=ri("div","panel"),i=this.button=ri("button");return t.appendChild(i),t.appendChild(e),t},i.onAdd=function(){Ti(this.button,"mouseover",this._show,this),Ti(this.panel,"mouseleave",this._hide,this),Ti(this.getMap(),"click",this._hide,this)},i.onRemove=function(){this.panel&&(Si(this.button,"mouseover",this._show,this),Si(this.panel,"mouseleave",this._hide,this),Si(this.getMap(),"click",this._hide,this),si(this.panel),si(this.button),delete this.panel,delete this.button,delete this.container)},i._show=function(){_i(this.container,"shown")||(vi(this.container,"shown"),this._createPanel())},i._hide=function(t){this.panel.contains(t.toElement||t.relatedTarget)||yi(this.container,this.options.containerClass)},i._createPanel=function(){this.panel.innerHTML="";var t=ri("ul");this.panel.appendChild(t),this._renderLayers(this.getMap(),t)},i._renderLayers=function(t,e){var r=this,i=t.getBaseLayer(),n=t.getLayers(),o=n.length;if(i){var s=i.layers||[i],a=ri("li","group"),h=ri("ul"),l=ri("label");l.innerHTML=this.options.baseTitle,a.appendChild(l);for(var u=0,c=s.length;u'+h.item+""}else l.innerHTML=h.item;if(h.click&&Ti(l,"click",n(h.click,o,null,l)),Pt(h.children)){var c=this._createDropMenu(o);l.appendChild(c),l._menu=c,Ti(l,"mouseover",function(){this._menu.style.display=""}),Ti(l,"mouseout",function(){this._menu.style.display="none"})}i.appendChild(l)}return e},i._createDropMenu=function(t){var o=this;function e(e,i,n){var r=o._getItems()[i].children[n];return function(t){return ci(t),e({target:r,index:i,childIndex:n})}}var i=ri("div","maptalks-dropMenu"),n=this._getItems(),r=n.length,s=ri("ul"),a=n[t].children;t===r-1&&a&&(i.style.cssText="right: 0px;",s.style.cssText="right: 0px;position: absolute;",this.options.reverseMenu&&(s.style.bottom=0)),i.appendChild(ri("em","maptalks-ico"));for(var h=0,l=0,u=a.length;lh&&(h=c.width)}for(var d=0,f=a.length;d'+g.item+"",p.style.cursor="pointer",p.style.width=h+24+"px",Ti(p.childNodes[0],"click",e(g.click,t,d)),s.appendChild(p)}if(this.options.vertical){var m=h<95?95:h;this.options.reverseMenu?i.style.right=-(m+20)+"px":i.style.left=-(m+20)+"px"}else this.options.reverseMenu?i.style.bottom="28px":i.style.top="28px";return i.appendChild(s),i.style.display="none",i},i._getItems=function(){return this.options.items||[]},e}(jh);Wh.mergeOptions({height:28,vertical:!1,position:"top-right",reverseMenu:!1,items:{}});var Bh=function(t){function e(){return t.apply(this,arguments)||this}et(e,t);var i=e.prototype;return i.buildOn=function(t){var e=this.options,i=ri("div","maptalks-zoom");if(e.zoomLevel){var n=ri("span","maptalks-zoom-zoomlevel");i.appendChild(n),this._levelDOM=n}var r=ri("div","maptalks-zoom-slider"),o=ri("a","maptalks-zoom-zoomin");if(o.href="javascript:;",o.innerHTML="+",r.appendChild(o),this._zoomInButton=o,e.slider){var s=ri("div","maptalks-zoom-slider-box"),a=ri("div","maptalks-zoom-slider-ruler"),h=ri("span","maptalks-zoom-slider-reading"),l=ri("span","maptalks-zoom-slider-dot");a.appendChild(h),s.appendChild(a),s.appendChild(l),r.appendChild(s),this._sliderBox=s,this._sliderRuler=a,this._sliderReading=h,this._sliderDot=l}var u=ri("a","maptalks-zoom-zoomout");return u.href="javascript:;",u.innerHTML="-",r.appendChild(u),this._zoomOutButton=u,i.appendChild(r),t.on("_zoomend _zooming _zoomstart _spatialreferencechange",this._update,this),this._update(),this._registerDomEvents(),i},i.onRemove=function(){this.getMap().off("_zoomend _zooming _zoomstart _spatialreferencechange",this._update,this),this._zoomInButton&&Si(this._zoomInButton,"click",this._onZoomInClick,this),this._zoomOutButton&&Si(this._zoomOutButton,"click",this._onZoomOutClick,this),this._sliderRuler&&(Si(this._sliderRuler,"click",this._onClickRuler,this),this.dotDragger.disable(),delete this.dotDragger)},i._update=function(){var t=this.getMap();if(this._sliderBox){var e=10*(t.getMaxZoom()-t.getMinZoom());this._sliderBox.style.height=e+16+"px",this._sliderRuler.style.height=e+8+"px",this._sliderRuler.style.cursor="pointer";var i=10*(t.getMaxZoom()-t.getZoom());this._sliderReading.style.height=10*(t.getZoom()-t.getMinZoom()+1)+"px",this._sliderDot.style.top=i+"px"}this._updateText()},i._updateText=function(){if(this._levelDOM){var t=this.getMap().getZoom();d(t)||(t=Math.floor(10*t)/10),this._levelDOM.innerHTML=t}},i._registerDomEvents=function(){this._zoomInButton&&Ti(this._zoomInButton,"click",this._onZoomInClick,this),this._zoomOutButton&&Ti(this._zoomOutButton,"click",this._onZoomOutClick,this),this._sliderRuler&&(Ti(this._sliderRuler,"click",this._onClickRuler,this),this.dotDragger=new xn(this._sliderDot,{ignoreMouseleave:!0}),this.dotDragger.on("dragstart",this._onDotDragstart,this).on("dragging dragend",this._onDotDrag,this).enable())},i._onZoomInClick=function(t){ui(t),this.getMap().zoomIn()},i._onZoomOutClick=function(t){ui(t),this.getMap().zoomOut()},i._onClickRuler=function(t){ui(t);var e=this.getMap(),i=pi(t,this._sliderRuler).y,n=e.getMaxZoom(),r=Math.floor(n-i/10);e.setZoom(r)},i._onDotDragstart=function(t){ui(t.domEvent);var e=this.getMap(),i=e.getSize().toPoint()._multi(.5);e.onZoomStart(e.getZoom(),i)},i._onDotDrag=function(t){ui(t.domEvent);var e=this.getMap(),i=e.getSize().toPoint()._multi(.5),n=pi(t.domEvent,this._sliderRuler),r=e.getMaxZoom(),o=e.getMinZoom(),s=n.y,a=r-s/10;r=i.left?1:-1,this._yScale=i.top>=i.bottom?1:-1;var r=t.getGLRes();this._pointOrigin=t._prjToPointAtRes(new ct(this.tileSystem.origin),r),this._glRes=r}var e=t.prototype;return e.prepareTileInfo=function(t,e){if(b(t)?t=Uh[t.toLowerCase()]:Array.isArray(t)&&(t=new Uh(t)),!t)throw new Error("Invalid TileSystem");this.tileSystem=t;var i=e.right>e.left?1:-1,n=e.top>e.bottom?-1:1,r=t.origin.x,o=t.origin.y;this.transformation=new Hn([i,n,r,o])},e._getTileNum=function(t,e){var i=this.tileSystem,n=this.tileSize,r=Math.floor(1e-7*i.scale.x+t.x/(n.width*e)),o=Math.ceil(1e-7*i.scale.y+t.y/(n.height*e));return{x:i.scale.x*r,y:i.scale.y*o}},e.getTileIndex=function(t,e,i){var n=this.tileSystem,r=this.transformation.transform(t,1),o=this._getTileNum(r,e);return n.scale.x<0&&(o.x-=1),0=d.xmax&&(a=d.xmin+(a-d.xmin)%(d.xmax-d.xmin))),!0!==o&&"y"!==o||(d.ymax===d.ymin?h=d.ymin:h>=d.ymax?h=d.ymin+(h-d.ymin)%(d.ymax-d.ymin):hd.xmax||h>d.ymax||h>1,A=(d<<1)+E,k=(f<<1)+R,O=(p<<1)+E,L=(m<<1)+R;t.children||(t.children=[]);var D=t.children[S];D||(D=this._getTileId(O,L,u),t.children[S]=D);var I=C.isTileCachedOrLoading(D),j=void 0,z=I&&I.info;if(!z){if(this.tileInfoCache||(this.tileInfoCache=new Oi(4*this.options.maxCacheSize)),!(z=this.tileInfoCache.get(D))){if(l<0){var H=y+E*_,F=x-R*v;j=new zn(H,F-v,H+_,F)}else{var G=y+E*_,Z=w+R*v;j=new zn(G,Z,G+_,Z+v)}z={x:A,y:k,idx:O,idy:L,z:u,extent2d:j,error:t.error/2,res:M,id:D,parentNodeId:t.id,children:[],url:this.getTileUrl(A,k,u+this.options.zoomOffset),offset:s},this.tileInfoCache.add(D,z)}a&&(z.layer=this.getId())}z.error=t.error/2,z.offset[0]=s[0],z.offset[1]=s[1];var N=this._isTileVisible(z,e,T,o,s);if(1===N)P=!0;else{if(-1===N)continue;if(0===N&&u!==o)return n.push(t),void r._combine(t.extent2d)}b.push(z)}u===o?P?i.push.apply(i,b):(n.push(t),r._combine(t.extent2d)):i.push.apply(i,b)},t._isTileVisible=function(t,e,i,n,r){if(0===t.z)return 1;if(!this._isTileInFrustum(t,e,i,r))return-1;var o=this.options.maxError;return ut(o)&&(o=1),o<=this._getScreenSpaceError(t,i,n,r)?1:0},t._isTileInFrustum=function(t,e,i,n){if(!this._zScale){var r=this.getMap(),o=r.getGLRes();this._zScale=r.altitudeToPoint(100,o)/100}var s=t.extent2d,a=s.xmin,h=s.ymin,l=s.xmax,u=s.ymax;return dl[0][0]=(a-n[0])*i,dl[0][1]=(h-n[1])*i,dl[0][2]=(t.minAltitude||0)*this._zScale,dl[1][0]=(l-n[0])*i,dl[1][1]=(u-n[1])*i,dl[1][2]=(t.maxAltitude||0)*this._zScale,Kh(e,dl)},t._getScreenSpaceError=function(t,e,i,n){var r=t.error,o=this.getMap(),s=t.extent2d,a=s.xmin,h=s.ymin,l=s.xmax,u=s.ymax;fl[0]=(a-n[0])*e,fl[1]=(h-n[1])*e,gl[0]=(l-n[0])*e,gl[1]=(u-n[1])*e;var c,d,f,g,p,m,_=(c=fl,d=gl,f=o.cameraPosition,g=Math.max(c[0]-f[0],0,f[0]-d[0]),p=Math.max(c[1]-f[1],0,f[1]-d[1]),m=Math.max(c[2]-f[2],0,f[2]-d[2]),Math.sqrt(g*g+p*p+m*m)),v=Math.max(Math.abs(_),1e-7),y=Math.abs(t.z-i);return r*(o.height<1e3?1:y<=1?1:y<=2?.7:.605)/v},t._getCascadeTiles=function(t,e){var i=this.getMap(),n=i.getPitch(),r=e&&e.getRenderer(),o=i.getContainerExtent(),s=[],a=0,h=this.getMinZoom(),l=i.options.cascadePitches[0],u=i.options.cascadePitches[1],c=Math.floor(i._getVisualHeight(u)),d=ut(t)?this._getTileZoom(i.getZoom()):t;if(this._visitedTiles=new nl,!ut(t)||!this.options.cascadeTiles||n<=l||!ut(h)&&d<=h){var f=n<=u?o:new zn(0,i.height-c,i.width,i.height),g=this._getTiles(d,f,2,r);return g&&(a+=g.tiles.length,s.push(g)),{tileGrids:s,count:a}}var p=Math.floor(i._getVisualHeight(l)),m=new zn(0,i.height-p,i.width,i.height),_=this._getTiles(d,m,0,r);a+=_?_.tiles.length:0,s.push(_);var v,y,x=m.ymin,w=i.getSpatialReference().getZoomDirection(),C=w;if(u response.blob())\n .then(blob => createImageBitmap(blob))\n .then(bitmap => {\n var { width, height } = bitmap;\n offCanvas.width = width;\n offCanvas.height = height;\n offCtx.drawImage(bitmap, 0, 0);\n bitmap.close();\n var imgData = offCtx.getImageData(0, 0, width, height);\n // debugger\n cb(null, { width, height, data: new Uint8Array(imgData.data) });\n }).catch(err => {\n console.warn('error when loading tile:', url);\n console.warn(err);\n cb(err);\n });\n }\n}"});var _l=new Pe(256,256),vl="show hide remove";function yl(t){return Array.isArray(t)||(t=[t]),t}var xl=function(r){function i(t,e,i){var n;return(n=r.call(this,t,i)||this).layers=e||[],n._checkChildren(),n.layerMap={},n._groupChildren=[],n}et(i,r),i.fromJSON=function(t){if(!t||"GroupTileLayer"!==t.type)return null;var e=t.layers.map(function(t){return Wo.fromJSON(t)});return new i(t.id,e,t.options)};var t=i.prototype;return t.getLayers=function(){return this.layers},t.addLayer=function(t){var e=this;void 0===t&&(t=[]),t=yl(t);var i=this.layers.length;return t.forEach(function(t){t instanceof ml&&(-1!==e.layers.indexOf(t)||e.layerMap[t.getId()]||e.layers.push(t))}),i!==this.layers.length&&(this._sortLayers(),this._refresh(),this._renderLayers()),this},t.removeLayer=function(t){var i=this;void 0===t&&(t=[]),t=yl(t);var e=this.layers.length;return t.forEach(function(t){if(t instanceof ml||(t=i.layerMap[t]),t instanceof ml){var e=i.layers.indexOf(t);0<=e&&(i.layers.splice(e,1),t._doRemove(),t.off(vl,i._onLayerShowHide,i))}}),e!==this.layers.length&&(this._refresh(),this._renderLayers()),this},t.clearLayers=function(){var e=this;return this.layers.forEach(function(t){t._doRemove(),t.off(vl,e._onLayerShowHide,e)}),this.layers=[],this._refresh(),this._renderLayers(),this},t.toJSON=function(){return{type:this.getJSONType(),id:this.getId(),layers:this.layers.map(function(t){return t.toJSON()}),options:this.config()}},t.getTileSize=function(t){var e=this.getLayer(t);return e?e.getTileSize():_l},t.getTiles=function(t,e){for(var i=this.layers,n=[],r=0,o=0,s=i.length;o=s&&t.x<=s+r&&t.y>=a&&t.y<=a+o},e.addTo=function(t){(this.map=t).getRenderer().addTopElement(this)},e.onEvent=function(t){this.fire(t.type,t)},e.mousedown=function(t){var e=t.target,i=this.options.cursor;i&&e.setCursor(i),this.onDragstart(t)},e.onDragstart=function(t){var e=t.containerPoint,i=t.target,n=i._panels.mapWrapper||i._containerDOM,r=this._dragger=new xn(n);r.on("dragging",this.onDragging,this).on("mouseup",this.onDragend,this).enable(),r.type="handle",r.onMouseDown(t.domEvent),Ul=e.x,Jl=e.y,this.fire("dragstart",{containerPoint:e})},e.onDragging=function(t){if(this._dragger){var e=this.map,i=pi(t.domEvent,e._containerDOM),n={x:i.x-Ul,y:i.y-Jl},r=e.containerPointToCoord(new ct(Ul,Jl)),o=e.containerPointToCoord(i);Ul=i.x,Jl=i.y,this.offset(n),this.fire("dragging",{containerPoint:i,coordOffset:o._sub(r)})}},e.onDragend=function(t){if(this._dragger){var e=this.map;e.resetCursor();var i=pi(t.domEvent,e._containerDOM),n={x:i.x-Ul,y:i.y-Jl};this.offset(n),this._dragger.disable(),delete this._dragger,this.fire("dragend",{containerPoint:i})}},t}(Ui(Yi)),Xl=function(){function t(t,e){(this.target=t).once("remove",this.delete,this),this.map=e,this.addTo(e)}var e=t.prototype;return e.setPoints=function(t){var e=(this.points=t).map(function(t){return t.x}),i=t.map(function(t){return t.y});this.xmin=Math.min.apply(Math,e),this.xmax=Math.max.apply(Math,e),this.ymin=Math.min.apply(Math,i),this.ymax=Math.max.apply(Math,i)},e.hitTest=function(){return!1},e.render=function(t){var e=this.map;if(!(this.xmax<=0||this.xmin>=e.width||this.ymax<=0||this.ymin>=e.height)){var i=e.getDevicePixelRatio(),n=.5;t.lineWidth=1,t.strokeStyle="#000",t.globalAlpha=1,t.beginPath();var r=this.points;t.moveTo(s(r[0].x),s(r[0].y));for(var o=1;or.y&&(s.y=0);var a="middle"===_?2:1,h="left"===v?1:2,l=Math.abs(s.x)*h,u=Math.abs(s.y)*a;y&&(u=(l=Math.max(l,u*y))/y);var c=x[e];f instanceof pa?((y||0===c||2===c)&&(f.setWidth(l),f!==d._geometry&&d._geometry.setWidth(l)),(y||1===c||2===c)&&(f.setHeight(u),f!==d._geometry&&d._geometry.setHeight(u))):((y||0===c||2===c)&&(o.markerWidth=Math.min(l,d._geometry.options.maxMarkerWidth||1/0)),(y||1===c||2===c)&&(o.markerHeight=Math.min(u,d._geometry.options.maxMarkerHeight||1/0)),f.setSymbol(o),f!==d._geometry&&d._geometry.setSymbol(o))},function(){d._update(n())})}else console&&console.warn("A marker can't be resized with symbol:",f.getSymbol());function n(){var t=[["setCoordinates",f.getCoordinates().toArray()]];return f instanceof pa?(t.push(["setWidth",f.getWidth()]),t.push(["setHeight",f.getHeight()])):t.push(["setSymbol",f.getSymbol()]),t}},e.createCircleEditor=function(){var s=this,a=this._shadow||this._geometry,h=this.getMap();this._history||this._recordHistory([["setCoordinates",a.getCoordinates().toArray()],["setRadius",a.getRadius()]]),this._createResizeHandles(null,function(t){var e=a.getCenter(),i=h.containerPointToCoord(t),n=new Js([[e.x,e.y],[i.x,e.y]]),r=new Js([[e.x,e.y],[e.x,i.y]]),o=Math.max(h.computeGeometryLength(n),h.computeGeometryLength(r));a.setRadius(o),a!==s._geometry&&s._geometry.setRadius(o)},function(){s._update("setRadius",a.getRadius())})},e.createEllipseOrRectEditor=function(){var b=this,M=[2,1,2,0,0,2,1,2],T=this._shadow||this._geometry;this._history||this._recordHistory(t());var S,E=this.getMap(),R=this._geometry instanceof sa;this.options.fixAspectRatio&&(S=T.getWidth()/T.getHeight());var A=this._createResizeHandles(null,function(t,e){var i,n,r,o=R?1:2,s=A[e].getContainerPoint(),a=M[e];if(R){var h=A[7-e].getContainerPoint(),l=(i=s.sub(h)).abs();n=E.pixelToDistance(l.x,0),r=E.pixelToDistance(0,l.y);var u=T.getSize(),c=T.getCoordinates(),d=T.getWidth(),f=T.getHeight(),g=E.containerPointToCoord(t),p=E.containerPointToCoord(h),m=new Js([[p.x,p.y],[g.x,p.y]]),_=new Js([[p.x,p.y],[p.x,g.y]]);if(n=E.computeGeometryLength(m),r=E.computeGeometryLength(_),0===a)if(S&&(l.y=l.x/S,u.height=Math.abs(l.y),r=n/S),s.y=h.y-u.height/2,g.y=c.y,4===e)g.x=Math.min(g.x,c.x);else{var v=E.locate(c,d,0);g.x=E.locate(new wn(v.x,g.y),-n,0).x}else if(1===a)S&&(l.x=l.y*S,u.width=Math.abs(l.x),n=r*S),s.x=h.x-u.width/2,g.x=c.x,g.y=Math.max(g.y,p.y);else{if(S&&(r*S=a.length?a[0]:a[t+1];var n=a[t].add(i).multi(.5),h=c.createHandle(n,{symbol:c.options.newVertexHandleSymbol,cursor:"pointer",axis:null,onDown:function(t,e){if(!e||!e.domEvent||2!==e.domEvent.button){var i=m(s),n=h[d],r=h.getContainerPoint(),o=l._containerPointToPrj(r);i.splice(n+1,0,o),0/gi,"").replace(/<\/p>/gi,"
"),this._textEditor.innerHTML=t;var e=this._textEditor.innerText.replace(/[\r\n]+$/gi,"");this.setContent(e),Si(this._textEditor,"mousedown dblclick",ci),this.getMap().off("mousedown",this.endEditText,this),this._editUIMarker.remove(),delete this._editUIMarker,this._textEditor.onkeyup=null,delete this._textEditor,this.show(),this._fireEvent("edittextend")}return this},isEditingText:function(){return!!this._textEditor},getTextEditor:function(){return this._editUIMarker},_prepareEditor:function(){var t=this.getMap(),e=this._createEditor();this._textEditor=e,t.on("mousedown",this.endEditText,this);var i=this._getEditorOffset();this._editUIMarker=new bh(this.getCoordinates(),{animation:null,content:e,dx:i.dx,dy:i.dy}).addTo(t),this._setCursorToLast(this._textEditor)},_getEditorOffset:function(){var t=this._getInternalSymbol()||{},e=0,i=0,n=t.textHorizontalAlignment;return"middle"===n||ut(n)?(e=(t.textDx||0)-2,i=(t.textDy||0)-2):(e=(t.markerDx||0)-2,i=(t.markerDy||0)-2),{dx:e,dy:i}},_createEditor:function(){var t=this.getContent(),e=this.getSize(),i=this._getInternalSymbol()||{},n=e.width,r=i.textFill||"#000000",o=i.textSize||12,s=e.height,a=i.markerLineColor||"#000",h=i.markerFill||"#3398CC",l=i.textLineSpacing||0,u=ri("div");return u.contentEditable=!0,u.style.cssText="background:"+h+"; border:1px solid "+a+";\n color:"+r+";font-size:"+o+"px;width:"+(n-2)+"px;height:"+(s-2)+"px;margin: auto;\n line-height:"+(o+l)+"px;outline: 0; padding:0; margin:0;word-wrap: break-word;\n overflow: hidden;-webkit-user-modify: read-write-plaintext-only;",u.innerText=t,Ti(u,"mousedown dblclick",ci),u.onkeyup=function(t){var e=u.style.height||0;13===t.keyCode&&(u.style.height=parseInt(e)+o/2+"px")},u},_setCursorToLast:function(t){var e;window.getSelection?(t.focus(),(e=window.getSelection()).selectAllChildren(t),e.collapseToEnd()):document.selection&&((e=document.selection.createRange()).moveToElementText(t),e.collapse(!1),e.select())}};ga.include(tu),Zo.include({animate:function(t,e,u){var c=this;this._animPlayer&&this._animPlayer.finish(),G(e)&&(u=e),e||(e={});var d,f=this.getMap(),g=this._getProjection(),i=this._prepareAnimationStyles(t),p=e.focus;if(delete this._animationStarted,f){var n=f._getRenderer();e.framer=function(t){n.callInNextFrame(t)}}var m=zs.animate(i,e,function(t){if(f&&f.isRemoved())m.finish();else{f&&!c._animationStarted&&p&&f.onMoveStart();var e=t.styles;for(var i in e)if("symbol"!==i&&"translate"!==i&&e.hasOwnProperty(i)){var n="set"+i[0].toUpperCase()+i.slice(1);c[n](e[i])}var r=e.translate;if(r){var o=r;d&&(o=r.sub(d)),d=r,c.translate(o)}var s=e.symbol;if(s){var a=c.getSymbol()||{};c.setSymbol(Ve(a,s))}if(f&&p){var h=g.project(c.getCenter());f._setPrjCenter(h);var l=f._parseEventFromCoord(g.unproject(h));"running"!==m.playState?f.onMoveEnd(l):f.onMoving(l)}c._fireAnimateEvent(m.playState),u&&u(t)}},this);return this._animPlayer=m,this._animPlayer.play()},_prepareAnimationStyles:function(t){var e=this._getInternalSymbol(),i={};for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];if("translate"!==n&&"symbol"!==n){var o=this["get"+n[0].toUpperCase()+n.substring(1)]();i[n]=[o,r]}else if("symbol"===n){var s=void 0;if(Array.isArray(t.symbol)){if(!Array.isArray(e))throw new Error("geometry'symbol isn't a composite symbol, while the symbol in styles is.");s=[];for(var a=t.symbol,h=0;h=this.tileCache.max/2&&this.tileCache.setMaxSize(2*i+1);var n=0,r=!1,o={},s=[],a=[],h={},l=[],u={},c=[],d={},f={},g=this._markTiles(),p=this._getLoadLimit(),m=e.length;this._tileZoom=e[0].zoom;for(var _=0;_p)&&(!t.isInteracting()||t.isMoving()||t.isRotating()))n++,f[P]=C}if(b&&!o[P]){o[P]=1,y&&!d[P]&&(C.cache=!1,c.push({image:y,info:C}),d[P]=1);var T=this._findParentTile(C);if(T){var S=T.info.id;void 0===h[S]&&(h[S]=a.length,a.push(T))}else if(!a.length){var E=this._findChildTiles(C);E.length&&E.forEach(function(t){u[t.info.id]||(l.push(t),u[t.info.id]=1)})}}}}return a.length&&(l.length=0,this._childTiles.length=0),{childTiles:l,parentTiles:a,tiles:s,placeholders:c,loading:r,loadingCount:n,tileQueue:f}},e.isTileCachedOrLoading=function(t){return this.tileCache.get(t)||this.tilesInView[t]||this.tilesLoading[t]},e._drawTiles=function(t,e,i,n,r){var o=this;e.length&&(e.sort(function(t,e){return Math.abs(e.info.z-o._tileZoom)-Math.abs(t.info.z-o._tileZoom)}),this._parentTiles=e),i.length&&(this._childTiles=i);var s={tiles:t,parentTiles:this._parentTiles,childTiles:this._childTiles,parentContext:r};this.onDrawTileStart(s,r),1===this.layer.options.opacity&&(this._childTiles.forEach(function(t){return o._drawTile(t.info,t.image,r)}),this._parentTiles.forEach(function(t){return o._drawTile(t.info,t.image,r)})),t.sort(this._compareTiles);for(var a=0,h=t.length;at.onerrorTick)return t.onerrorTick++,void this._fetchImage(t,e);var i=this.layer.options.errorUrl;if(i){if(t instanceof Image&&t.src!==i)return void(t.src=i);(t=new Image).src=i}t=t instanceof Image?t:uu,this.abortTileLoading(t,e),t.loadTime=0,delete this.tilesLoading[e.id],this._addTileToCache(e,t),this.setToRedraw(),this.layer.fire("tileerror",{tile:e})}},e.drawTile=function(t,e){if(e&&this.getMap()){var i=t.extent2d,n=t.offset,r=ru.set(i.xmin-n[0],i.ymax-n[1]),o=t.z,s=t.id,a=this.getMap(),h=a.getZoom(),l=this.context,u=a._pointAtResToContainerPoint(r,t.res,0,ou),c=a.getBearing(),d=c||h!==o,f=this.getTileOpacity(e),g=l.globalAlpha;f<1&&(l.globalAlpha=f,this.setToRedraw()),d||u._round();var p=u.x,m=u.y,_=t.extent2d.xmax-t.extent2d.xmin,v=t.extent2d.ymax-t.extent2d.ymin;if(d){l.save(),l.translate(p,m),c&&(l.rotate(-c*Math.PI/180),_+=.1,v+=.1);var y=a._getResolution();if(y!==t.res){var x=t.res/y;l.scale(x,x)}p=m=0}if(zi.image(l,e,p,m,_,v),this.layer.options.debug){var w=this.layer.options.debugOutline;l.save(),l.strokeStyle=w,l.fillStyle=w,l.strokeWidth=10,l.font="20px monospace";var C=new ct(p,m);zi.rectangle(l,C,{width:_,height:v},1,0),zi.fillText(l,this.getDebugInfo(s),C._add(32,v-14),w),zi.drawCross(l,p+_/2,m+v/2,2,w),l.restore()}d&&l.restore(),l.globalAlpha!==g&&(l.globalAlpha=g),this.setCanvasUpdated()}},e.getDebugInfo=function(t){var e=t.split("_"),i=e.length;return"x:"+e[i-2]+", y:"+e[i-3]+", z:"+e[i-1]},e._findChildTiles=function(t){var e=this._getLayerOfTile(t.layer);if(!e||!e.options.background)return[];for(var i=this.getMap(),n=[],r=t.res,o=t.extent2d.getMin(),s=t.extent2d.getMax(),a=e._project(i._pointToPrjAtRes(o,r,su),su),h=e._project(i._pointToPrjAtRes(s,r,au),au),l=1;l<3;l++)this._findChildTilesAt(n,a,h,e,t.z+l);return n},e._findChildTilesAt=function(t,e,i,n,r){var o=n.options.zoomOffset,s=n.getId(),a=n.getSpatialReference().getResolution(r+o);if(a)for(var h,l,u=n._getTileConfig().getTileIndex(e,a),c=n._getTileConfig().getTileIndex(i,a),d=Math.min(u.idx,c.idx),f=Math.max(u.idx,c.idx),g=Math.min(u.idy,c.idy),p=Math.max(u.idy,c.idy),m=d;m1.5*this._drawnRes&&this._geosToDraw.length109?t.setAttribute(e,n):t.addAttribute(e,n),t}function h(){return!s.VertexColors||s.VertexColors}console.log(`maptalks.three log: current three.js version is %c${a}`,"color:red;font-size: 16px;font-weight: bold;");class c extends s.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),l(this,"position",new s.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),l(this,"uv",new s.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix(t){var e=this.attributes.instanceStart,n=this.attributes.instanceEnd;return void 0!==e&&(t.applyToBufferAttribute(e),t.applyToBufferAttribute(n),e.data.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}setPositions(t){var e;t instanceof Float32Array?e=t:Array.isArray(t)&&(e=new Float32Array(t));var n=new s.InstancedInterleavedBuffer(e,6,1);return l(this,"instanceStart",new s.InterleavedBufferAttribute(n,3,0)),l(this,"instanceEnd",new s.InterleavedBufferAttribute(n,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(t){var e;t instanceof Float32Array?e=t:Array.isArray(t)&&(e=new Float32Array(t));var n=new s.InstancedInterleavedBuffer(e,6,1);return l(this,"instanceColorStart",new s.InterleavedBufferAttribute(n,3,0)),l(this,"instanceColorEnd",new s.InterleavedBufferAttribute(n,3,3)),this}fromWireframeGeometry(t){return this.setPositions(t.attributes.position.array),this}fromEdgesGeometry(t){return this.setPositions(t.attributes.position.array),this}fromMesh(t){return this.fromWireframeGeometry(new s.WireframeGeometry(t.geometry)),this}fromLineSegements(t){var e=t.geometry;return e.isGeometry?this.setPositions(e.vertices):e.isBufferGeometry&&this.setPositions(e.position.array),this}computeBoundingBox(){var t=new s.Box3;null===this.boundingBox&&(this.boundingBox=new s.Box3);var e=this.attributes.instanceStart,n=this.attributes.instanceEnd;void 0!==e&&void 0!==n&&(this.boundingBox.setFromBufferAttribute(e),t.setFromBufferAttribute(n),this.boundingBox.union(t))}computeBoundingSphere(){var t=new s.Vector3;null===this.boundingSphere&&(this.boundingSphere=new s.Sphere),null===this.boundingBox&&this.computeBoundingBox();var e=this.attributes.instanceStart,n=this.attributes.instanceEnd;if(void 0!==e&&void 0!==n){var i=this.boundingSphere.center;this.boundingBox.getCenter(i);for(var r=0,o=0,a=e.count;o\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tuniform float linewidth;\n\t\tuniform vec2 resolution;\n\n\t\tattribute vec3 instanceStart;\n\t\tattribute vec3 instanceEnd;\n\n\t\tattribute vec3 instanceColorStart;\n\t\tattribute vec3 instanceColorEnd;\n\n\t\tvarying vec2 vUv;\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashScale;\n\t\t\tattribute float instanceDistanceStart;\n\t\t\tattribute float instanceDistanceEnd;\n\t\t\tvarying float vLineDistance;\n\n\t\t#endif\n\n\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\n\n\t\t\t// trim end segment so it terminates between the camera plane and the near plane\n\n\t\t\t// conservative estimate of the near plane\n\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\n\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\n\t\t\tfloat nearEstimate = - 0.5 * b / a;\n\n\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\n\n\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#ifdef USE_COLOR\n\n\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\n\n\t\t\t#endif\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\n\n\t\t\t#endif\n\n\t\t\tfloat aspect = resolution.x / resolution.y;\n\n\t\t\tvUv = uv;\n\n\t\t\t// camera space\n\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\n\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\n\n\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n\t\t\t// perhaps there is a more elegant solution -- WestLangley\n\n\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\n\n\t\t\tif ( perspective ) {\n\n\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( start, end );\n\n\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( end, start );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// clip space\n\t\t\tvec4 clipStart = projectionMatrix * start;\n\t\t\tvec4 clipEnd = projectionMatrix * end;\n\n\t\t\t// ndc space\n\t\t\tvec2 ndcStart = clipStart.xy / clipStart.w;\n\t\t\tvec2 ndcEnd = clipEnd.xy / clipEnd.w;\n\n\t\t\t// direction\n\t\t\tvec2 dir = ndcEnd - ndcStart;\n\n\t\t\t// account for clip-space aspect ratio\n\t\t\tdir.x *= aspect;\n\t\t\tdir = normalize( dir );\n\n\t\t\t// perpendicular to dir\n\t\t\tvec2 offset = vec2( dir.y, - dir.x );\n\n\t\t\t// undo aspect ratio adjustment\n\t\t\tdir.x /= aspect;\n\t\t\toffset.x /= aspect;\n\n\t\t\t// sign flip\n\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t// endcaps\n\t\t\tif ( position.y < 0.0 ) {\n\n\t\t\t\toffset += - dir;\n\n\t\t\t} else if ( position.y > 1.0 ) {\n\n\t\t\t\toffset += dir;\n\n\t\t\t}\n\n\t\t\t// adjust for linewidth\n\t\t\toffset *= linewidth;\n\n\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\n\t\t\toffset /= resolution.y;\n\n\t\t\t// select end\n\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\n\n\t\t\t// back to clip space\n\t\t\toffset *= clip.w;\n\n\t\t\tclip.xy += offset;\n\n\t\t\tgl_Position = clip;\n\n\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t}\n\t\t",fragmentShader:"\n\t\tuniform vec3 diffuse;\n\t\tuniform float opacity;\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashSize;\n\t\t\tuniform float gapSize;\n\n\t\t#endif\n\n\t\tvarying float vLineDistance;\n\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n\n\t\t\t\tif ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\n\n\t\t\t#endif\n\n\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\tfloat a = vUv.x;\n\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\tfloat len2 = a * a + b * b;\n\n\t\t\t\tif ( len2 > 1.0 ) discard;\n\n\t\t\t}\n\n\t\t\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t\tgl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a );\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t}\n\t\t"};class f extends s.ShaderMaterial{constructor(t){super({uniforms:s.UniformsUtils.clone(d.line.uniforms),vertexShader:d.line.vertexShader,fragmentShader:d.line.fragmentShader}),this.dashed=!0,this.isLineMaterial=!0,this.type="LineMaterial",Object.defineProperties(this,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(t){this.uniforms.diffuse.value=t}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(t){this.uniforms.linewidth.value=t}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(t){this.uniforms.dashScale.value=t}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(t){this.uniforms.dashSize.value=t}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(t){this.uniforms.gapSize.value=t}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(t){this.uniforms.resolution.value.copy(t)}}}),this.setValues(t)}}class p extends s.Mesh{constructor(t,e){super(t,e),this.isLineSegments2=!0,this.type="LineSegments2",this.geometry=void 0!==t?t:new c,this.material=void 0!==e?e:new f({color:16777215*Math.random()})}computeLineDistances(){var t=new s.Vector3,e=new s.Vector3,n=this.geometry,i=n.attributes.instanceStart,r=n.attributes.instanceEnd;if(!i||!r)return this;for(var o=new Float32Array(2*i.data.count),a=0,h=0,c=i.data.count;aa&&(r[t+2]=l);n.attributes.position.needsUpdate=!0,n.computeBoundingBox(),n.computeBoundingSphere(),this.getOptions().height=t}return this}show(){return this._zoomVisible&&(this.getObject3d().visible=!0,this._fire("show")),this._visible=!0,this}hide(){return this.getObject3d().visible=!1,this._fire("hide"),this._visible=!1,this._hideUI(),this}isVisible(){return!!this.getObject3d().visible}getSymbol(){return this.getObject3d().material}setSymbol(t){if(t&&t instanceof s.Material){t.needsUpdate=!0,t.vertexColors=this.getObject3d().material.vertexColors;const e=this.getObject3d().material.clone();this.getObject3d().material=t,this._fire("symbolchange",{old:e,new:t,target:this})}return this}setInfoWindow(t){return this.removeInfoWindow(),this.infoWindow=new o.ui.InfoWindow(t),this.infoWindow.addTo(this),this}getInfoWindow(){return this.infoWindow}openInfoWindow(t){return(t=t||this.getCenter())instanceof o.Coordinate||(t=new o.Coordinate(t)),t&&this.infoWindow&&this.infoWindow.show(t),this}closeInfoWindow(){return this.infoWindow&&this.infoWindow.hide(),this}removeInfoWindow(){return this.infoWindow&&(this.infoWindow.remove(),delete this.infoWindow),this}setToolTip(t,e){return this.removeToolTip(),this.toolTip=new o.ui.ToolTip(t,e),this.toolTip.addTo(this),this}getToolTip(){return this.toolTip}openToolTip(t){return(t=t||this.getCenter())instanceof o.Coordinate||(t=new o.Coordinate(t)),t&&this.toolTip&&this.toolTip.show(t),this}closeToolTip(){return this.toolTip&&this.toolTip.hide(),this}removeToolTip(){return this.toolTip&&(this.toolTip.remove(),delete this.toolTip),this}_hideUI(){return this.closeInfoWindow(),this.closeToolTip(),this}animateShow(t={},e){this._showPlayer&&this._showPlayer.cancel(),o.Util.isFunction(t)&&(e=t={});const n=t.duration||1e3,i=t.easing||"out",r=this._showPlayer=o.animation.Animation.animate({scale:1},{duration:n,easing:i},(t=>{const n=t.styles.scale;n>0&&(this.getObject3d().scale.z=n),e&&e(t,n)}));return r.play(),r}getMinZoom(){return this.getOptions().minZoom}getMaxZoom(){return this.getOptions().maxZoom}isAsynchronous(){return this.getOptions().asynchronous}get bloom(){return this.getOptions().bloom}fire(t,e){return this._fire(t,e),this._vt&&this._vt.onSelectMesh&&this._vt.onSelectMesh(t,e),this}config(){return this}setPickObject3d(t){return this.pickObject3d=t,this.pickObject3d.__parent=this,this}_initOptions(t){return this.options=o.Util.extend({},x,t),this}_createMesh(t,e){return this.object3d=new s.Mesh(t,e),this.object3d.__parent=this,this}_createInstancedMesh(t,e,n){return this.object3d=new s.InstancedMesh(t,e,n),this.object3d.__parent=this,this}_createGroup(){return this.object3d=new s.Group,this.object3d.__parent=this,this}_createLine(t,e){return this.object3d=new s.Line(t,e),this._computeLineDistances(t),this.object3d.__parent=this,this}_createLine2(t,e){return this.object3d=new y(t,e),this.object3d.computeLineDistances(),this.object3d.__parent=this,this}_createPoints(t,e){return this.object3d=new s.Points(t,e),this.object3d.__parent=this,this}_createLineSegments(t,e){return this.object3d=new s.LineSegments(t,e),this._computeLineDistances(t),this.object3d.__parent=this,this}_computeLineDistances(t){const e=t.attributes.position.array,n=t.attributes.position.count,i=new Float32Array(n);i[0]=0;const r=new s.Vector3(0,0,0),o=new s.Vector3(0,0,0);for(let t=1;t-1)}function S(t){return t.geometry?t.geometry.coordinates:[]}function T(t,e){const n=_(t);if(!n||!t.geometry)return null;const i=t.geometry.coordinates;if(!i)return null;let r=0,s=0,a=0;switch(n){case"Point":r=i[0],s=i[1],a++;break;case"MultiPoint":case"LineString":for(let t=0,e=i.length;t80*n){r=a=t[0],s=l=t[1];for(var x=n;xa&&(a=h),u>l&&(l=u);d=0!==(d=Math.max(a-r,l-s))?32767/d:0}return o(g,y,n,r,s,d,0),y}function i(t,e,n,i,r){var o,s;if(r===B(t,e,n,i)>0)for(o=e;o=e;o-=i)s=k(o,t[o],t[o+1],s);return s&&w(s,s.next)&&(P(s),s=s.next),s}function r(t,e){if(!t)return t;e||(e=t);var n,i=t;do{if(n=!1,i.steiner||!w(i,i.next)&&0!==_(i.prev,i,i.next))i=i.next;else{if(P(i),(i=e=i.prev)===i.next)break;n=!0}}while(n||i!==e);return e}function o(t,e,n,i,c,u,d){if(t){!d&&u&&g(t,i,c,u);for(var f,p,y=t;t.prev!==t.next;)if(f=t.prev,p=t.next,u?a(t,i,c,u):s(t))e.push(f.i/n|0),e.push(t.i/n|0),e.push(p.i/n|0),P(t),t=p.next,y=p.next;else if((t=p)===y){d?1===d?o(t=l(r(t),e,n),e,n,i,c,u,2):2===d&&h(t,e,n,i,c,u):o(r(t),e,n,i,c,u,1);break}}}function s(t){var e=t.prev,n=t,i=t.next;if(_(e,n,i)>=0)return!1;for(var r=e.x,o=n.x,s=i.x,a=e.y,l=n.y,h=i.y,c=ro?r>s?r:s:o>s?o:s,f=a>l?a>h?a:h:l>h?l:h,p=i.next;p!==e;){if(p.x>=c&&p.x<=d&&p.y>=u&&p.y<=f&&m(r,a,o,l,s,h,p.x,p.y)&&_(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function a(t,e,n,i){var r=t.prev,o=t,s=t.next;if(_(r,o,s)>=0)return!1;for(var a=r.x,l=o.x,h=s.x,c=r.y,u=o.y,d=s.y,f=al?a>h?a:h:l>h?l:h,y=c>u?c>d?c:d:u>d?u:d,v=x(f,p,e,n,i),b=x(g,y,e,n,i),w=t.prevZ,M=t.nextZ;w&&w.z>=v&&M&&M.z<=b;){if(w.x>=f&&w.x<=g&&w.y>=p&&w.y<=y&&w!==r&&w!==s&&m(a,c,l,u,h,d,w.x,w.y)&&_(w.prev,w,w.next)>=0)return!1;if(w=w.prevZ,M.x>=f&&M.x<=g&&M.y>=p&&M.y<=y&&M!==r&&M!==s&&m(a,c,l,u,h,d,M.x,M.y)&&_(M.prev,M,M.next)>=0)return!1;M=M.nextZ}for(;w&&w.z>=v;){if(w.x>=f&&w.x<=g&&w.y>=p&&w.y<=y&&w!==r&&w!==s&&m(a,c,l,u,h,d,w.x,w.y)&&_(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;M&&M.z<=b;){if(M.x>=f&&M.x<=g&&M.y>=p&&M.y<=y&&M!==r&&M!==s&&m(a,c,l,u,h,d,M.x,M.y)&&_(M.prev,M,M.next)>=0)return!1;M=M.nextZ}return!0}function l(t,e,n){var i=t;do{var o=i.prev,s=i.next.next;!w(o,s)&&M(o,i,i.next,s)&&S(o,s)&&S(s,o)&&(e.push(o.i/n|0),e.push(i.i/n|0),e.push(s.i/n|0),P(i),P(i.next),i=t=s),i=i.next}while(i!==t);return r(i)}function h(t,e,n,i,s,a){var l=t;do{for(var h=l.next.next;h!==l.prev;){if(l.i!==h.i&&b(l,h)){var c=C(l,h);return l=r(l,l.next),c=r(c,c.next),o(l,e,n,i,s,a,0),void o(c,e,n,i,s,a,0)}h=h.next}l=l.next}while(l!==t)}function c(t,e,n,r){var o,s,a,l=[];for(o=0,s=e.length;o=i.next.y&&i.next.y!==i.y){var a=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(a<=r&&a>s&&(s=a,n=i.x=i.x&&i.x>=c&&r!==i.x&&m(on.x||i.x===n.x&&p(n,i)))&&(n=i,d=l)),i=i.next}while(i!==h);return n}function p(t,e){return _(t.prev,t,e.prev)<0&&_(e.next,t,t.next)<0}function g(t,e,n,i){var r=t;do{0===r.z&&(r.z=x(r.x,r.y,e,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,y(r)}function y(t){var e,n,i,r,o,s,a,l,h=1;do{for(n=t,t=null,o=null,s=0;n;){for(s++,i=n,a=0,e=0;e0||l>0&&i;)0!==a&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,a--):(r=i,i=i.nextZ,l--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;n=i}o.nextZ=null,h*=2}while(s>1);return t}function x(t,e,n,i,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*r|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*r|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function v(t){var e=t,n=t;do{(e.x=(t-s)*(o-a)&&(t-s)*(i-a)>=(n-s)*(e-a)&&(n-s)*(o-a)>=(r-s)*(i-a)}function b(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!j(t,e)&&(S(t,e)&&S(e,t)&&T(t,e)&&(_(t.prev,t,e.prev)||_(t,e.prev,e))||w(t,e)&&_(t.prev,t,t.next)>0&&_(e.prev,e,e.next)>0)}function _(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function w(t,e){return t.x===e.x&&t.y===e.y}function M(t,e,n,i){var r=A(_(t,e,n)),o=A(_(t,e,i)),s=A(_(n,i,t)),a=A(_(n,i,e));return r!==o&&s!==a||!(0!==r||!O(t,n,e))||!(0!==o||!O(t,i,e))||!(0!==s||!O(n,t,i))||!(0!==a||!O(n,e,i))}function O(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function A(t){return t>0?1:t<0?-1:0}function j(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&M(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}function S(t,e){return _(t.prev,t,t.next)<0?_(t,e,t.next)>=0&&_(t,t.prev,e)>=0:_(t,e,t.prev)<0||_(t,t.next,e)<0}function T(t,e){var n=t,i=!1,r=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&r<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==t);return i}function C(t,e){var n=new L(t.i,t.x,t.y),i=new L(e.i,e.x,e.y),r=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=r,r.prev=n,i.next=n,n.prev=i,o.next=i,i.prev=o,i}function k(t,e,n,i){var r=new L(t,e,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function P(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function L(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function B(t,e,n,i){for(var r=0,o=e,s=n-i;o0&&(i+=t[r-1].length,n.holes.push(i))}return n};var z=e.exports;function I(t){for(var e,n,i=0,r=1,o=t.length;r0}function E(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function U(t,e){var n=e[0],i=e[1],r=e[2],o=Math.sqrt(n*n+i*i+r*r)||1;return t[0]=n/o,t[1]=i/o,t[2]=r/o,t}function F(t,e,n){var i=e[0],r=e[1],o=e[2],s=n[0],a=n[1],l=n[2];return t[0]=r*l-o*a,t[1]=o*s-i*l,t[2]=i*a-r*s,t}function V(t,e){function n(t,e,n,i){t[0]=e,t[1]=n,t[2]=i}for(var i=[],r=[],o=[],s=[],a=[],l=[],h=t.length,c=new Float32Array(e.length),u=0;u0&&r.push(u/2);for(var y=0,x=g.length;y0&&(d=(d=d.map((function(t){return t}))).reverse());for(var f=0,p=d.length-1;f0}function st(t,e){void 0===e&&(e={}),e=Object.assign({},{radius:1,height:2,radialSegments:6},e);for(var n=Math.round(Math.max(4,e.radialSegments)),i=e,r=i.radius,o=i.height,s=360/n/360*Math.PI*2,a=n+1,l=new Float32Array(3*a*2),h=t[0],c=t[1],u=0,d=0,f=3*a,p=2*a,g=[],y=[],x=-1;x1&&g.push(0,x-1,x)}l[u-=3]=l[0],l[u+1]=l[1],l[u+2]=l[2];var M=l.length;l[M-3]=l[0],l[M-2]=l[1],l[M-1]=o;for(var O=g.length,A=0;Ae?(a[t]=R.r,a[t+1]=R.g,a[t+2]=R.b):(a[t]=G.r,a[t+1]=G.g,a[t+2]=G.b)}}else for(let t=0;ti?(a[t]=R.r,a[t+1]=R.g,a[t+2]=R.b):(a[t]=G.r,a[t+1]=G.g,a[t+2]=G.b)}return l(t,"color",new s.BufferAttribute(a,3,!0)),a}function Q(t,e,n,i,r=!1){if(!t)return null;let s=[];if(t instanceof o.MultiPolygon)s=t.getGeometries().map((o=>W(o,e,n||t.getCenter(),i,r)));else if(t instanceof o.Polygon){const o=W(t,e,n||t.getCenter(),i,r);s.push(o)}else if(M(t))if(j(t)){const o=C(t);for(let a=0,l=o.length;a0)for(let t=0,n=a.length;tq(t,!1)));else if(t instanceof o.Polygon){const n=q(t,!1);e.push(n)}else if(M(t))if(j(t)){const n=C(t);for(let t=0,i=n.length;t0)for(let t=0,e=i.length;t0&&i0&&nt.data))}function gt(t){return t.map((t=>t.option||t.baseObject.getOptions()))}o.worker&&(at=class extends o.worker.Actor{test(t,e){this.send(t,null,e)}pushQueue(t={}){const{type:e,data:n,callback:i,layer:r,key:o,center:s,lineStrings:a,options:l,id:h}=t;let c;e.indexOf("ExtrudePolygon")>-1?c=function(t=[],e,n,i=[]){const r=n.isMercator();let o,s,a;if(r){const t=n.getMap();o=t.getGLRes(),s=t.getSpatialReference().getTransformation().matrix}e&&(a=n.coordinateToVector3(e));const l=t.length,h=[],c=[],u={};for(let o=0;o{this.resultQueue.push(t)})),this}deQueue(){if(!this.resultQueue.length)return this;const t=this.deQueueCount;return(this.resultQueue.slice(0,t)||[]).forEach((t=>{const{id:e}=t;if(this.queueMap[e]){const{baseObject:n}=this.queueMap[e];n&&n._workerLoad&&n._workerLoad(t),delete this.queueMap[e]}})),this.resultQueue.splice(0,t),this}}const xt=new class extends yt{constructor(){super(),this.deQueueCount=100}loop(){if((this.getCurrentTime()-this.time>=32||this.tempQueue.length>=1e3)&&this.tempQueue.length){ht().pushQueue({type:"ExtrudePolygon",layer:this.tempQueue[0].layer,data:pt(this.tempQueue),options:gt(this.tempQueue),callback:t=>{this.pushResult(t)}}),this.reset()}super.loop()}},vt=new class extends yt{loop(){if(this.tempQueue.length){const t=ht();this.tempQueue.forEach((e=>{t.pushQueue({id:e.id,type:"ExtrudePolygons",layer:e.layer,data:e.data,key:e.key,center:e.center,callback:t=>{this.pushResult(t)}})})),this.reset()}super.loop()}},mt=new class extends yt{constructor(){super(),this.deQueueCount=100}loop(){if((this.getCurrentTime()-this.time>=32||this.tempQueue.length>=1e3)&&this.tempQueue.length){ht().pushQueue({type:"ExtrudeLine",layer:this.tempQueue[0].layer,data:pt(this.tempQueue),options:gt(this.tempQueue),lineStrings:this.tempQueue.map((t=>t.lineString)),callback:t=>{this.pushResult(t)}}),this.reset()}super.loop()}},bt=new class extends yt{loop(){if(this.tempQueue.length){const t=ht();this.tempQueue.forEach((e=>{t.pushQueue({id:e.id,type:"ExtrudeLines",layer:e.layer,data:e.data,key:e.key,lineStrings:e.lineStrings,center:e.center,callback:t=>{this.pushResult(t)}})})),this.reset()}super.loop()}},_t=new class extends yt{constructor(){super(),this.deQueueCount=200}loop(){if((this.getCurrentTime()-this.time>=32||this.tempQueue.length>=1e3)&&this.tempQueue.length){ht().pushQueue({type:"Line",layer:this.tempQueue[0].layer,data:pt(this.tempQueue),options:gt(this.tempQueue),lineStrings:this.tempQueue.map((t=>t.lineString)),callback:t=>{this.pushResult(t)}}),this.reset()}super.loop()}},wt=new class extends yt{loop(){if(this.tempQueue.length){const t=ht();this.tempQueue.forEach((e=>{t.pushQueue({id:e.id,type:"Lines",layer:e.layer,data:e.data,key:e.key,lineStrings:e.lineStrings,center:e.center,callback:t=>{this.pushResult(t)}})})),this.reset()}super.loop()}},Mt=new class extends yt{constructor(){super(),this.deQueueCount=100}loop(){if((this.getCurrentTime()-this.time>=32||this.tempQueue.length>=1e3)&&this.tempQueue.length){ht().pushQueue({type:"FatLine",layer:this.tempQueue[0].layer,data:pt(this.tempQueue),options:gt(this.tempQueue),lineStrings:this.tempQueue.map((t=>t.lineString)),callback:t=>{this.pushResult(t)}}),this.reset()}super.loop()}},Ot=new class extends yt{loop(){if(this.tempQueue.length){const t=ht();this.tempQueue.forEach((e=>{t.pushQueue({id:e.id,type:"FatLines",layer:e.layer,data:e.data,key:e.key,lineStrings:e.lineStrings,center:e.center,callback:t=>{this.pushResult(t)}})})),this.reset()}super.loop()}},At=new class extends yt{constructor(){super(),this.deQueueCount=100}loop(){if((this.getCurrentTime()-this.time>=32||this.tempQueue.length>=1e3)&&this.tempQueue.length){ht().pushQueue({type:"Bar",layer:this.tempQueue[0].layer,data:pt(this.tempQueue),options:gt(this.tempQueue),callback:t=>{this.pushResult(t)}}),this.reset()}super.loop()}},jt=new class extends yt{constructor(){super(),this.deQueueCount=1}loop(){if(this.tempQueue.length){const t=ht();this.tempQueue.forEach((e=>{t.pushQueue({id:e.id,type:"Bars",layer:e.layer,data:e.data,callback:t=>{this.pushResult(t)}})})),this.reset()}super.loop()}},St={isRunning:!1,tasks:[],addTask:t=>{t&&St.tasks.push(t)},removeTask:t=>{St.tasks.splice(St.tasks.indexOf(t),1)},loop(){xt.loop(),vt.loop(),mt.loop(),bt.loop(),_t.loop(),wt.loop(),Mt.loop(),Ot.loop(),At.loop(),jt.loop(),St.tasks.forEach((t=>{t&&t.loop&&t.loop()})),o.Util.requestAnimFrame(St.loop)},star(){St.isRunning||(St.isRunning=!0,St.loop())}};function Tt(t){const{position:e,normal:n,uv:i,indices:r}=Ct(t),o=new s.BufferGeometry,a=new Float32Array(e.length);return a.fill(1,0,e.length),l(o,"color",new s.BufferAttribute(a,3)),l(o,"normal",new s.BufferAttribute(n,3)),l(o,"position",new s.BufferAttribute(e,3)),i&&i.length&&l(o,"uv",new s.BufferAttribute(i,2)),o.setIndex(new s.BufferAttribute(r,1)),o}function Ct(t){const e={},n={};for(let i=0;ie?(c[t]=Ut.r,c[t+1]=Ut.g,c[t+2]=Ut.b):(c[t]=Ft.r,c[t+1]=Ft.g,c[t+2]=Ft.b)}}else for(let t=0;tr?(c[t]=Ut.r,c[t+1]=Ut.g,c[t+2]=Ut.b):(c[t]=Ft.r,c[t+1]=Ft.g,c[t+2]=Ft.b)}return l(t,"color",new s.BufferAttribute(c,3,!0)),c}function Gt(t){const e=[],n=t.length;let i=0;for(let e=0;e{t=t instanceof s.Color?t:new s.Color(t),e.push(t.r,t.g,t.b)})),e}const Wt={altitude:0,bottomHeight:0,colors:null};class Nt extends m{constructor(t,e,n,i){e=o.Util.extend({},Wt,e,{layer:i,lineString:t}),super(),this._initOptions(e);const{lineStrings:r,center:a}=tt(t),{asynchronous:c}=e;let u;if(c){u=ot();const n=o.Util.GUID();this.getOptions().id=n,this.getOptions().center=a,_t.push({id:n,data:r,layer:i,key:e.key,lineString:t,baseObject:this})}else{const t=[];for(let e=0,n=r.length;et.toArray()))}function ne(t){return t*te}function ie(t,e){if(!t||!e)return 0;Array.isArray(t)||(t=t.toArray()),Array.isArray(e)||(e=e.toArray());let n=ne(t[1]);const i=ne(e[1]),r=n-i,o=ne(t[0])-ne(e[0]);return n=2*Math.asin(Math.sqrt(Math.pow(Math.sin(r/2),2)+Math.cos(n)*Math.cos(i)*Math.pow(Math.sin(o/2),2))),n*=6378137,Math.round(1e5*n)/1e5}function re(t,e){const{len:n,c1:i,c2:r}=t,o=r[0]-i[0],s=r[1]-i[1],a=e/n;return[i[0]+a*o,i[1]+a*s]}function oe(t,e=10){e=Math.max(e,.1),Array.isArray(t)||(t=ee(t));const n=t.length;let i=[],r=0;for(let e=0;e[t.c1,t.c2]))}if(1===i.length&&i[0].len<=e)return[[i[0].c1,i[0].c2]];const o=i.length;let s,a=0,l=0;const h=[];let c=[i[0].c1];for(;ae){const n=t-l+e;s=re(i[a],n),c.push(s),h.push(c),l=0,i[a].c1=s,i[a].len=t-n,c=[],c.push(s)}}return h}var se=Object.freeze({__proto__:null,distance:ie,lineLength:function(t){let e=t;Array.isArray(t)||(e=ee(t));let n=0;for(let t=0,i=e.length;ti){this._params.idx++;let t=e[d];if(!t){t=X(Y(r.slice(d,d+o),h,0,u).positionsV,s,a,h),e[d]=t}const n=this.getObject3d();!function(t,e,n,i){const r=e.length;t.attributes.normal.count=r,t.attributes.position.count=r;const o=t.attributes.position.array,s=t.attributes.normal.array;for(let t=0;t=r.length-1&&(this._params.index=-1,this._params.idx=-1),this._params.index+=n}_workerLoad(t){if(!t)return this;const{id:e,indices:n,position:i,normal:r,uv:s}=t;if(!(e&&n&&i&&r&&s))return;let a=e.split("-")[1];if(a=parseInt(a),o.Util.isNumber(a)){this._params.geometries[a]={indices:new Uint32Array(n),position:new Float32Array(i),uv:new Float32Array(s),normal:new Float32Array(r)},this._params.workerInitCount++}this._params.workerInitCount===this._params.chunkLines.length&&(this._params.loaded=!0,this._fire("workerload",{target:this}))}}const ce=["click","mousemove","mousedown","mouseup","dblclick","contextmenu"].join(" ").toString(),ue=new s.MeshBasicMaterial;ue.vertexColors=h();const de=t=>class extends t{_initBaseObjectsEvent(t){if(t&&Array.isArray(t)&&t.length)for(let e=0,n=t.length;e{this._showGeometry(t.target,!0)})),t.on("remove",(t=>{this._showGeometry(t.target,!1)})),t.on("mouseout",(t=>{this._mouseover=!1,this.fire("mouseout",Object.assign({},t,{target:this,selectMesh:this.getSelectMesh?this.getSelectMesh():null}))})),t.on(ce,(t=>{this.fire(t.type,Object.assign({},t,{target:this,selectMesh:this.getSelectMesh?this.getSelectMesh():null}))}))}_getHideGeometryIndex(t){const e=[];let n=0;for(let i=0,r=this._geometriesAttributes.length;i{t.add(this.pickObject3d)})),this.on("remove",(()=>{t.remove(this.pickObject3d)}))}_setPickObject3d(){if(!this._colorMap)return;const t=this._geometryCache||this.getObject3d().geometry.clone(),e=this.getLayer().getPick(),{_geometriesAttributes:n}=this,i=n.length,r=F(n);let o=0;for(let t=0;t0&&(h+=I(e,n,r)),i.push(new s.Vector3(a,l,h))}return i}(t,i,r)),t.map((t=>ye(t,e,n)))},vector2Pixel:ye});const ve={altitude:0,height:0,color:null},me=new s.Vector3;class be extends m{constructor(t,e,n,i){e=o.Util.extend({},ve,e,{layer:i,coordinate:t}),super();let{height:r,altitude:a,color:h,size:c}=e;const u=[],d=[];h&&(h=h instanceof s.Color?h:new s.Color(h),d.push(h.r,h.g,h.b));const f=i.altitudeToVector3(r,r).x,p=i.coordinateToVector3(t,f);u.push(0,0,p.z);const g=new s.BufferGeometry;l(g,"position",new s.Float32BufferAttribute(u,3,!0)),d.length&&l(g,"color",new s.Float32BufferAttribute(d,3,!0)),void 0!==c&&l(g,"size",new s.Float32BufferAttribute([c],1,!0)),e.positions=p,this._initOptions(e),this._createPoints(g,n);const y=i.altitudeToVector3(a,a).x,x=new s.Vector3(p.x,p.y,y);this.getObject3d().position.copy(x),this.type="Point"}identify(t){const e=this.getLayer(),n=this.getMap().getSize(),i=this.getLayer().getCamera(),r=this.getOptions().positions,o=this.getOptions().altitude;let s=this.getObject3d().material.size;void 0===s&&(s=this.options.size||1);const a=this.getMap().coordToContainerPoint(t),l=e.altitudeToVector3(o,o).x;me.x=r.x,me.y=r.y,me.z=r.z+l;const h=ye(me,n,i);return Math.sqrt(Math.pow(a.x-h.x,2)+Math.pow(a.y-h.y,2))<=s/2}}function _e(t,e){const{minx:n,miny:i,maxx:r,maxy:o}=t,[s,a]=e;return n<=s&&s<=r&&i<=a&&a<=o}class we{constructor(t,e,n,i){this.minlng=t,this.minlat=e,this.maxlng=n,this.maxlat=i,this.minx=1/0,this.miny=1/0,this.maxx=-1/0,this.maxy=-1/0,this.coordinates=[],this.positions=[],this.indexs=[],this.key=null}updateBBoxPixel(t){let e=1/0,n=1/0,i=-1/0,r=-1/0;const{minlng:s,minlat:a,maxlng:l,maxlat:h}=this;return[[s,a],[s,h],[l,a],[l,h]].map((t=>new o.Coordinate(t))).map((e=>t.coordToContainerPoint(e))).forEach((t=>{e=Math.min(e,t.x),n=Math.min(n,t.y),i=Math.max(i,t.x),r=Math.max(r,t.y)})),this.minx=e,this.miny=n,this.maxx=i,this.maxy=r,this}containsCoordinate(t){let e,n;Array.isArray(t)?(e=t[0],n=t[1]):t instanceof o.Coordinate&&(e=t.x,n=t.y);const{minlng:i,minlat:r,maxlng:s,maxlat:a}=this;return i<=e&&e<=s&&r<=n&&n<=a}isRecCross(t,e){const{x:n,y:i}=t,r={minx:n-e/2,miny:i-e/2,maxx:n+e/2,maxy:i+e/2},{minx:o,miny:s,maxx:a,maxy:l}=r;return!!(_e(this,[o,s])||_e(this,[o,l])||_e(this,[a,s])||_e(this,[a,l])||_e(r,[this.minx,this.miny])||_e(r,[this.minx,this.maxy])||_e(r,[this.maxx,this.miny])||_e(r,[this.maxx,this.maxy]))}static initGrids(t,e,n,i){const r=[],o=(n-t)/30,s=(i-e)/30;let a=t,l=e;for(let n=0;n<30;n++){a=t+n*o;for(let t=0;t<30;t++){l=e+t*s;const i=new we(a,l,a+o,l+s);i.key=t+"-"+n,r.push(i)}}return{grids:r,averageX:o,averageY:s,ROWS:30,COLS:30}}}const Me={altitude:0},Oe=new s.Vector3;function Ae(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}class je extends(de(m)){constructor(t,e,n,i){Array.isArray(t)||(t=[t]),e=o.Util.extend({},Me,e,{layer:i,points:t});let r=1/0,a=1/0,h=-1/0,c=-1/0;for(let e=0,n=t.length;e{this._updateGrids(),t.on(e,this._updateGrids,this)})),this.on("remove",(()=>{t.off(e,this._updateGrids,this)}))}_updateGrids(){const t=this.getMap();this._grids.forEach((e=>{e.indexs.length&&e.updateBBoxPixel(t)}))}getSelectMesh(){const t=this.faceIndex;if(null!=t){if(!this._baseObjects[t]){const e=this._datas[t],{coordinate:n,height:i,color:r,size:o}=e;this._baseObjects[t]=new be(n,{height:i,index:t,color:r,size:o},this.getObject3d().material,this.getLayer()),this._proxyEvent(this._baseObjects[t])}return{data:this._datas[t],baseObject:this._baseObjects[t]}}}identify(t){const e=this.getLayer(),n=this.getMap().getSize(),i=this.getLayer().getCamera(),r=this.getOptions().altitude,o=this.getMap(),s=e.altitudeToVector3(r,r).x;let a=this.getObject3d().material.size;const l=void 0===a,h=o.coordToContainerPoint(t),c=[];if(this._grids.forEach((t=>{t.indexs.length&&t.isRecCross(h,l?this.maxSize:a)&&c.push(t)})),c.length<1)return!1;for(let t=0,e=c.length;t=0;e--){l&&(a=this._datas[c[t].indexs[e]].size||1);const r=c[t].positions[e];Oe.x=r.x,Oe.y=r.y,Oe.z=r.z+s;const o=ye(Oe,n,i);if(Math.sqrt(Math.pow(h.x-o.x,2)+Math.pow(h.y-o.y,2))<=a/2)return this.faceIndex=c[t].indexs[e],!0}return!1}}const Se={coordinate:"",radius:10,height:100,radialSegments:6,altitude:0,topColor:"",bottomColor:"#2d2f61"};class Te extends(de(m)){constructor(t,e,n,i){Array.isArray(t)||(t=[t]);const r=t.length,a=E(t),l=i.coordinateToVector3(a),c=[],u=[],d=[];let f=0;const p={},g={};let y;super(),e=o.Util.extend({},{altitude:0,layer:i,points:t},Se,e),this._initOptions(e);const x=new s.Vector3;if(e.asynchronous){y=zt();const e=o.Util.GUID();this.getOptions().id=e;const n=[];for(let e=0;e{a.push(t)}));if(a.length&&i.removeMesh(a,!1),o&&s)for(let t in e)if(!n[t])if(r[t]){const e=r[t];i.addMesh(e)}else{const{x:e,y:n,z:i}=this._getXYZOfIndex(t);this.getTileUrl(e,n,i)}this._loadTiles=Object.assign({},e),this._diffCache()}_init(){}_workerLoad(t){const e=t.target._img;e.currentCount++,e.currentCount===e.needCount&&(e.src=Ve(e._key,this._opts.debug))}_generateBaseObjects(t,e,n){if(e&&n){const{keysMap:i}=this._getCurentTileKeys();if(!i[t])return void(n.src=Ve(0,this._opts.debug));const r=this.formatBaseObjects(t,e);if(r.length){n.needCount=r.length,n.currentCount=0;for(let e=0,i=r.length;et.isAsynchronous())).forEach((t=>{t.on("workerload",this._workerLoad,this)})):n.src=Ve(0,this._opts.debug)}else n.src=Ve(0,this._opts.debug);this._loadTiles[t]=!0}else n&&(n.src=Ve(0,this._opts.debug))}_diffCache(){if(Object.keys(this._baseObjectKeys).length>this._renderer.tileCache.max){const t=this._renderer.tileCache.data,e=this._renderer.tilesInView,n=[];for(let i in this._baseObjectKeys)t[i]||e[i]||((this._baseObjectKeys[i]||[]).forEach((t=>{t.isAdd&&n.push(t)})),this._diposeBaseObject(i),delete this._baseObjectKeys[i]);n.length&&this._layer.removeMesh(n,!1)}}_diposeBaseObject(t){const e=this._baseObjectKeys[t];e&&e.length&&e.forEach((t=>{t.getObject3d().geometry.dispose(),t._geometryCache&&t._geometryCache.dispose();const e=t._baseObjects;e&&e.length&&e.forEach((t=>{t.getObject3d().geometry.dispose(),t=null})),t._datas=null,t._geometriesAttributes=null,t._faceMap=null,t._colorMap=null,t.pickObject3d&&t.pickObject3d.geometry.dispose(),t=null}))}_cachetile(t,e){this._baseObjectKeys[t]||(this._baseObjectKeys[t]=[]),this._baseObjectKeys[t].push(e)}_getXYZOfIndex(t){const e=t.indexOf("_")>-1?"_":"-";let[n,i,r]=t.split(e).slice(1,4);return{x:parseInt(i),y:parseInt(n),z:parseInt(r)}}_getTileExtent(t,e,n){const i=this.getMap()._getResolution(n);return this._getTileConfig().getTilePrjExtent(t,e,i)}_getTileLngLatExtent(t,e,n){const i=this._getTileExtent(t,e,n);let r=i.getMax(),s=i.getMin();const a=this.getMap().getProjection();return s=a.unproject(s),r=a.unproject(r),new o.Extent(s,r)}}const Ze={worker:!1};class De extends Ge{constructor(t,e={},n,i){super(o.Util.GUID(),o.Util.extend({urlTemplate:t},Ze,e)),this._opts=e,this._layer=i,this.getMaterial=n,this._baseObjectKeys={},this._loadTiles={},this._add=null,this._layerLaodTime=(new Date).getTime(),this._init()}formatBaseObjects(t,e){const n=this._opts,i=[],r=this.isAsynchronous();for(let a in e){const l=e[a]||{};let h;if(Array.isArray(l)?h=l:"FeatureCollection"===l.type&&(h=l.features),h&&h.length){const e=[],c=[],u=[];for(let t=0,n=h.length;t0&&this.getTileData(t)}_init(){this.on("layerload",this._layerOnLoad),this.on("add",(()=>{if(!1===this._add){const t=this.getBaseObjects();this._layer.addMesh(t)}this._add=!0,this.intervalId=setInterval((()=>{this._isLoad()&&!this._layer.getMap().isInteracting()&&this.fire("layerload")}),1e3)})),this.on("remove",(()=>{this._add=!1;const t=this.getBaseObjects();this._layer.removeMesh(t),clearInterval(this.intervalId)})),this.on("show",(()=>{this.getBaseObjects().forEach((t=>{t.show()}));for(let t in this._baseObjectKeys){(this._baseObjectKeys[t]||[]).forEach((t=>{t.show()}))}})),this.on("hide",(()=>{this.getBaseObjects().forEach((t=>{t.hide()}));for(let t in this._baseObjectKeys){(this._baseObjectKeys[t]||[]).forEach((t=>{t.hide()}))}})),this.on("renderercreate",(t=>{t.renderer.loadTile=function(t){var e=this.layer.getTileSize(),n=new Image;return n.width=e.width,n.height=e.height,n.onload=this.onTileLoad.bind(this,n,t),n.onerror=this.onTileError.bind(this,n,t),this.loadTileImage(n,t.url,t.id),n},t.renderer.deleteTile=function(t){if(!t||!t.image)return;t.image.onload=null,t.image.onerror=null;!function(t){const e=Ee(Be,t);e&&e(t)}((t.info||{}).id)},t.renderer.loadTileImage=(t,e,n)=>{t._key=n,function(t,e,n,i,r){const o={key:t,url:e,callback:n,img:i,vt:r};ze.length<10?(ze.push(o),r.loopMessage(o)):Be.push(o)}(n,e,((t,e,n)=>{this._generateBaseObjects(t,e,n),function(t,e){if(Ee(ze,t),Be.length){ze.push(Be[0]),Be.splice(0,1);const t=ze[ze.length-1];e.loopMessage(t)}}(t,this)}),t,this)}}))}_getMaterial(t,e,n,i){return this.getMaterial&&o.Util.isFunction(this.getMaterial)?this.getMaterial(t,e,n,i):null}}function He(t,e,n,i){const{position:r,uv:o,normal:a,indexs:h}=function(t,e,n,i){const r=t/n,o=e/i,s=-t/2,a=e/2,l=-e/2,h=(n+1)*(i+1),c=new Float32Array(3*h),u=new Float32Array(2*h),d=new Float32Array(3*h),f=new Uint32Array(10*h);let p=0,g=0,y=0;for(let h=0;h<=i;h++)for(let x=0;x<=n;x++){const v=s+r*x,m=a-o*h;c[p]=v,c[p+1]=m,c[p+2]=0,d[p]=0,d[p+1]=0,d[p+2]=1;const b=(v-s)/t,_=(m-l)/e;if(u[g]=b,u[g+1]=_,p+=3,g+=2,x{const e=i.coordinateToVector3(t),{x:n,y:r}=e;p=Math.min(n,p),g=Math.min(r,g),y=Math.max(n,y),x=Math.max(r,x)}));const v=(y-p)/h,m=(x-g)/l;p-=v,y+=v,g-=m,x+=m;const b=Math.abs(y-p),_=Math.abs(x-g),w=Ne(s),M=Ne(r),O=He(b,_,h-1,l-1);super(),this._initOptions(e),this._createMesh(O,n);const A=i.altitudeToVector3(a,a).x,j=i.coordinateToVector3(t.getCenter(),A);this.getObject3d().position.copy(j),n.transparent=!0,w&&(w.onload=()=>{Ke(w,O,i,{imageWidth:h,imageHeight:l})},w.onerror=function(){console.error(`not load ${w.src}`)}),M?(n.opacity=0,Qe.load(M.src,(t=>{n.map=t,n.opacity=1,n.needsUpdate=!0}))):n.opacity=1,this.type="Terrain"}updateData(t){return Ke(t,this.getObject3d().geometry,this.getLayer(),this.getOptions()),this}}const $e={scale:1,tileDivisor:4};class Xe extends Ge{constructor(t,e={},n,i){super(o.Util.GUID(),o.Util.extend({urlTemplate:t},$e,e)),this._opts=e,this._layer=i,this.material=n,this._baseObjectKeys={},this._loadTiles={},this._add=null,this._imgQueue={},this._layerLaodTime=(new Date).getTime(),this._init()}isAsynchronous(){return!1}formatBaseObjects(t,e){const n=this.options,i=[],{scale:r,tileDivisor:o}=n,{x:s,y:a,z:l}=this._getXYZOfIndex(t),h=this.getMap().getZoom(),c=this.getTileUrl(s,a,l),[u,d]=this.options.tileSize,f=this._getTileLngLatExtent(s,a,l),p=this.material.clone();if(l+1>=Math.round(h)){const t=new Ye(f,{image:e,imageWidth:u/o,imageHeight:d/o,texture:c},p,this._layer);t.getObject3d().scale.set(r,r,1),i.push(t)}return i}loopMessage(t){this.getTileData(t)}_init(){this.on("layerload",this._layerOnLoad),this.on("add",(()=>{if(!1===this._add){const t=this.getBaseObjects();this._layer.addMesh(t)}this._add=!0,this.intervalId=setInterval((()=>{this._isLoad()&&!this._layer.getMap().isInteracting()&&this.fire("layerload")}),1e3)})),this.on("remove",(()=>{this._add=!1;const t=this.getBaseObjects();this._layer.removeMesh(t),clearInterval(this.intervalId)})),this.on("show",(()=>{this.getBaseObjects().forEach((t=>{t.show()}));for(let t in this._baseObjectKeys){(this._baseObjectKeys[t]||[]).forEach((t=>{t.show()}))}})),this.on("hide",(()=>{this.getBaseObjects().forEach((t=>{t.hide()}));for(let t in this._baseObjectKeys){(this._baseObjectKeys[t]||[]).forEach((t=>{t.hide()}))}})),this.on("renderercreate",(t=>{t.renderer.loadTile=function(t){var e=this.layer.getTileSize(),n=new Image;return n.width=e.width,n.height=e.height,n.onload=this.onTileLoad.bind(this,n,t),n.onerror=this.onTileError.bind(this,n,t),this.loadTileImage(n,t.url,t.id),n},t.renderer.deleteTile=t=>{if(!t||!t.image)return;t.image.onload=null,t.image.onerror=null;const e=t.info||{},n=this._imgQueue[e.id];n&&(n.src="",n.onload=null,n.onerror=null,delete this._imgQueue[e.id])},t.renderer.loadTileImage=(t,e,n)=>{t._key=n;const i=new Image;this._imgQueue[n]=i;const r={key:n,url:e,rgbImage:i,callback:(t,e,n)=>{this._generateBaseObjects(t,e,n)},img:t,vt:this};this.loopMessage(r)}}))}} -/*! - * Code from baidu mapv - * License: BSD-3 - * https://github.com/huiyan-fe/mapv - * - */function tn(t){t=t||{},this.gradient=t.gradient||{.25:"rgba(0, 0, 255, 1)",.55:"rgba(0, 255, 0, 1)",.85:"rgba(255, 255, 0, 1)",1:"rgba(255, 0, 0, 1)"},this.maxSize=t.maxSize||35,this.minSize=t.minSize||0,this.max=t.max||100,this.min=t.min||0,this.initPalette()}function en(t,e,n){var i=nn(n),r=function(t){return t.min||0}(n),o=i-r,s=n.range||null,a=0,l=1024;s&&2===s.length&&(a=(s[0]-r)/o*1024),s&&2===s.length&&(l=(s[1]-r)/o*1024);for(var h,c=n.maxOpacity||.8,u=n.minOpacity||0,d=3,f=t.length;dc&&(t[d]=256*c),t[d]/256=a&&h<=l?(t[d-3]=e[h],t[d-2]=e[h+1],t[d-1]=e[h+2]):t[d]=0}function nn(t){return t.max||100}function rn(t,e,n){var i=nn(n),r= -/*! - * Code from baidu mapv - * License: BSD-3 - * https://github.com/huiyan-fe/mapv - * - */ -function(t){var e=t/2,n=t+e,i=1e4,r=Re(2*n,2*n),o=r.getContext("2d");return o.shadowBlur=e,o.shadowColor="black",o.shadowOffsetX=o.shadowOffsetY=i,o.beginPath(),o.arc(n-i,n-i,t,0,2*Math.PI,!0),o.closePath(),o.fill(),r}(n._size||n.size||13),o=r.width/2,s=r.height/2,a=e,l={};for(var h in a.forEach((function(t){var e=void 0===t.count?1:t.count,n=Math.min(1,e/i).toFixed(2);l[n]=l[n]||[],l[n].push(t)})),l)if(!isNaN(h)){var c=l[h];t.beginPath(),n.withoutAlpha||(t.globalAlpha=h),c.forEach((function(e){var n=e.coordinate,a=void 0===e.count?1:e.count;t.globalAlpha=a/i,t.drawImage(r,n[0]-o,n[1]-s)}))}}tn.prototype.setMax=function(t){this.max=t||100},tn.prototype.setMin=function(t){this.min=t||0},tn.prototype.setMaxSize=function(t){this.maxSize=t||35},tn.prototype.setMinSize=function(t){this.minSize=t||0},tn.prototype.initPalette=function(){var t=this.gradient,e=Re(256,1),n=this.paletteCtx=e.getContext("2d"),i=n.createLinearGradient(0,0,256,1);for(var r in t)i.addColorStop(parseFloat(r),t[r]);n.fillStyle=i,n.fillRect(0,0,256,1)},tn.prototype.getColor=function(t){var e=this.getImageData(t);return"rgba("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]/256+")"},tn.prototype.getImageData=function(t){var e=this.paletteCtx.getImageData(0,0,256,1).data;if(void 0===t)return e;var n=this.max,i=this.min;t>n&&(t=n),te&&(t=e),tn?r+(t-n)/(e-n)*(i-r):i},tn.prototype.getLegend=function(t){var e=this.gradient,n=t.width||20,i=t.height||180,r=Re(n,i),o=r.getContext("2d"),s=o.createLinearGradient(0,i,0,0);for(var a in e)s.addColorStop(parseFloat(a),e[a]);return o.fillStyle=s,o.fillRect(0,0,n,i),r};var on={draw:function(t,e,n){if(!(t.canvas.width<=0||t.canvas.height<=0)){var i=n.strength||.3;t.strokeStyle="rgba(0,0,0,"+i+")";var r=Re(t.canvas.width,t.canvas.height),o=r.getContext("2d");o.scale(devicePixelRatio,devicePixelRatio),n=n||{},t.save();var s=new tn({gradient:n.gradient});if(rn(o,e,n),!n.absolute){var a=o.getImageData(0,0,t.canvas.width,t.canvas.height);en(a.data,s.getImageData(),n),t.putImageData(a,0,0),t.restore()}s=null,r=null}},drawGray:rn,colorize:en};const sn={altitude:0,interactive:!1,min:0,max:100,size:13,gradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},gridScale:.5},an=2048;class ln extends m{constructor(t,e,n,i){Array.isArray(t)||(t=[t]);let r=1/0,a=1/0,c=-1/0,u=-1/0;const d=[];for(let e=0,n=t.length;ean){console.warn(`gridScale: ${f} it's too big. I hope it's a smaller value,canvas max size is 2048* 2048`);f=an/(x/f)}const v=Math.ceil(g*f),m=Math.ceil(y*f),b=v/g,_=m/y,w=[];for(let e=0,n=d.length;e0&&(L[t+2]=e/j)}if(n{t.add(this.pickObject3d)})),this.on("remove",(()=>{t.remove(this.pickObject3d)}))}_setMaterialRes(t,e){const n=t.getMap().getSize(),i=n.width,r=n.height;e.resolution.set(i,r)}_setPickObject3d(t,e){const n=new g;n.setPositions(t);const i=this.getLayer().getPick().getColor(),r=[];for(let e=0,n=t.length/3;e80*n){i=o=t[0],r=s=t[1];for(var p=n;po&&(o=a),l>s&&(s=l);h=0!==(h=Math.max(o-i,s-r))?1/h:0}return On(d,f,n,i,r,h),f}function wn(t,e,n,i,r){var o,s;if(r===Wn(t,e,n,i)>0)for(o=e;o=e;o-=i)s=Dn(o,t[o],t[o+1],s);return s&&Un(s,s.next)&&(Hn(s),s=s.next),s}function Mn(t,e){if(!t)return t;e||(e=t);var n,i=t;do{if(n=!1,i.steiner||!Un(i,i.next)&&0!==En(i.prev,i,i.next))i=i.next;else{if(Hn(i),(i=e=i.prev)===i.next)break;n=!0}}while(n||i!==e);return e}function On(t,e,n,i,r,o,s){if(t){!s&&o&&function(t,e,n,i){var r=t;do{null===r.z&&(r.z=Ln(r.x,r.y,e,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){var e,n,i,r,o,s,a,l,h=1;do{for(n=t,t=null,o=null,s=0;n;){for(s++,i=n,a=0,e=0;e0||l>0&&i;)0!==a&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,a--):(r=i,i=i.nextZ,l--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;n=i}o.nextZ=null,h*=2}while(s>1)}(r)}(t,i,r,o);for(var a,l,h=t;t.prev!==t.next;)if(a=t.prev,l=t.next,o?jn(t,i,r,o):An(t))e.push(a.i/n),e.push(t.i/n),e.push(l.i/n),Hn(t),t=l.next,h=l.next;else if((t=l)===h){s?1===s?On(t=Sn(Mn(t),e,n),e,n,i,r,o,2):2===s&&Tn(t,e,n,i,r,o):On(Mn(t),e,n,i,r,o,1);break}}}function An(t){var e=t.prev,n=t,i=t.next;if(En(e,n,i)>=0)return!1;for(var r=t.next.next;r!==t.prev;){if(zn(e.x,e.y,n.x,n.y,i.x,i.y,r.x,r.y)&&En(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function jn(t,e,n,i){var r=t.prev,o=t,s=t.next;if(En(r,o,s)>=0)return!1;for(var a=r.xo.x?r.x>s.x?r.x:s.x:o.x>s.x?o.x:s.x,c=r.y>o.y?r.y>s.y?r.y:s.y:o.y>s.y?o.y:s.y,u=Ln(a,l,e,n,i),d=Ln(h,c,e,n,i),f=t.prevZ,p=t.nextZ;f&&f.z>=u&&p&&p.z<=d;){if(f!==t.prev&&f!==t.next&&zn(r.x,r.y,o.x,o.y,s.x,s.y,f.x,f.y)&&En(f.prev,f,f.next)>=0)return!1;if(f=f.prevZ,p!==t.prev&&p!==t.next&&zn(r.x,r.y,o.x,o.y,s.x,s.y,p.x,p.y)&&En(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;f&&f.z>=u;){if(f!==t.prev&&f!==t.next&&zn(r.x,r.y,o.x,o.y,s.x,s.y,f.x,f.y)&&En(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;p&&p.z<=d;){if(p!==t.prev&&p!==t.next&&zn(r.x,r.y,o.x,o.y,s.x,s.y,p.x,p.y)&&En(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function Sn(t,e,n){var i=t;do{var r=i.prev,o=i.next.next;!Un(r,o)&&Fn(r,i,i.next,o)&&Gn(r,o)&&Gn(o,r)&&(e.push(r.i/n),e.push(i.i/n),e.push(o.i/n),Hn(i),Hn(i.next),i=t=o),i=i.next}while(i!==t);return Mn(i)}function Tn(t,e,n,i,r,o){var s=t;do{for(var a=s.next.next;a!==s.prev;){if(s.i!==a.i&&In(s,a)){var l=Zn(s,a);return s=Mn(s,s.next),l=Mn(l,l.next),On(s,e,n,i,r,o),void On(l,e,n,i,r,o)}a=a.next}s=s.next}while(s!==t)}function Cn(t,e){return t.x-e.x}function kn(t,e){var n=function(t,e){var n,i=e,r=t.x,o=t.y,s=-1/0;do{if(o<=i.y&&o>=i.next.y&&i.next.y!==i.y){var a=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(a<=r&&a>s){if(s=a,a===r){if(o===i.y)return i;if(o===i.next.y)return i.next}n=i.x=i.x&&i.x>=c&&r!==i.x&&zn(on.x||i.x===n.x&&Pn(n,i)))&&(n=i,d=l)),i=i.next}while(i!==h);return n}(t,e);if(!n)return e;var i=Zn(n,t),r=Mn(n,n.next);return Mn(i,i.next),e===n?r:e}function Pn(t,e){return En(t.prev,t,e.prev)<0&&En(e.next,t,t.next)<0}function Ln(t,e,n,i,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Bn(t){var e=t,n=t;do{(e.x=0&&(t-s)*(i-a)-(n-s)*(e-a)>=0&&(n-s)*(o-a)-(r-s)*(i-a)>=0}function In(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&Fn(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(Gn(t,e)&&Gn(e,t)&&function(t,e){var n=t,i=!1,r=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&r<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==t);return i}(t,e)&&(En(t.prev,t,e.prev)||En(t,e.prev,e))||Un(t,e)&&En(t.prev,t,t.next)>0&&En(e.prev,e,e.next)>0)}function En(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function Un(t,e){return t.x===e.x&&t.y===e.y}function Fn(t,e,n,i){var r=Rn(En(t,e,n)),o=Rn(En(t,e,i)),s=Rn(En(n,i,t)),a=Rn(En(n,i,e));return r!==o&&s!==a||(!(0!==r||!Vn(t,n,e))||(!(0!==o||!Vn(t,i,e))||(!(0!==s||!Vn(n,t,i))||!(0!==a||!Vn(n,e,i)))))}function Vn(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function Rn(t){return t>0?1:t<0?-1:0}function Gn(t,e){return En(t.prev,t,t.next)<0?En(t,e,t.next)>=0&&En(t,t.prev,e)>=0:En(t,e,t.prev)<0||En(t,t.next,e)<0}function Zn(t,e){var n=new Qn(t.i,t.x,t.y),i=new Qn(e.i,e.x,e.y),r=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=r,r.prev=n,i.next=n,n.prev=i,o.next=i,i.prev=o,i}function Dn(t,e,n,i){var r=new Qn(t,e,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Hn(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Qn(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Wn(t,e,n,i){for(var r=0,o=e,s=n-i;o0&&(i+=t[r-1].length,n.holes.push(i))}return n};var Nn=bn.exports;function qn(t,e,n){var i=e[0],r=e[1],o=n[0]-i,s=n[1]-r;if(0!==o||0!==s){var a=((t[0]-i)*o+(t[1]-r)*s)/(o*o+s*s);a>1?(i=n[0],r=n[1]):a>0&&(i+=o*a,r+=s*a)}return(o=t[0]-i)*o+(s=t[1]-r)*s}function Kn(t,e,n,i,r){for(var o,s=i,a=e+1;as&&(o=a,s=l)}s>i&&(o-e>1&&Kn(t,e,o,i,r),r.push(t[o]),n-o>1&&Kn(t,o,n,i,r))}function Jn(t,e){var n=t.length-1,i=[t[0]];return Kn(t,0,n,e,i),i.push(t[n]),i}function Yn(t,e,n){if(t.length<=2)return t;var i=void 0!==e?e*e:1;return t=n?t:function(t,e){for(var n,i,r,o,s,a=t[0],l=[a],h=1,c=t.length;he&&(l.push(n),a=n);return a!==n&&l.push(n),l}(t,i),t=Jn(t,i)}function $n(t,e){return t[0]*e[0]+t[1]*e[1]}function Xn(t,e){const n=e[0],i=e[1],r=Math.sqrt(n*n+i*i);return t[0]=n/r,t[1]=i/r,t}function ti(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t[2]=e[2]+n[2]*i,t}function ei(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function ni(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function ii(t,e){const n=e[0],i=e[1],r=e[2],o=Math.sqrt(n*n+i*i+r*r);return t[0]=n/o,t[1]=i/o,t[2]=r/o,t}function ri(t,e,n){var i=e[0],r=e[1],o=e[2],s=n[0],a=n[1],l=n[2];return t[0]=r*l-o*a,t[1]=o*s-i*l,t[2]=i*a-r*s,t}const oi=[];function si(t,e,n,i){const r=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}(e,n),o=Math.acos(r)*i;return ti(oi,n,e,-r),function(t,e){const n=e[0],i=e[1],r=e[2],o=Math.sqrt(n*n+i*i+r*r);t[0]=n/o,t[1]=i/o,t[2]=r/o}(oi,oi),function(t,e,n){t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n}(t,e,Math.cos(o)),ti(t,t,oi,Math.sin(o)),t}function ai(t,e,n,i,r,o,s,a,l,h){const c=s-r,u=a-o,d=(c*(e-o)-u*(t-r))/(u*(n-t)-c*(i-e));return l&&(l[h=h||0]=t+d*(n-t),l[h+1]=e+d*(i-e)),d}function li(t,e,n){if(n-e<3)return 0;let i=0;for(let r=2*(n-1),o=2*e;o<2*n;){const e=t[r],n=t[r+1],s=t[o],a=t[o+1];r=o,o+=2,i+=e*a-s*n}return i}function hi(t,e,n=2){return Nn(t,e,n)}const ci=[],ui=[],di=[];function fi(t,e,n,i,r,o,s,a,l){const h=null!=s;let c,u,d,f=r,p=null;h&&(p=new Uint32Array(i-n));let g=[];for(let r=n;rs&&a){const t=b+di[0]*o,n=_+di[1]*o,r=Math.acos(i)/2,s=Math.tan(r)*Math.abs(o);e[2*f]=t+di[1]*s,e[2*f+1]=n-di[0]*s,f++,e[2*f]=t-di[1]*s,e[2*f+1]=n+di[0]*s,f++}else O=b+di[0]*r,A=_+di[1]*r,j=!0;if(j){if(l&&null!=c){const t=ai(v,m,c,u,b,_,O,A,g,0);t>=-.01&&t<=1.01&&(e[2*d]=O=g[0],e[2*d+1]=A=g[1])}c=e[2*f]=O,u=e[2*f+1]=A,d=f,f++}}else di[0]=ci[1],di[1]=-ci[0],Xn(di,di),O=b+di[0]*o,A=_+di[1]*o,j=!0;else di[0]=ui[1],di[1]=-ui[0],Xn(di,di),c=e[2*f]=b+di[0]*o,u=e[2*f+1]=_+di[1]*o,d=f,f++}return p}function pi(t,e,n,i,r,o,s,a){const l=null!=s;let h=r,c=null;l&&(c=new Uint32Array(i-n));for(let r=n;rs&&a){const t=g+di[0]*o,n=y+di[1]*o,r=Math.acos(i)/2,s=Math.tan(r)*Math.abs(o);e[2*h]=t+di[1]*s,e[2*h+1]=n-di[0]*s,h++,e[2*h]=t-di[1]*s,e[2*h+1]=n+di[0]*s,h++}else e[2*h]=g+di[0]*r,e[2*h+1]=y+di[1]*r,h++}else di[0]=ci[1],di[1]=-ci[0],Xn(di,di),e[2*h]=g+di[0]*o,e[2*h+1]=y+di[1]*o,h++;else di[0]=ui[1],di[1]=-ui[0],Xn(di,di),e[2*h]=g+di[0]*o,e[2*h+1]=y+di[1]*o,h++}return c}function gi(t,e,n,i,r){const o=null!=i?[]:new Float32Array(t.length);if(fi(t,o,0,e&&e.length?e[0]:t.length/2,0,n,i,r,!0),e)for(let s=0;s0&&yi(t,2,i,r);for(let o=1;o<(e?e.length:0)+1;o++)i=e[o-1],r=e[o]||n,li(t,i,r)<0&&yi(t,2,i,r)}function vi(t){t.depth=t.depth||1,t.bevelSize=t.bevelSize||0,t.bevelSegments=null==t.bevelSegments?2:t.bevelSegments,t.smoothBevel=t.smoothBevel||!1,t.simplify=t.simplify||0,null==t.smoothSide&&(t.smoothSide="auto"),null==t.smoothSideThreshold&&(t.smoothSideThreshold=.9),"number"==typeof t.depth&&(t.bevelSize=Math.min(t.bevelSegments>0?t.bevelSize:0,t.depth/2)),t.bevelSize>0||(t.bevelSegments=0),t.bevelSegments=Math.round(t.bevelSegments);const e=t.boundingRect;if(t.translate=t.translate||[0,0],t.scale=t.scale||[1,1],t.fitRect){let n=null==t.fitRect.x?e.x||0:t.fitRect.x,i=null==t.fitRect.y?e.y||0:t.fitRect.y,r=t.fitRect.width,o=t.fitRect.height;null==r?null!=o?r=o/e.height*e.width:(r=e.width,o=e.height):null==o&&(o=r/e.width*e.height),t.scale=[r/e.width,o/e.height],t.translate=[(n-e.x)*t.scale[0],(i-e.y)*t.scale[1]]}}const mi=[[0,0],[1,0],[1,1],[0,0],[1,1],[0,1]];function bi(t,e,n){let i=0,r=t[e],o=t[e+1];const s=r,a=o;for(let s=e+2;s0){const o=[0,0,1],a=[],h=[0,0,-1],g=[];let v=0,m=new Float32Array(c);for(let b=0;b<2;b++){const _=0===b?r-d:d;for(let r=0;r<=f*u;r++){let w,M,O=0;for(let A=0;A0&&(O+=Math.sqrt((w-z)*(w-z)+(M-I)*(M-I))),r>0||b>0){let e=3*(l.vertex-c),n=t.position[e],i=t.position[e+1],r=t.position[e+2];m[A]+=Math.sqrt((n-z)*(n-z)+(i-I)*(i-I)+(r-E)*(r-E))}if(t.uv[2*l.vertex]=O/y,t.uv[2*l.vertex+1]=m[A]/y,w=z,M=I,l.vertex++,!x(A)&&(u>1&&r%u||1===u&&r>=1))for(let e=0;e<6;e++){const n=(mi[e][0]+A)%c,i=mi[e][1]+v;t.indices[l.index++]=(i-1)*c+n+p}}v++}}}else for(let n=0;n<2;n++){const i=0===n?r-d:d;let o,a,h=0;for(let n=0;n0&&(h+=Math.sqrt((o-u)*(o-u)+(a-d)*(a-d))),t.uv[2*l.vertex]=h/y,t.uv[2*l.vertex+1]=i/y,o=u,a=d,l.vertex++}}const v=d>0?f*u+1:1;for(let e=0;ei?(o.push(n,s),c.push(e)):(o.push(n,s,n,s),c.push(e,e))}else o.push(n,s,n,s),c.push(e,e)}n0?e.bevelSegments:0,u=t[r].holes||[];n+=o.length*(e.excludeBottom?1:2),i+=l.length/2*(e.excludeBottom?1:2);const d=2+2*c;let f=0,p=0;for(let t=0;t65535?Uint32Array:Uint16Array)(n),uv:new Float32Array(2*i)},o={vertex:0,index:0,ringPerimeter:0};for(let n=0;n0&&Math.round(e)===e?r.uv[t]=1:r.uv[t]=e%1}return r.normal=function(t,e){function n(t,e,n,i){t[0]=e,t[1]=n,t[2]=i}const i=[],r=[],o=[],s=[],a=[],l=[],h=t.length,c=new Float32Array(e.length);for(let u=0;u65535?Uint32Array:Uint16Array)(3*(2*(r-1)+(f-2*r)));let v=0;for(let t=0;t0?gi(p,[],n.bevelSize,null,!0):p,b=n.boundingRect,_=Mi(p,null,n.smoothSide,n.smoothSideThreshold);return{vertices:_.vertices,rawVertices:m,splittedMap:_.splittedMap,indices:x,topVertices:m,rect:{x:b.x*a[0]+s[0],y:b.y*a[1]+s[1],width:b.width*a[0],height:b.height*a[1]},depth:"function"==typeof n.depth?n.depth(e):n.depth,holes:[]}}function ji(t,e){const n=[];for(let i=0;ie&&(o.push(r[t]),h=0),a=n,l=i}o.length>=3&&n.push(o)}return n.length>0?n:null}function Si(t,e){const n=[];for(let i=0;i=3&&n.push(r)}return n.length>0?n:null}function Ti(t,e){e=Object.assign({},e);const n=[1/0,1/0],i=[-1/0,-1/0];for(let e=0;e0&&(i=Si(i,a)),!i)continue;const{vertices:c,holes:u,dimensions:d}=Nn.flatten(i);for(let t=0;t0?gi(c,u,e.bevelSize,null,!0):c,p=hi(f,u,d),g=Mi(c,u,e.smoothSide,e.smoothSideThreshold);r.push({indices:p,vertices:g.vertices,rawVertices:c,topVertices:f,holes:g.holes,splittedMap:g.splittedMap,rect:l,depth:"function"==typeof e.depth?e.depth(n):e.depth})}return Oi(r,e)}function Ci(t,e){e=Object.assign({},e);const n=[1/0,1/0],i=[-1/0,-1/0];for(let e=0;e0&&(i=Yn(i,s,!0)),o.push(Ai(i,n,e))}return Oi(o,e)}function ki(t,e,n){for(let i=0;i0&&(n=-n),i?(i.x=n,i.y=n,i.z=0,i):new s.Vector3(n,n,0)}return this.distanceToVector3(t,t,n)}toShape(t){if(!t)return null;if(t instanceof o.MultiPolygon)return t.getGeometries().map((t=>this.toShape(t)));const e=t.getCenter(),n=this.coordinateToVector3(e),i=t.getShell().map((t=>{const e=this.coordinateToVector3(t).sub(n);return new s.Vector2(e.x,e.y)})),r=new s.Shape(i),a=t.getHoles();return a&&a.length>0&&(r.holes=a.map((t=>{const e=t.map((t=>{const e=this.coordinateToVector3(t).sub(n);return new s.Vector2(e.x,e.y)}));return new s.Shape(e)}))),r}toExtrudeMesh(t,e,n,i){if(!t)return null;if(t instanceof o.MultiPolygon)return t.getGeometries().map((t=>this.toExtrudeMesh(t,e,n,i)));const r=t.getCoordinates();r.forEach((t=>{for(let e=t.length-1;e>=1;e--)t[e].equals(t[e-1])&&t.splice(e,1)})),t.setCoordinates(r);const a=this.toShape(t),l=this.coordinateToVector3(t.getCenter());i=o.Util.isNumber(i)?i:e,i=this.altitudeToVector3(i,i).x;const h=this.altitudeToVector3(e,e).x,c={bevelEnabled:!1,bevelSize:1};c[parseInt(s.REVISION)>=93?"depth":"amount"]=i;const u=new s.ExtrudeGeometry(a,c);let d=u;s.BufferGeometry.prototype.fromGeometry&&(d=new s.BufferGeometry,d.fromGeometry(u));const f=new s.Mesh(d,n);return f.position.set(l.x,l.y,h-i),f}toExtrudePolygon(t,e,n){return new Yt(t,e,n,this)}toBar(t,e,n){return new Ht(t,e,n,this)}toLine(t,e,n){return new Nt(t,e,n,this)}toExtrudeLine(t,e,n){return new Kt(t,e,n,this)}toModel(t,e){return new Xt(t,e,this)}toExtrudeLineTrail(t,e,n){return new he(t,e,n,this)}toExtrudePolygons(t,e,n){return new ge(t,e,n,this)}toPoint(t,e,n){return new be(t,e,n,this)}toPoints(t,e,n){return new je(t,e,n,this)}toBars(t,e,n){return new Te(t,e,n,this)}toExtrudeLines(t,e,n){return new ke(t,e,n,this)}toLines(t,e,n){return new Le(t,e,n,this)}toThreeVectorTileLayer(t,e,n){return new De(t,e,n,this)}toTerrain(t,e,n){return new Ye(t,e,n,this)}toTerrainVectorTileLayer(t,e,n){return new Xe(t,e,n,this)}toHeatMap(t,e,n){return new ln(t,e,n,this)}toFatLine(t,e,n){return new fn(t,e,n,this)}toFatLines(t,e,n){return new gn(t,e,n,this)}toBox(t,e,n){return new xn(t,e,n,this)}toBoxs(t,e,n){return new mn(t,e,n,this)}getBaseObjects(){return this.getMeshes().filter((t=>t instanceof m))}getMeshes(){const t=this.getScene();if(!t)return[];const e=[];for(let n=0,i=t.children.length;n=0;e--){const n=t.children[e];if(n instanceof s.Object3D&&!(n instanceof s.Camera)){t.remove(n);const e=n.__parent;e&&e instanceof m&&(e.isAdd=!1,e.options.layer=null,e._fire("remove",{target:e}),delete this._animationBaseObjectMap[n.uuid],e._hideUI())}}return this}lookAt(t){const e=this._getRenderer();return e&&e.context.lookAt(t),this}getCamera(){const t=this._getRenderer();return t?t.camera:null}getScene(){const t=this._getRenderer();return t?t.scene:null}renderScene(t,e){const n=this._getRenderer();return n&&(n.clearCanvas(),n.renderScene(t),e||n.setToRedraw()),this}loop(t=!1){const e=this._delayMeshes;if(!e.length)return;const n=this.getMap();if(!n||n.isAnimating()||n.isInteracting())return;const i=this.options.loopRenderCount||50,r=e.slice(0,i);r&&this.addMesh(r,t),e.splice(0,i)}renderPickScene(){const t=this._getRenderer();if(t){const e=t.pick;e&&e.pick(this._containerPoint)}return this}getThreeRenderer(){const t=this._getRenderer();return t?t.context:null}getPick(){const t=this._getRenderer();return t?t.pick:null}delayAddMesh(t){if(!t)return this;Array.isArray(t)||(t=[t]);for(let e=0,n=t.length;e{t instanceof m?(n.add(t.getObject3d()),t.isAdd||(t.isAdd=!0,t.options.layer=this,t._fire("add",{target:t})),t._animation&&o.Util.isFunction(t._animation)&&(this._animationBaseObjectMap[t.getObject3d().uuid]=t)):t instanceof s.Object3D&&n.add(t)})),this._zoomend(),e){const t=this._getRenderer();t&&t.setToRedraw()}return this}removeMesh(t,e=!0){if(!t)return this;Array.isArray(t)||(t=[t]);const n=this.getScene();if(t.forEach((t=>{if(t instanceof m){n.remove(t.getObject3d()),t.isAdd&&(t.isAdd=!1,t.options.layer=null,t._fire("remove",{target:t}),t._hideUI()),t._animation&&o.Util.isFunction(t._animation)&&delete this._animationBaseObjectMap[t.getObject3d().uuid];const e=this._delayMeshes;if(e.length)for(let n=0,i=e.length;n113?t.params.Line.threshold=e:t.linePrecision=e}(l,this._getLinePrecision(this.getMap().getResolution()));const g=[],y=[];u.children.forEach((t=>{const e=t.__parent;if(e&&e.getOptions){const n=e;n.getOptions().interactive&&n.isVisible()&&(n.identify&&o.Util.isFunction(n.identify)?y.push(n):g.push(t))}else(t instanceof s.Mesh||t instanceof s.Group)&&g.push(t)}));let x=[];const v=l.intersectObjects(g,!0);v&&Array.isArray(v)&&v.length&&(x=v.map((t=>{let e=t.object;const n=t.instanceId;e=this._recursionMesh(e)||{};const i=e.__parent||e;return i.faceIndex=t.faceIndex,i.index=t.index,i.intersect=t,o.Util.isNumber(n)&&(i.instanceId=n),i}))),this.renderPickScene(),y.length&&y.forEach((e=>{e.identify(t)&&x.push(e)}));const m=x.length;for(let t=0;t0?x.slice(0,b):x}_recursionMesh(t){for(;t&&t.parent!==this.getScene();)t=t.parent;return t}_getLinePrecision(t=10){for(let e=0,n=Ii.length;en)return i}return.01}_identifyBaseObjectEvents(t){if(!this.options.geometryEvents)return this;const e=this.map||this.getMap();if(e.isInteracting()||!e.options.geometryEvents||e._ignoreEvent(t))return this;const n=t.type,i=e._getEventParams?e._getEventParams(t):this._getEventParams(t);i.type=n;const{type:r,coordinate:s}=i,a=o.Util.now();if(this._mousemoveTimeOut&&"mousemove"===r&&a-this._mousemoveTimeOut<64)return this;this._mousemoveTimeOut=a,"mousedown"!==r&&"touchstart"!==r||(this._mousedownTime=o.Util.now());let l=!1;if("click"===r||"touchend"===r){const t=e.options.clickTimeThreshold||280;l=o.Util.now()-this._mousedownTime{const e=[];this._baseObjects&&this._baseObjects.forEach((n=>{let i=!0;t.forEach((t=>{n===t&&(i=!1)})),i&&e.push(n)})),e.forEach((t=>{t&&t instanceof m&&(t.getSelectMesh?t.isHide||(t._mouseover=!1,t.fire("mouseout",Object.assign({},i,{target:t,type:"mouseout",selectMesh:null})),t.closeToolTip()):(t._mouseover=!1,t.fire("mouseout",Object.assign({},i,{target:t,type:"mouseout"})),t.closeToolTip()))}))};if("mouseout"===r)return u([]),this._baseObjects=[],this;const d=this.identify(s,{count:c}),f=this.getScene();if(0===d.length&&f)for(let t=0,e=f.children.length;t{if(t instanceof m){t._mouseover||(t.fire("mouseover",Object.assign({},i,{target:t,type:"mouseover",selectMesh:t.getSelectMesh?t.getSelectMesh():null})),t._mouseover=!0,p(t,"mouseover")),t.fire(r,Object.assign({},i,{target:t,selectMesh:t.getSelectMesh?t.getSelectMesh():null}));const e=t.getToolTip();e&&!e._owner&&e.addTo(t),t.openToolTip(s),p(t)}})),this._baseObjects=d):d.forEach((t=>{t instanceof m&&(t.fire(r,Object.assign({},i,{target:t,selectMesh:t.getSelectMesh?t.getSelectMesh():null})),p(t))})),"touchend"===r&&l){const e=o.Util.extend({},i,{domEvent:t});d.forEach((t=>{t instanceof m&&(t.fire("click",Object.assign({},e,{target:t,selectMesh:t.getSelectMesh?t.getSelectMesh():null})),p(t,"click"))}))}return this}_getEventParams(t){const e=this.getMap(),n={domEvent:t};if(!e)return n;const i=t.touches&&t.touches.length>0?t.touches[0]:t.changedTouches&&t.changedTouches.length>0?t.changedTouches[0]:t;if(i){const t=(0,o.DomUtil.getEventContainerPoint)(i,e._containerDOM);n.coordinate=e.containerPointToCoordinate(t),n.containerPoint=t,n.viewPoint=e.containerPointToViewPoint(t),n.pont2d=e._containerPointToPoint(t)}return n}_zoomend(){const t=this.getScene();if(!t)return;const e=this.getMap().getZoom();t.children.forEach((t=>{const n=t.__parent;if(n&&n.getOptions){const t=n;t.zoomChange&&o.Util.isFunction(t.zoomChange)&&t.zoomChange(e);const i=t.getMinZoom(),r=t.getMaxZoom();er?(t.isVisible()&&(t.getObject3d().visible=!1),t._zoomVisible=!1):i<=e&&e<=r&&(t._visible&&(t.getObject3d().visible=!0),t._zoomVisible=!0)}}))}_getGeometryEventMapPanel(){const t=this.map||this.getMap();return t._panels.allLayers||t._containerDOM}onAdd(){super.onAdd();const t=this.map||this.getMap();if(!t)return this;const e=this._getGeometryEventMapPanel();return this._identifyBaseObjectEventsThis||(this._identifyBaseObjectEventsThis=this._identifyBaseObjectEvents.bind(this)),this._zoomendThis||(this._zoomendThis=this._zoomend.bind(this)),o.DomUtil.on(e,Ei.join(" "),this._identifyBaseObjectEventsThis,this),this._needsUpdate=!0,this._animationBaseObjectMap||(this._animationBaseObjectMap={}),t.on("zooming zoomend",this._zoomendThis,this),this}onRemove(){super.onRemove();const t=this.map||this.getMap();if(!t)return this;const e=this._getGeometryEventMapPanel();return o.DomUtil.off(e,Ei.join(" "),this._identifyBaseObjectEventsThis,this),t.off("zooming zoomend",this._zoomendThis,this),this.clear(),this}_callbackBaseObjectAnimation(){const t=this;if(t._animationBaseObjectMap)for(const e in t._animationBaseObjectMap){t._animationBaseObjectMap[e]._animation()}return this}_getFovRatio(){const t=this.getMap().getFov();return Math.tan(t/2*zi)}}Ri.mergeOptions({renderer:"gl",doubleBuffer:!1,glOptions:null,geometryEvents:!0,identifyCountOnEvent:0,forceRenderOnZooming:!0,loopRenderCount:50});const Gi={bloom:!0};class Zi extends o.renderer.CanvasLayerRenderer{constructor(){super(...arguments),this._renderTime=0,this._renderTarget=null}getPrepareParams(){return[this.scene,this.camera]}getDrawParams(){return[this.scene,this.camera]}_drawLayer(){super._drawLayer.apply(this,arguments)}hitDetect(){return!1}createCanvas(){super.createCanvas(),this.createContext()}createContext(){if(this.canvas.gl&&this.canvas.gl.wrap)this.gl=this.canvas.gl.wrap();else{const t=this.layer.options.glOptions||{alpha:!0,depth:!0,antialias:!0,stencil:!0,preserveDrawingBuffer:!1};t.preserveDrawingBuffer=!0,this.gl=this.gl||this._createGLContext(this.canvas,t)}this._initThreeRenderer(),this.layer.onCanvasCreate(this.context,this.scene,this.camera)}_initThreeRenderer(){this.matrix4=new s.Matrix4;const t=new s.WebGLRenderer({context:this.gl,alpha:!0});t.autoClear=!1,t.setClearColor(new s.Color(1,1,1),0),t.setSize(this.canvas.width,this.canvas.height),t.clear(),this.context=t;const e=this.scene=new s.Scene,n=this.layer.getMap(),i=n.getFov()*Math.PI/180,r=this.camera=new s.PerspectiveCamera(i,n.width/n.height,n.cameraNear,n.cameraFar);r.matrixAutoUpdate=!1,this._syncCamera(),e.add(r),this.pick=new un(this.layer),St.star()}onCanvasCreate(){super.onCanvasCreate()}resizeCanvas(t){if(!this.canvas)return;let e,n=this.getMap();e=t||n.getSize();const i=n.getDevicePixelRatio?n.getDevicePixelRatio():o.Browser.retina?2:1,r=this.canvas,{width:s,height:a,cssWidth:l,cssHeight:h}=o.Util.calCanvasSize(e,i);if(!this.layer._canvas||r.style.width===l&&r.style.height===h||(r.style.width=l,r.style.height=h),r.width===s&&r.height===a)return this;r.width=s,r.height=a,this.context.setSize(r.width,r.height)}clearCanvas(){this.canvas&&this.context.clear()}prepareCanvas(){return this.canvas?this.clearCanvas():this.createCanvas(),this.layer.fire("renderstart",{context:this.context}),null}renderScene(t){if(this.layer._callbackBaseObjectAnimation(),this._syncCamera(),t&&t.renderTarget){const{width:e,height:n}=t.renderTarget.fbo;this._renderTarget?(this._renderTarget.viewport.set(0,0,e,n),this._renderTarget.scissor.set(0,0,e,n)):(this._renderTarget=new s.WebGLRenderTarget(e,n,{depthBuffer:!1}),this.context.setRenderTarget(this._renderTarget),this.context.render(this.scene,this.camera));const i=this.context.properties.get(this._renderTarget),r=i[Vi];i[Vi]=t.renderTarget.getFramebuffer(t.renderTarget.fbo),this.context.setRenderTarget(this._renderTarget);const o=1===t.bloom&&t.sceneFilter,a=this.scene.children||[];let l=!1;if(o){const e=t.sceneFilter;l=e(Gi);for(let t=0,n=a.length;t80*r){i=u=n[0],o=v=n[1];for(var m=r;mu&&(u=s),l>v&&(v=l);x=0!==(x=Math.max(u-i,v-o))?32767/x:0}return a(g,y,r,i,o,x,0),y}function e(n,t,r,e,i){var a,o;if(i===z(n,t,r,e)>0)for(a=t;a=t;a-=e)o=Z(a,n[a],n[a+1],o);return o&&y(o,o.next)&&(F(o),o=o.next),o}function i(n,t){if(!n)return n;t||(t=n);var r,e=n;do{if(r=!1,e.steiner||!y(e,e.next)&&0!==g(e.prev,e,e.next))e=e.next;else{if(F(e),(e=t=e.prev)===e.next)break;r=!0}}while(r||e!==t);return t}function a(n,t,r,e,h,f,l){if(n){!l&&f&&function(n,t,r,e){var i=n;do{0===i.z&&(i.z=x(i.x,i.y,t,r,e)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==n);i.prevZ.nextZ=null,i.prevZ=null,function(n){var t,r,e,i,a,o,u,v,s=1;do{for(r=n,n=null,a=null,o=0;r;){for(o++,e=r,u=0,t=0;t0||v>0&&e;)0!==u&&(0===v||!e||r.z<=e.z)?(i=r,r=r.nextZ,u--):(i=e,e=e.nextZ,v--),a?a.nextZ=i:n=i,i.prevZ=a,a=i;r=e}a.nextZ=null,s*=2}while(o>1)}(i)}(n,e,h,f);for(var p,c,d=n;n.prev!==n.next;)if(p=n.prev,c=n.next,f?u(n,e,h,f):o(n))t.push(p.i/r|0),t.push(n.i/r|0),t.push(c.i/r|0),F(n),n=c.next,d=c.next;else if((n=c)===d){l?1===l?a(n=v(i(n),t,r),t,r,e,h,f,2):2===l&&s(n,t,r,e,h,f):a(i(n),t,r,e,h,f,1);break}}}function o(n){var t=n.prev,r=n,e=n.next;if(g(t,r,e)>=0)return!1;for(var i=t.x,a=r.x,o=e.x,u=t.y,v=r.y,s=e.y,h=ia?i>o?i:o:a>o?a:o,x=u>v?u>s?u:s:v>s?v:s,p=e.next;p!==t;){if(p.x>=h&&p.x<=l&&p.y>=f&&p.y<=x&&c(i,u,a,v,o,s,p.x,p.y)&&g(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function u(n,t,r,e){var i=n.prev,a=n,o=n.next;if(g(i,a,o)>=0)return!1;for(var u=i.x,v=a.x,s=o.x,h=i.y,f=a.y,l=o.y,p=uv?u>s?u:s:v>s?v:s,m=h>f?h>l?h:l:f>l?f:l,w=x(p,d,t,r,e),M=x(y,m,t,r,e),b=n.prevZ,A=n.nextZ;b&&b.z>=w&&A&&A.z<=M;){if(b.x>=p&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==o&&c(u,h,v,f,s,l,b.x,b.y)&&g(b.prev,b,b.next)>=0)return!1;if(b=b.prevZ,A.x>=p&&A.x<=y&&A.y>=d&&A.y<=m&&A!==i&&A!==o&&c(u,h,v,f,s,l,A.x,A.y)&&g(A.prev,A,A.next)>=0)return!1;A=A.nextZ}for(;b&&b.z>=w;){if(b.x>=p&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==o&&c(u,h,v,f,s,l,b.x,b.y)&&g(b.prev,b,b.next)>=0)return!1;b=b.prevZ}for(;A&&A.z<=M;){if(A.x>=p&&A.x<=y&&A.y>=d&&A.y<=m&&A!==i&&A!==o&&c(u,h,v,f,s,l,A.x,A.y)&&g(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}function v(n,t,r){var e=n;do{var a=e.prev,o=e.next.next;!y(a,o)&&m(a,e,e.next,o)&&b(a,o)&&b(o,a)&&(t.push(a.i/r|0),t.push(e.i/r|0),t.push(o.i/r|0),F(e),F(e.next),e=n=o),e=e.next}while(e!==n);return i(e)}function s(n,t,r,e,o,u){var v=n;do{for(var s=v.next.next;s!==v.prev;){if(v.i!==s.i&&d(v,s)){var h=A(v,s);return v=i(v,v.next),h=i(h,h.next),a(v,t,r,e,o,u,0),void a(h,t,r,e,o,u,0)}s=s.next}v=v.next}while(v!==n)}function h(n,t){return n.x-t.x}function f(n,t){var r=function(n,t){var r,e=t,i=n.x,a=n.y,o=-1/0;do{if(a<=e.y&&a>=e.next.y&&e.next.y!==e.y){var u=e.x+(a-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(u<=i&&u>o&&(o=u,r=e.x=e.x&&e.x>=h&&i!==e.x&&c(ar.x||e.x===r.x&&l(r,e)))&&(r=e,x=v)),e=e.next}while(e!==s);return r}(n,t);if(!r)return t;var e=A(r,n);return i(e,e.next),i(r,r.next)}function l(n,t){return g(n.prev,n,t.prev)<0&&g(t.next,n,n.next)<0}function x(n,t,r,e,i){return(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n=(n-r)*i|0)|n<<8))|n<<4))|n<<2))|n<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-e)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function p(n){var t=n,r=n;do{(t.x=(n-o)*(a-u)&&(n-o)*(e-u)>=(r-o)*(t-u)&&(r-o)*(a-u)>=(i-o)*(e-u)}function d(n,t){return n.next.i!==t.i&&n.prev.i!==t.i&&!function(n,t){var r=n;do{if(r.i!==n.i&&r.next.i!==n.i&&r.i!==t.i&&r.next.i!==t.i&&m(r,r.next,n,t))return!0;r=r.next}while(r!==n);return!1}(n,t)&&(b(n,t)&&b(t,n)&&function(n,t){var r=n,e=!1,i=(n.x+t.x)/2,a=(n.y+t.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(e=!e),r=r.next}while(r!==n);return e}(n,t)&&(g(n.prev,n,t.prev)||g(n,t.prev,t))||y(n,t)&&g(n.prev,n,n.next)>0&&g(t.prev,t,t.next)>0)}function g(n,t,r){return(t.y-n.y)*(r.x-t.x)-(t.x-n.x)*(r.y-t.y)}function y(n,t){return n.x===t.x&&n.y===t.y}function m(n,t,r,e){var i=M(g(n,t,r)),a=M(g(n,t,e)),o=M(g(r,e,n)),u=M(g(r,e,t));return i!==a&&o!==u||(!(0!==i||!w(n,r,t))||(!(0!==a||!w(n,e,t))||(!(0!==o||!w(r,n,e))||!(0!==u||!w(r,t,e)))))}function w(n,t,r){return t.x<=Math.max(n.x,r.x)&&t.x>=Math.min(n.x,r.x)&&t.y<=Math.max(n.y,r.y)&&t.y>=Math.min(n.y,r.y)}function M(n){return n>0?1:n<0?-1:0}function b(n,t){return g(n.prev,n,n.next)<0?g(n,t,n.next)>=0&&g(n,n.prev,t)>=0:g(n,t,n.prev)<0||g(n,n.next,t)<0}function A(n,t){var r=new P(n.i,n.x,n.y),e=new P(t.i,t.x,t.y),i=n.next,a=t.prev;return n.next=t,t.prev=n,r.next=i,i.prev=r,e.next=r,r.prev=e,a.next=e,e.prev=a,e}function Z(n,t,r,e){var i=new P(n,t,r);return e?(i.next=e.next,i.prev=e,e.next.prev=i,e.next=i):(i.prev=i,i.next=i),i}function F(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function P(n,t,r){this.i=n,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function z(n,t,r,e){for(var i=0,a=t,o=r-e;a0&&(e+=n[i-1].length,r.holes.push(e))}return r};var I=t.exports;function E(n){for(var t,r,e=0,i=1,a=n.length;i0}function L(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n}function H(n,t){var r=t[0],e=t[1],i=t[2],a=Math.sqrt(r*r+e*e+i*i)||1;return n[0]=r/a,n[1]=e/a,n[2]=i/a,n}function U(n,t){function r(n,t,r,e){n[0]=t,n[1]=r,n[2]=e}for(var e,i,a,o,u,v,s,h,f,l=[],x=[],p=[],c=[],d=[],g=[],y=n.length,m=new Float32Array(t.length),w=0;w0&&i.push(f/2);for(var d=0,g=c.length;d0&&(l=(l=l.map((function(n){return n}))).reverse());for(var x=0,p=l.length-1;x0}function J(n,t){void 0===t&&(t={}),t=Object.assign({},{radius:1,height:2,radialSegments:6},t);for(var r=Math.round(Math.max(4,t.radialSegments)),e=t,i=e.radius,a=e.height,o=360/r/360*Math.PI*2,u=r+1,v=new Float32Array(3*u*2),s=n[0],h=n[1],f=0,l=0,x=3*u,p=2*u,c=[],d=[],g=-1;g1&&c.push(0,g-1,g)}v[f-=3]=v[0],v[f+1]=v[1],v[f+2]=v[2];var A=v.length;v[A-3]=v[0],v[A-2]=v[1],v[A-1]=a;for(var Z=c.length,F=0;F0&&et.text())).then((e=>{new Blob([e],{type:"application/json"}).arrayBuffer().then((e=>{t.postResponse(null,e,[e]),t.abort=!0,i(t)}))})).catch((e=>{console.error(e),t.abort=!0,i(t)}))}t.initialize=function(){},t.onmessage=function(t,e){i({url:t.data,postResponse:e,abort:!1})}}))),t.BaseObject=m,t.BaseObjectTask=yt,t.BaseObjectTaskManager=St,t.ExtrudeUtil=K,t.GeoJSONUtil=k,t.GeoUtil=se,t.IdentifyUtil=xe,t.LineMaterial=f,t.LineUtil=st,t.MergeGeometryUtil=It,t.MergedMixin=de,t.ThreeLayer=Ri,t.ThreeRenderer=Zi,t.geometryExtrude=Pi,t.getFetchDataActor=function(){return o.worker||console.error("maptalks.worker is not defined,You can't use"),Bi||(Bi=new o.worker.Actor(Li)),Bi},t.polyextrude=B,Object.defineProperty(t,"__esModule",{value:!0}),"undefined"!=typeof console&&console.log("maptalks.three v0.35.1")})); diff --git a/js/script.js b/js/script.js deleted file mode 100644 index 118e183..0000000 --- a/js/script.js +++ /dev/null @@ -1,255 +0,0 @@ -// TODO: Remove TailwindCSS -const modalScreen = document.getElementById("modalScreen"); -const closeModalBtn = document.getElementById("modal-close"); -const inputSearch = document.getElementById("searchInput"); - -/** - * Toggle the modal - */ -const toggleModal = () => - modalScreen.style.display === "block" - ? (modalScreen.style.display = "none") - : (modalScreen.style.display = "block"); - -modalScreen.style.display = "none"; -closeModalBtn.addEventListener("click", toggleModal); -inputSearch.addEventListener("input", (event) => { - const { value } = event.target; - const suggestionsContainer = document.getElementById("suggestions"); - - if (value.length >= 2) { - // Display suggestions - suggestionsContainer.style.display = "block"; - - // Only keep buildings with non undefined name - let suggestions = buildings.features.filter( - (feature) => feature.properties.name !== undefined - ); - suggestions = suggestions.filter((feature) => { - const { name, short_name } = feature.properties; - return ( - name.toLowerCase().includes(value.toLowerCase()) || - (short_name && short_name.toLowerCase().includes(value.toLowerCase())) - ); - }); - - // Inject suggestions into the DOM - suggestionsContainer.innerHTML = ""; - suggestions.forEach((suggestion) => { - const suggestionEl = document.createElement("li"); - suggestionEl.innerHTML = suggestion.properties.name; - suggestionEl.addEventListener("click", () => { - // Close suggestions - suggestionsContainer.style.display = "none"; - - const { name } = suggestion.properties; - inputSearch.value = name; - suggestionsContainer.innerHTML = ""; - - // Center the map to the building - const building2d = map - .getLayer("2d-buildings") - ._geoList.filter((feature) => feature.properties.name === name)[0]; - map.setCenter(building2d.getCenter()); - - // Focus on the building and flash the building - const building3D = map - .getLayer("3d-buildings") - .getMeshes() - .filter( - (mesh) => mesh.options?.polygon?.properties?.name === name - )[0]; - - building3D - .animateShow({ - duration: 1000, - easing: "out", - }) - .play(); - building2d.flash(150, 4); - }); - suggestionsContainer.appendChild(suggestionEl); - }); - } else { - suggestionsContainer.style.display = "none"; - suggestionsContainer.innerHTML = ""; - } -}); - -/** - * Change title and description of modal - * @param {string} title - * @param {string} content - */ -const injectModal = (title, content) => { - document.getElementById("modalTitle").innerText = title; - document.getElementById("modalContent").innerHTML = content; -}; - -// Tile services -const TILES = { - f43D: "https://tile.f4map.com/tiles/f4_3d/{z}/{x}/{y}.png", - osm: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", - cartoDbVoyager: - "https://cartodb-basemaps-{s}.global.ssl.fastly.net/rastertiles/voyager_labels_under/{z}/{x}/{y}.png", -}; - -const CENTER = [1.468, 43.5696]; -const ZOOM = 18; -const MINZOOM = ZOOM; -const MAXZOOM = 20; -const PITCH = 45; -const BEARING = 0; - -// Map -const map = new maptalks.Map("map", { - center: CENTER, - zoom: ZOOM, - minZoom: MINZOOM, - maxZoom: MAXZOOM, - pitch: PITCH, - bearing: BEARING, - - baseLayer: new maptalks.TileLayer("tile", { - urlTemplate: TILES.f43D, - subdomains: ["a", "b", "c", "d"], - }), - layers: [ - new maptalks.VectorLayer("bounds"), - new maptalks.VectorLayer("2d-buildings"), - ], - attribution: { - content: - '© OpenStreetMap contributors, © CARTO', - }, -}); - -// Bounds -const extent = map.getExtent(); -extent.xmin = 1.464; -extent.xmax = 1.4715; -extent.ymin = 43.567; -extent.ymax = 43.574; -map.setMaxExtent(extent); -map.getLayer("bounds").addGeometry( - new maptalks.Polygon(extent.toArray(), { - symbol: { polygonOpacity: 0, lineWidth: 0 }, - }) -); - -// 2D buildings Layer -buildings.features.forEach((feature) => { - const building2D = new maptalks.GeoJSON.toGeometry(feature); - building2D.setSymbol({ - polygonFill: "#f6efe4", - }); - building2D.addTo(map.getLayer("2d-buildings")); -}); - -// 3D Buildings Layer -const threeLayer = new maptalks.ThreeLayer("3d-buildings", { - forceRenderOnMoving: true, - forceRenderOnRotating: true, - animation: true, -}); -threeLayer.prepareToDraw = function (gl, scene, camera) { - const light = new THREE.DirectionalLight(0xf6efe4, 1); - light.position.set(1, 0, 1); - scene.add(light); - - buildings.features.forEach(function (building) { - const height = building.properties.height * 2; - - const meshBuilding = threeLayer.toExtrudePolygon( - building, - { - height: height, - bloom: true, - top: "#f00", - asynchronous: true, - }, - new THREE.MeshPhongMaterial({ - color: 0xffffff, - }) - ); - - meshBuilding.on("mouseover", (e) => e.target.setHeight(height * 1.25)); - meshBuilding.on("mouseout", (e) => e.target.setHeight(height)); - - // Extrude the building on 1st spawn - meshBuilding.animateShow({ - duration: 3000, - }); - - // Display a tooltip when hovering the building - building.properties.name && - meshBuilding.setToolTip(building.properties.name, { - showTimeout: 0, - eventsPropagation: true, - dx: 15, - dy: 15, - }); - - // Display a message box when clicking the building - building.properties.name && - meshBuilding.setInfoWindow({ - title: building.properties.name, - content: building.properties.description || "Pas de description", - }); - - threeLayer.addMesh(meshBuilding); - }); -}; -map.addLayer(threeLayer); - -// Controls -const up = () => map.panBy([0, 200]); -const down = () => map.panBy([0, -200]); -const left = () => map.panBy([200, 0]); -const right = () => map.panBy([-200, 0]); -const zoomIn = () => map.setZoom(map.getZoom() + 0.5); -const zoomOut = () => map.setZoom(map.getZoom() - 0.5); -const reset = () => { - map.setCenter(CENTER); - map.setZoom(ZOOM); - map.setPitch(PITCH); - map.setBearing(BEARING); -}; - -/** - * Change the base layer - * @param {string} tileService - */ -const changeTileService = (tileService) => { - const baseLayer = map.getBaseLayer(); - baseLayer.options.urlTemplate = tileService; - map.setBaseLayer(baseLayer); -}; - -// Show or Hide 3D layer based on pitch value -map.on("pitch", ({ from, to }) => { - const planeLayer = map.getLayer("2d-buildings"); - - // Convert to degrees - to = (to * 180) / Math.PI; - if (to <= 2) { - threeLayer.hide(); - planeLayer.show(); - changeTileService(TILES.cartoDbVoyager); - } else if (from <= 2) { - threeLayer.show(); - planeLayer.hide(); - changeTileService(TILES.f43D); - } -}); - -/** - * Toggle the about modal - */ -const showInfoModal = () => { - toggleModal(); - injectModal( - "A Propos", - "

Ce projet a été réalisé par des membres du Club Info de l'INSA Toulouse. Il a pour but de vous permettre de découvrir le campus de l'INSA Toulouse en 2D et 3D.

Pour plus d'informations, n'hésitez pas à contacter le Club Info.

Toute contribution est la bienvenue, vous pouvez retrouver le code source du site sur notre GitHub.

" - ); -}; From 826da7006fa7ddc103d20557198bd502a8245bbd Mon Sep 17 00:00:00 2001 From: pierrbt Date: Sun, 5 Apr 2026 21:04:02 +0200 Subject: [PATCH 4/7] refactor: put buildings in geojson --- js/buildings.js | 1459 ------------------- json/map.geojson | 3575 +++++++++++++++++++++++++++++++++++++--------- 2 files changed, 2882 insertions(+), 2152 deletions(-) delete mode 100644 js/buildings.js diff --git a/js/buildings.js b/js/buildings.js deleted file mode 100644 index e044aa4..0000000 --- a/js/buildings.js +++ /dev/null @@ -1,1459 +0,0 @@ -const buildings = { - type: "FeatureCollection", - crs: { type: "name", properties: { name: "urn:ogc:def:crs:OGC:1.3:CRS84" } }, - - features: [ - { - type: "Feature", - properties: { - name: "Génie Mathématique et Modélisation", - short_name: "GMM", - description: "Parce que 0 ! =1", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.4676592625429805, 43.57073829651577], - [1.4674780647123669, 43.57064287792443], - [1.4676815658123985, 43.5704355855697], - [1.467864406018066, 43.570532208093965], - [1.4676592625429805, 43.57073829651577], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Centre des Services Numériques", - short_name: "CSN", - description: - "Le CSN (Centre des Services Numériques) à côté, où tu iras peut-être pour réviser l'Algo...", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.467379912968994, 43.571017227831135], - [1.4671990115851088, 43.57092275499767], - [1.4674778779674114, 43.57064295549509], - [1.4676592020865087, 43.570738262285715], - [1.467379912968994, 43.571017227831135], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Amphithéâtre Joseph Fourrier", - short_name: "Amphi Fourrier", - description: - "l'Amphi Fourier, c'est pour les réceptions, les pièces du CATIN, les concerts des Enfoiros et les spectacles de danse de tes camarades au second semestre !", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.4678468524896857, 43.57052283609585], - [1.4677011833898632, 43.57044592702479], - [1.4678775851044463, 43.57026765950977], - [1.4678875803107019, 43.57023839648619], - [1.4679075974240448, 43.57024333367687], - [1.4679314476015577, 43.57019735607216], - [1.4679552977790138, 43.570204144713955], - [1.4679787220596268, 43.57021155050424], - [1.467998313277235, 43.5702201905917], - [1.4680242929347003, 43.57023315072047], - [1.4680532538635873, 43.57025012231347], - [1.4680690120170539, 43.57025999669284], - [1.4680847701693835, 43.57027264823856], - [1.4681021292676633, 43.57028632321234], - [1.468047134277981, 43.57031598209579], - [1.468058897525765, 43.57032941636152], - [1.4680234084054007, 43.570344728531325], - [1.4678468524896857, 43.57052283609585], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Génie Mécanique", - short_name: "GM", - description: - "Entre autres pour les TP de TI (c'est le Génie Mécanique)", - height: 12, - }, - geometry: { - coordinates: [ - [ - [1.467653281743594, 43.57004069740114], - [1.4670415028592458, 43.57066217499488], - [1.4669756698693561, 43.57062517717097], - [1.466940107915434, 43.57065984597108], - [1.46622735694703, 43.57028887205203], - [1.4663392246969522, 43.57017602030086], - [1.466443936876317, 43.57023162326513], - [1.4664886186203034, 43.57018590527602], - [1.466596059455071, 43.57024299097634], - [1.4665533877516452, 43.570288099375176], - [1.466587271484741, 43.570305216636456], - [1.4666304810160113, 43.5702608468828], - [1.466738510988364, 43.57031738057947], - [1.466695129128226, 43.570361897162], - [1.4667271535057864, 43.57037889439357], - [1.466772024870977, 43.57033356843158], - [1.4668810721508123, 43.57039103544315], - [1.4668373647627675, 43.57043600963493], - [1.4668706102760325, 43.57045319077784], - [1.4669154800950537, 43.57040855348447], - [1.4670229562389636, 43.57046463347157], - [1.4669782893058425, 43.570509831589334], - [1.4670107058136637, 43.57052799275681], - [1.4671878945951278, 43.57034674297887], - [1.4667019645927724, 43.570094028827185], - [1.4670581233196174, 43.569730852590936], - [1.467653281743594, 43.57004069740114], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Génie Electronique et Informatique", - short_name: "GEI", - description: - "C'est le Génie Electronique et Informatique, où t'iras peut-être quérir de l'aide pour l'Algo durant ton après-midi libre du jeudi.", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.4666302397496338, 43.57108342638125], - [1.4658420665138863, 43.57067556736092], - [1.4658876311189317, 43.57062916843108], - [1.4658657429858977, 43.57061771530854], - [1.4658975234260936, 43.570586842843454], - [1.4659170807853457, 43.57059762202914], - [1.4659601813029326, 43.57055083907224], - [1.4667501574340918, 43.570960274736194], - [1.4667040446162503, 43.57100720445905], - [1.466724486801354, 43.57101782101293], - [1.46669225594502, 43.57104930321475], - [1.4666724958267139, 43.57103899311315], - [1.4666302397496338, 43.57108342638125], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Centre des Sciences Humaines", - short_name: "CSH", - description: - "LE bâtiment avec TOUTES tes matières préférées : en plus de l'anglais et des autres langues enseignées à l'INSA, on t'y parle aussi d'Expression, de Gestion, de Philo, de PPI...youpi !", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.465539299222371, 43.570729520064106], - [1.465276543492223, 43.570593038739105], - [1.4653746419407128, 43.570495711774726], - [1.4655083556894226, 43.5705654605907], - [1.4655526502953649, 43.57052164345919], - [1.4652333074255353, 43.57035584060921], - [1.4653562909927018, 43.57023097388904], - [1.4657675226886795, 43.570446394635695], - [1.4656447542397188, 43.57057048507784], - [1.4655927148519936, 43.570543305689625], - [1.465548742062822, 43.57058638844336], - [1.4656351304645057, 43.5706315184529], - [1.465539299222371, 43.570729520064106], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Accueil INSA", - short_name: "", - description: "L'Accueil et la loge du gardien.", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.4677219252347982, 43.56976678188457], - [1.4677036309291793, 43.5696946142009], - [1.4676557587653747, 43.569698491038054], - [1.4676411723362435, 43.56964534737793], - [1.4676722660397843, 43.56964216600315], - [1.4676459387607679, 43.569543246669696], - [1.467797171815448, 43.56952368816877], - [1.46781801897302, 43.56960172227781], - [1.4677821860465485, 43.56960589917088], - [1.4677926425310375, 43.569652316776114], - [1.4678366695354441, 43.569646790884576], - [1.4678438742565731, 43.56969098807818], - [1.4677752729568283, 43.56969698582975], - [1.4677879657414223, 43.56975849306352], - [1.4677219252347982, 43.56976678188457], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "BRI", - short_name: "", - height: 3.4, - description: "", - }, - geometry: { - coordinates: [ - [ - [1.4681078444042441, 43.56949712041214], - [1.4679762621142913, 43.56942690555255], - [1.4682276756475972, 43.56917280241282], - [1.4683615298010295, 43.5692423979591], - [1.4681078444042441, 43.56949712041214], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Terrain de foot", - short_name: "Synthé", - description: "Pour faire du sport ^^", - height: 0, - }, - geometry: { - coordinates: [ - [ - [1.4697614649906825, 43.569916576788245], - [1.4690183998410475, 43.56952762638883], - [1.469907014415952, 43.568630088660655], - [1.4706247404661497, 43.569005230990626], - [1.4698230988696537, 43.569821749019894], - [1.4697614649906825, 43.569916576788245], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Centre des Activités Physique et Sportives", - short_name: "APS", - description: "Parce qu'à l'INSA on fait aussi du sport.", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.470556803334489, 43.56894944082751], - [1.4702622470308029, 43.56879639254865], - [1.470292094840545, 43.56876639938457], - [1.4699890122965371, 43.568607757592815], - [1.4701988500968355, 43.568391445003016], - [1.4707975492769094, 43.56870220288644], - [1.470556803334489, 43.56894944082751], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Génie Civil", - short_name: "GC", - description: - "Ceux du R5-R6 sont contents de le voir dans l'emploi du temps.(C'est le GC.)", - height: 16.1, - }, - geometry: { - coordinates: [ - [ - [1.4700863706350447, 43.56811032992499], - [1.469938736003968, 43.56803629755606], - [1.4702461799896298, 43.567720133227084], - [1.4699983670576842, 43.56759451133419], - [1.4700750115827077, 43.56751744629773], - [1.4703186051377486, 43.567647805551616], - [1.4703993614309923, 43.56756522558362], - [1.4705432554910374, 43.567643018671475], - [1.4700863706350447, 43.56811032992499], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Résidences 5-6", - short_name: "R5-R6", - height: 8.3, - }, - geometry: { - coordinates: [ - [ - [1.4692172469972604, 43.56844023133817], - [1.4690302477964963, 43.568343321608324], - [1.4691585244984822, 43.568213675413745], - [1.4691538069450587, 43.56819776314714], - [1.4687662114447164, 43.5679946106105], - [1.4687419705240359, 43.567997690869504], - [1.4686134366209274, 43.5681284349875], - [1.468508716125143, 43.568073172546946], - [1.4684794321244965, 43.56810498156062], - [1.468395058864445, 43.568061308319955], - [1.4686427171261016, 43.5678115071091], - [1.4686713528855364, 43.56782580766637], - [1.468752451183235, 43.567817509782856], - [1.4687726292060006, 43.56779371972871], - [1.4694117091423777, 43.568127910768226], - [1.4693899130114971, 43.568148896988106], - [1.4694062572902737, 43.56820860815358], - [1.4694357235645725, 43.568220939079765], - [1.4692172469972604, 43.56844023133817], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Ptit Kawa", - short_name: "PK", - description: - "Le Ptit Kawa, mais PK c'est mieux (Peks pour les intimes). Le bar de l'INSA, idéal pour se reposer entre les cours en jouant à la coinche ou au mus, ou pour se détendre les mercredi soir grâce aux soirée PK !", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.469490912075429, 43.57022628346135], - [1.4695650174136858, 43.57026435684202], - [1.4695487877031894, 43.57028153135954], - [1.4695818213533016, 43.57029721156181], - [1.4695568346110974, 43.57032281739805], - [1.4695679564698025, 43.57032965808091], - [1.4696563915750858, 43.57031883685494], - [1.4696672199398222, 43.57038067130878], - [1.4696450333524922, 43.57037983852794], - [1.4696398671326847, 43.57042491012902], - [1.4696181711544511, 43.57048390416426], - [1.4696053033635792, 43.570479306744204], - [1.4695804750512877, 43.570519847456495], - [1.4695553157966685, 43.57054788273601], - [1.4695367791341312, 43.57053777619785], - [1.469477067419831, 43.57058171350067], - [1.4694556526648626, 43.570569719056806], - [1.4694185817452308, 43.570485125437955], - [1.469392406896361, 43.57048707603846], - [1.469324699411544, 43.5705543827423], - [1.4692952759448872, 43.57053993412438], - [1.4692806203900375, 43.570554891618485], - [1.4692046407515704, 43.570514976235074], - [1.469490912075429, 43.57022628346135], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "Résidence 4", short_name: "R4", height: 12 }, - geometry: { - coordinates: [ - [ - [1.4683613151439943, 43.57340993918521], - [1.468361577883087, 43.57327318969695], - [1.4682799241763007, 43.57327704724409], - [1.4682772647076945, 43.57283265588603], - [1.4683436029655184, 43.572832900845384], - [1.468343727633453, 43.57280281485572], - [1.4684094584671072, 43.5728031219607], - [1.4684098384879292, 43.572827321212316], - [1.468413266698036, 43.57284273924046], - [1.4684012842327547, 43.57286751247139], - [1.4684830504942568, 43.572867266700456], - [1.4684936149294856, 43.57341020714395], - [1.4683613151439943, 43.57340993918521], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "Résidence 7", short_name: "R7", height: 18 }, - geometry: { - coordinates: [ - [ - [1.4689928543222948, 43.57312947604245], - [1.4688448359259212, 43.57305569239307], - [1.468868620684873, 43.57303183375538], - [1.468840143600886, 43.57301703023137], - [1.4691218335423741, 43.572733347642526], - [1.4691031575494549, 43.5727249687811], - [1.4691242892160687, 43.572702227561535], - [1.4691555797349167, 43.572717033037605], - [1.4691625500768168, 43.57271271853318], - [1.4691623865501242, 43.572562506710284], - [1.4692920511163265, 43.572562942898855], - [1.4692938095093666, 43.572541623852516], - [1.4693370323238923, 43.57254217539153], - [1.4693370825661702, 43.57258976968353], - [1.4693714812144947, 43.57258942054119], - [1.4693752639166462, 43.572913281078684], - [1.4693011432382832, 43.57291147534528], - [1.4692893921677808, 43.57292278886598], - [1.4692292983016557, 43.57289065870734], - [1.4689928543222948, 43.57312947604245], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "Résidence 3", short_name: "R3", height: 21 }, - geometry: { - coordinates: [ - [ - [1.4691608915918835, 43.57229708999341], - [1.4691561548851269, 43.57200207774966], - [1.4690799025374872, 43.57200270800911], - [1.4690792749863988, 43.57198887640706], - [1.4690228635158746, 43.571958001165314], - [1.4692803101921186, 43.57169873091266], - [1.4693532985284605, 43.57173659114494], - [1.4693793719041253, 43.57173460091266], - [1.4693887522399223, 43.57172178385321], - [1.4694202088702468, 43.57173826393415], - [1.4694473608000749, 43.57171290915204], - [1.469496042815166, 43.57174048459365], - [1.4693534170344265, 43.57188161476901], - [1.469353363987949, 43.57191865816034], - [1.4693672640823365, 43.57192441548116], - [1.4693690158851211, 43.572270027035955], - [1.4693347473600227, 43.5722697466131], - [1.4693339861251502, 43.572297227737494], - [1.4691608915918835, 43.57229708999341], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Laverie", - short_name: "", - description: "", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.469002517501707, 43.57136506361658], - [1.469001840671467, 43.57130848753036], - [1.4690207905523494, 43.57130841035115], - [1.4690204800837137, 43.57136495580852], - [1.469002517501707, 43.57136506361658], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Junior INSA Services", - short_name: "JIS", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.4689172550997682, 43.57139676716605], - [1.4689159169172683, 43.57130242920917], - [1.4690014553219157, 43.571302594997576], - [1.4690024538884359, 43.57139718699233], - [1.4689172550997682, 43.57139676716605], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "IDK", short_name: "IDK", height: 3 }, - geometry: { - coordinates: [ - [ - [1.4687776865714, 43.571397140347244], - [1.4687775107247774, 43.57136586343131], - [1.4687586449291814, 43.57136572585071], - [1.468757879695005, 43.571302603553164], - [1.4689159626066726, 43.57130239448804], - [1.4689174250125063, 43.571397284204465], - [1.4687776865714, 43.571397140347244], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "Résidence 1", short_name: "R1", height: 18 }, - geometry: { - coordinates: [ - [ - [1.4681837881526008, 43.57135899232321], - [1.4680571728146674, 43.57129275812292], - [1.468509584538765, 43.57083607988034], - [1.4686369517816331, 43.570902808338616], - [1.4681837881526008, 43.57135899232321], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Salle d'examen", - short_name: "", - description: - "Seulement le lundi matin, pour t'amuser devant ∫1/cos(x) dx", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.4670511894526044, 43.572302073098655], - [1.4673566333027566, 43.57246484486697], - [1.4672776630942508, 43.57254280752565], - [1.467009402297009, 43.572399653256326], - [1.4670743956718013, 43.57233660342919], - [1.4670371510122493, 43.57231571030621], - [1.4670511894526044, 43.572302073098655], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Atelier Inter-universitaire de Micro-Electronique", - short_name: "A.I.M.E", - description: "Le labo AIME.", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.4673566282526735, 43.57246544274071], - [1.4670514684245006, 43.57230207560866], - [1.4671294141083706, 43.5722244751538], - [1.4671744516259366, 43.57224767993307], - [1.4671871334761022, 43.572233719556834], - [1.4672610385704274, 43.572271886700776], - [1.4673180405510209, 43.572213158161304], - [1.4672557494732246, 43.57218092297802], - [1.4675598355503894, 43.57186857826093], - [1.4677104486631265, 43.571944368709495], - [1.4674069056088967, 43.572255316794894], - [1.4675847978380148, 43.57234679360289], - [1.46744703472649, 43.57248521913513], - [1.4673738172621142, 43.57244698048967], - [1.4673566282526735, 43.57246544274071], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Génie des Procédés", - short_name: "GP3E", - description: - "Là où tu va enfiler ta belle blouse pour parler pH et débit molaire", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.465072797400751, 43.57145419260243], - [1.4652324177260994, 43.57153776555447], - [1.4653259375905918, 43.57144467594168], - [1.4651669865018846, 43.571360693600866], - [1.465254641349162, 43.571270806140944], - [1.4655260137253379, 43.57140963465892], - [1.4654372707269658, 43.57150121938216], - [1.4653638104554148, 43.57146363099028], - [1.4652693746901946, 43.57155643239324], - [1.465859911506442, 43.57186453276], - [1.4658058550215571, 43.57191799393411], - [1.4658280188068034, 43.57192889033519], - [1.465792669965964, 43.571961255379165], - [1.4657724113977224, 43.57195171752136], - [1.4657357140789031, 43.571990303726494], - [1.4649501962577176, 43.57158052845023], - [1.4649831460449434, 43.57154451675254], - [1.4649635856216037, 43.57153471415518], - [1.4649962671863932, 43.571500385239915], - [1.4650178243069547, 43.57150998355607], - [1.465072797400751, 43.57145419260243], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Génie Physique", - short_name: "GP", - description: "Le Génie Physique, pour quelques cours mais sans plus.", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.4661786623695434, 43.57154106530305], - [1.465393820853052, 43.571129259111586], - [1.4654297881850766, 43.57109307719986], - [1.4654095461499708, 43.57108234419434], - [1.4654427220348794, 43.571051611505794], - [1.4654598897787139, 43.57106127483709], - [1.4655145234096096, 43.571005853122216], - [1.4663002551394868, 43.57141784305563], - [1.4662467834557162, 43.57147128496052], - [1.4662668776566363, 43.57148101143275], - [1.4662348350665297, 43.571511186853314], - [1.4662170909517727, 43.57150178560221], - [1.4661786623695434, 43.57154106530305], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Travaux Pratique de Physique", - short_name: "", - description: - "Nom bizarre pour un bâtiment mais tu y iras seulement pour les TP d'Electrocinétique et d'Optique", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.465960900800411, 43.571066457818375], - [1.465687580105822, 43.57092479973218], - [1.4657902901498119, 43.570818363307524], - [1.466016688981199, 43.570933918036246], - [1.4660358273823135, 43.57091639770229], - [1.4660841229466257, 43.57094102461963], - [1.465960900800411, 43.571066457818375], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Toulouse Biotechnology Institute", - short_name: "TBI", - height: 8, - }, - geometry: { - coordinates: [ - [ - [1.464991010881704, 43.57230903860378], - [1.4644883816052072, 43.57204853489469], - [1.4647051389781325, 43.57182657393898], - [1.4652084456861871, 43.572088684922875], - [1.464991010881704, 43.57230903860378], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "Hall bio5", short_name: "", height: 13.7 }, - geometry: { - coordinates: [ - [ - [1.4649492956472159, 43.57243707743643], - [1.4648619019474154, 43.572389103116166], - [1.464887727070618, 43.57236341360826], - [1.4648756800157514, 43.57235684552532], - [1.4648815900826833, 43.57234950395073], - [1.4648420900841472, 43.572330143341986], - [1.4648296545994128, 43.572344180303304], - [1.4648504009018666, 43.572352694950695], - [1.4648011955259221, 43.57241410646904], - [1.4646856769663543, 43.57237132091237], - [1.4647316700565511, 43.5723059831104], - [1.464769465028695, 43.57232161785248], - [1.4647866421180424, 43.57230177714899], - [1.4647476952296472, 43.57228023248834], - [1.4647427448297492, 43.572287475886725], - [1.464727547735862, 43.572279811781556], - [1.4647031565985742, 43.57230783663374], - [1.4646134868048364, 43.57225956978334], - [1.464704769398054, 43.57216796914045], - [1.4650428363723051, 43.57234701890346], - [1.4650102203072777, 43.57237553065062], - [1.4650185019674495, 43.57238035652921], - [1.4650071616689786, 43.572394990577465], - [1.4649941439191423, 43.57239348584616], - [1.4649492956472159, 43.57243707743643], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Hall Gibert Durand", - short_name: "", - description: "", - height: 9.9, - }, - geometry: { - coordinates: [ - [ - [1.465173231997511, 43.572405532318356], - [1.465390038759523, 43.57218393801651], - [1.4657930570455164, 43.57239471603663], - [1.4655750456870464, 43.57261469186835], - [1.465173231997511, 43.572405532318356], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Hall de Génie des Prodécés Industriels", - height: 7.8, - }, - geometry: { - coordinates: [ - [ - [1.4660808755718904, 43.57289392700244], - [1.4660156694627915, 43.57286059317238], - [1.4660299212444556, 43.57284758019259], - [1.4657762063565656, 43.57271691446138], - [1.4659903828032839, 43.57249638110545], - [1.4662918272833565, 43.57265210051375], - [1.4661155344265069, 43.572832453009624], - [1.4661337904874472, 43.5728416597087], - [1.4660808755718904, 43.57289392700244], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "TWB", height: 9.3 }, - geometry: { - coordinates: [ - [ - [1.4667790220126165, 43.573381554488236], - [1.4662402448018668, 43.57310027157504], - [1.4665555394401508, 43.57278650216381], - [1.466754680305968, 43.57289307062024], - [1.4667840988431067, 43.572861373355835], - [1.4668504791314092, 43.57289525663802], - [1.4668187976302818, 43.57292913990116], - [1.467089381210343, 43.57306820313613], - [1.4667790220126165, 43.573381554488236], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Amphithéâtre Pierre Paul Riquet", - short_name: "Amphithéâtre Riquet", - description: - "L'amphi Riquet c'est le plus petit mais le plus convivial.", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.4660763534338344, 43.57210546251159], - [1.4662304004947657, 43.572182764900674], - [1.466074694559353, 43.572341349594296], - [1.4659222410874975, 43.572261324181], - [1.4660763534338344, 43.57210546251159], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "STPI", - description: - "Le bâtiment des salles de cours classiques, avec son bureau des stages, son administration des premières années, et...ses sous-sols.Y'a aussi l'amphi Vinci (et ses 300 places, souvent occupées en même temps sauf étonnamment en gestion)", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.4672750420205887, 43.57112508248565], - [1.4667116697185634, 43.57169718309038], - [1.4666678097752026, 43.57167255585233], - [1.4661885269652828, 43.5721623419351], - [1.466048479126556, 43.57208994194724], - [1.4670888906692028, 43.57102942553689], - [1.4672750420205887, 43.57112508248565], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { name: "Résidence 2", short_name: "R2", height: 21 }, - geometry: { - coordinates: [ - [ - [1.4691548261369292, 43.57151204154812], - [1.469151020125281, 43.571215127557906], - [1.4690738125439395, 43.571215384155465], - [1.4690734583809615, 43.571202297671505], - [1.4690139589609714, 43.571170222942584], - [1.469273257353251, 43.57090994629286], - [1.4693519017169194, 43.57094893229717], - [1.469371414980003, 43.570948075462155], - [1.4693850151326728, 43.57093479451825], - [1.4694193111712934, 43.570952359637204], - [1.4694417809891434, 43.57092922508923], - [1.4694890858697818, 43.57095450172437], - [1.4693474251876637, 43.57109719104517], - [1.469348500686607, 43.571134074141355], - [1.4693617651821285, 43.571140567642146], - [1.4693639576852604, 43.57149868257383], - [1.4693940415750149, 43.571497627918035], - [1.4693916154538442, 43.57156618051741], - [1.469246952206987, 43.57157010053592], - [1.469246048251165, 43.57152645517428], - [1.4692994228922203, 43.571526806726354], - [1.4692994228922203, 43.571512393099795], - [1.4691548261369292, 43.57151204154812], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Restaurant Universitaire, Bibliothèque et Cafétéria", - short_name: "RU, Bib'INSA et Cafét'", - description: - "Le RU: Sympa, convivial, grand avant 12h13. La Bib: Ton repère si tu aimes le travail de groupe. Et juste dessous la cafét pour varier les plaisirs et pour te sauver le soir.", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.4688460220451702, 43.5703509645102], - [1.468819917214546, 43.570336501092754], - [1.468794580172613, 43.57036209021345], - [1.4686074233084696, 43.5702657197472], - [1.468631964221231, 43.570239674890985], - [1.4685763151086348, 43.57020987355162], - [1.4687688200070852, 43.57001522213778], - [1.4685045108459178, 43.569877426330976], - [1.4686761655047462, 43.56970147122678], - [1.469211611000759, 43.569981303199114], - [1.4688460220451702, 43.5703509645102], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Le Trou", - description: 'aka "le Gouffre" (F gang)', - height: 0, - }, - geometry: { - coordinates: [ - [ - [1.468658722773597, 43.57218777216994], - [1.4686611289760663, 43.572041334011914], - [1.4689763414799017, 43.57204656395203], - [1.4689727321769226, 43.57219125878862], - [1.468658722773597, 43.57218777216994], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "L'Amicale", - description: - "L'amicale : c'est l'Association des élèves, à côté de quelques clubs. Si tu as besoin de quelque chose ce sera toujours là-bas.", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.4686543650473425, 43.57232454804637], - [1.4686552539396587, 43.57229943179183], - [1.4686356983220037, 43.57230007579855], - [1.4686365872131546, 43.572229879032705], - [1.4689548104477694, 43.57223116704753], - [1.4689530326642455, 43.57229621175833], - [1.468935254830086, 43.57229621175833], - [1.468935254830086, 43.57232519205277], - [1.4686543650473425, 43.57232454804637], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "L'Amicale 2ème batiment", - description: "Batiment nord de l'amicale", - height: 3, - }, - geometry: { - coordinates: [ - [ - [1.4687611325545618, 43.57254032042974], - [1.4687601453008483, 43.572513855542326], - [1.4687404002407334, 43.572514570809744], - [1.4687413874931963, 43.57244733563914], - [1.469059282965219, 43.572444474566254], - [1.469058295711477, 43.572513855542326], - [1.46904052515751, 43.57251242500749], - [1.46904052515751, 43.57254032042974], - [1.4687611325545618, 43.57254032042974], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Terrains de Tennis", - short_name: "", - description: "J'ai mis au pluriel mais y'en a que deux t'enflammes pas", - height: 0, - }, - geometry: { - coordinates: [ - [ - [1.470777021160444, 43.568315847164854], - [1.4704135681352284, 43.56812823860483], - [1.4706756783485844, 43.56786640931284], - [1.4710373868683178, 43.568056596472786], - [1.470777021160444, 43.568315847164854], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "IUT Génie Mécanique et Productique", - short_name: "UIT GMP", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.4659815568585657, 43.57015445162551], - [1.4653614974729123, 43.56983170088213], - [1.4654827629952933, 43.569708893674544], - [1.4655928712043078, 43.56976650661821], - [1.4657090064875717, 43.56964793008876], - [1.4655630587222959, 43.569572089387464], - [1.4658916187624413, 43.56923880029953], - [1.465990987165128, 43.569290174569886], - [1.465964316873908, 43.569317500240174], - [1.4664466341962736, 43.56956829820601], - [1.4664708824838897, 43.569542005137265], - [1.4666176133629847, 43.56961781170179], - [1.4664726690363636, 43.569764820977696], - [1.4664009642860947, 43.569727926506545], - [1.4659815568585657, 43.57015445162551], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Tripode Curie", - short_name: "Tripode C", - description: "", - height: 18, - }, - geometry: { - coordinates: [ - [ - [1.4652059312881534, 43.56927817758316], - [1.4652771673482192, 43.568758514443786], - [1.4652755558664978, 43.56872840618527], - [1.4652544334708466, 43.56870350650166], - [1.465223420429254, 43.56867909265526], - [1.4646255192470505, 43.56839084533405], - [1.464712314320849, 43.56829975883787], - [1.4653006789741596, 43.56860675768283], - [1.465345160733733, 43.56862148311032], - [1.4653789055171274, 43.56862148311032], - [1.4654214699606314, 43.56861453715484], - [1.46607538873522, 43.56839810804419], - [1.466127932900008, 43.56848780947897], - [1.4654728965006427, 43.56870471964285], - [1.4654398971509863, 43.568723550434584], - [1.4654222191203132, 43.568746804851486], - [1.465410664955641, 43.568773267547044], - [1.4653414365754713, 43.569288422369], - [1.4652059312881534, 43.56927817758316], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "Tripode Bichat", - short_name: "Tripode B", - description: "", - height: 18, - }, - geometry: { - coordinates: [ - [ - [1.4660884641955931, 43.56818945308683], - [1.466104826801086, 43.568061086312355], - [1.4662136127645624, 43.56806870683005], - [1.4662085438606312, 43.56811158752487], - [1.4662950720631898, 43.56811711608097], - [1.4663518059319074, 43.567656057446555], - [1.4663389515439178, 43.56763399603204], - [1.4663103818369336, 43.567609291603134], - [1.4657264140986683, 43.567307131467174], - [1.4658083877701813, 43.567225436994505], - [1.4658738492346686, 43.56726049947389], - [1.4659239711075998, 43.56721086960954], - [1.465856324727639, 43.56717703405087], - [1.465923595978694, 43.56711073511656], - [1.4660674528012407, 43.56718260848436], - [1.466000185333968, 43.5672504945866], - [1.4659509497322176, 43.567224337511504], - [1.4658997105244964, 43.567272987631725], - [1.466391051942992, 43.567529341536044], - [1.466421349302749, 43.56754073057445], - [1.4664574964445762, 43.56754790037698], - [1.466491712936886, 43.56754242881479], - [1.4670391792810733, 43.56735551119297], - [1.4670046821341884, 43.56730053080719], - [1.466953646072085, 43.5673171448928], - [1.4669052024668758, 43.56724309292099], - [1.4670690050857047, 43.56718633987646], - [1.4671164215722001, 43.5672634019449], - [1.467037479687491, 43.56728988157391], - [1.467070578416724, 43.56734506929624], - [1.4671494059136592, 43.56731835274954], - [1.4672068818071864, 43.56741201543883], - [1.4665552336251721, 43.567628078660476], - [1.4665177353948593, 43.567652692913924], - [1.4664994087501668, 43.56767440518411], - [1.4664885026903107, 43.567705321286894], - [1.4664202579607206, 43.56821112285948], - [1.4662840888136373, 43.56820222809634], - [1.4662913051841429, 43.56814203989572], - [1.4662053724041755, 43.568136075368585], - [1.4661975243632241, 43.56819663093211], - [1.4660884641955931, 43.56818945308683], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "IUT Génie Civil", - short_name: "IUT GC", - height: 7.7, - }, - geometry: { - coordinates: [ - [ - [1.464329854169904, 43.571950139444], - [1.4640449063722087, 43.571801420025395], - [1.46397134881812, 43.571876327236964], - [1.4638249399895642, 43.57179942737292], - [1.463898645992856, 43.57172486372917], - [1.4638502579955173, 43.57169902119804], - [1.4642098225365316, 43.571335377347964], - [1.4644283262586555, 43.57144993399976], - [1.4645197190804424, 43.571358043022485], - [1.464139107766755, 43.57115980320398], - [1.4640928396617028, 43.57120668556615], - [1.4638877957212628, 43.5710998492529], - [1.4640599679144373, 43.5709254151011], - [1.464110061065071, 43.570952915896584], - [1.4641451779136787, 43.570955722099825], - [1.464176938004158, 43.5709654502686], - [1.4641983696093064, 43.570983409961485], - [1.4642099891544262, 43.571003427529774], - [1.4647907343973259, 43.57130767498563], - [1.4646671934806363, 43.5714330625207], - [1.464640539028693, 43.57141945940299], - [1.4645497318657874, 43.571512679100124], - [1.4646902903338912, 43.57158643434937], - [1.464329854169904, 43.571950139444], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 4.4 }, - geometry: { - coordinates: [ - [ - [1.4685297264329904, 43.568859980621994], - [1.468407708647021, 43.56879754124512], - [1.4685133113986524, 43.56868798409482], - [1.4684678814834342, 43.568664541938006], - [1.4685119228338692, 43.56861871343267], - [1.4686209763518434, 43.56867408236974], - [1.4686528275841226, 43.568641044708414], - [1.4687001272454552, 43.56866551690638], - [1.468582063040202, 43.56878789381349], - [1.4685941329814511, 43.568793845437455], - [1.4685297264329904, 43.568859980621994], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 4.7 }, - geometry: { - coordinates: [ - [ - [1.4680022742402628, 43.56907660293419], - [1.4679957660217724, 43.56903165404211], - [1.4682370711949773, 43.56901733435373], - [1.468232712605328, 43.568979438426936], - [1.4683740314924876, 43.56898211057671], - [1.4683703161872188, 43.569064153302946], - [1.4682955496109287, 43.5690573514766], - [1.4680022742402628, 43.56907660293419], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 4.1 }, - geometry: { - coordinates: [ - [ - [1.4679232079615474, 43.56908754093999], - [1.4677339028045822, 43.56910888923693], - [1.4677045661434533, 43.56903747007894], - [1.4677689391599245, 43.56905994040113], - [1.4679141161652751, 43.569041610489336], - [1.4679232079615474, 43.56908754093999], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 5.3 }, - geometry: { - coordinates: [ - [ - [1.4675318979190592, 43.568724093009536], - [1.46748876607964, 43.568656761828265], - [1.4675063680763003, 43.5686511745765], - [1.467498321449682, 43.56863817814093], - [1.4675328964582093, 43.5686266645032], - [1.4675166355661418, 43.56860042869397], - [1.4676458845129332, 43.568556702320194], - [1.4676740625050684, 43.56860054780867], - [1.467658304526907, 43.56860637798914], - [1.4676968507753827, 43.568665518433875], - [1.4676589645729337, 43.56867839340171], - [1.4676482357371015, 43.56866284627009], - [1.467590906517188, 43.56868218865483], - [1.4676028088195494, 43.56870065086676], - [1.4675318979190592, 43.568724093009536], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 6 }, - geometry: { - coordinates: [ - [ - [1.4663325230153816, 43.571268895183806], - [1.4660092832303633, 43.57109860984849], - [1.4661271742887436, 43.570986630418645], - [1.4664508007951724, 43.57115204837379], - [1.4663325230153816, 43.571268895183806], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 5.2 }, - geometry: { - coordinates: [ - [ - [1.4675987812041171, 43.57276806327212], - [1.4675059990602222, 43.572720328369684], - [1.4677417617085098, 43.57247603458134], - [1.4678361923023715, 43.57252399287108], - [1.4677399030951221, 43.572624379867165], - [1.4677717543265487, 43.572640654699484], - [1.4677279198514839, 43.57268650285485], - [1.4676952304293707, 43.57267010658046], - [1.4675987812041171, 43.57276806327212], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 3 }, - geometry: { - coordinates: [ - [ - [1.4679769806022023, 43.57276038349872], - [1.4679190305363647, 43.57273101455678], - [1.4679619458803757, 43.572686926819756], - [1.468018890118401, 43.5727173888674], - [1.4679769806022023, 43.57276038349872], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 3 }, - geometry: { - coordinates: [ - [ - [1.4679072142182008, 43.57283009875559], - [1.4678503925950395, 43.572801071634444], - [1.4678923299995006, 43.57275696207341], - [1.467950464838168, 43.57278722562762], - [1.4679072142182008, 43.57283009875559], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "IUT Informatique", - short_name: "IUT Info", - description: "", - height: 9, - }, - geometry: { - coordinates: [ - [ - [1.465104347028955, 43.57064183282944], - [1.4646308509144603, 43.570400991657465], - [1.4646509674823278, 43.57038070808889], - [1.4646107343465644, 43.57035920992794], - [1.4651053877867923, 43.5698546242825], - [1.4652814505043352, 43.56994714703927], - [1.4648133986282517, 43.57042040381751], - [1.4648926315285848, 43.57046107665741], - [1.4649027270359625, 43.57045010494983], - [1.464943374739363, 43.570472625821225], - [1.4649957119767407, 43.57043836329561], - [1.465199752982926, 43.57054703612661], - [1.465104347028955, 43.57064183282944], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "IUT Gestion des Entreprises et des Administrations", - short_name: "IUT GEA", - height: 6.5, - }, - geometry: { - coordinates: [ - [ - [1.4645941262868405, 43.57091036281443], - [1.4642428059379426, 43.57072739589549], - [1.4644944971766165, 43.57047423440625], - [1.464535655140594, 43.570497137439276], - [1.4645585743076595, 43.57047455789461], - [1.4645327580464027, 43.57046107601869], - [1.464574599613968, 43.5704193369759], - [1.464600080599297, 43.57043294031885], - [1.4646307929768057, 43.570401185149024], - [1.4651046854580727, 43.57064214136577], - [1.4650174434226244, 43.570731421298575], - [1.4648104739361543, 43.57062564752317], - [1.4648319021075622, 43.570577490207484], - [1.4647983744956434, 43.57056048606847], - [1.4647276677315801, 43.57063318244428], - [1.4648189699796035, 43.57068167012869], - [1.4645941262868405, 43.57091036281443], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { height: 10.4 }, - geometry: { - coordinates: [ - [ - [1.4646001572163527, 43.57043296507533], - [1.4645746918624525, 43.57041914970716], - [1.4646271625765337, 43.570367772765536], - [1.4646509515490322, 43.57038073793643], - [1.4646001572163527, 43.57043296507533], - ], - ], - type: "Polygon", - }, - }, - { - type: "Feature", - properties: { - name: "IUT Génie Chimique et Génie de Procédés", - short_name: "IUT GC et GP", - height: 6, - }, - geometry: { - coordinates: [ - [ - [1.4670812267973474, 43.568834057309914], - [1.4668420260681216, 43.568709255639845], - [1.4668570628054454, 43.568694808349534], - [1.4668200147928019, 43.56867525297764], - [1.4668104594236127, 43.5686852128575], - [1.466783235252592, 43.568670625243726], - [1.466792416319663, 43.5686617138972], - [1.4667555188230779, 43.568642385056734], - [1.466724164613538, 43.56867351201791], - [1.466599183137447, 43.56860853909828], - [1.4667754482590283, 43.56843039597965], - [1.466793050255717, 43.56843926273814], - [1.466863777383395, 43.56836739906316], - [1.46684516955807, 43.56835671035563], - [1.4669227282407178, 43.56827844641953], - [1.4669416713419139, 43.568288527827036], - [1.4670258711840916, 43.56820096736422], - [1.4670086044633592, 43.56819234349703], - [1.4670849961336785, 43.568113327946406], - [1.467103939234903, 43.568123166455536], - [1.4671879434825428, 43.56803870235777], - [1.4671698385720333, 43.56802825651826], - [1.4672474405099933, 43.56794933448171], - [1.4672770315489458, 43.56796376293167], - [1.4674511740026048, 43.567786900063], - [1.4679049736688228, 43.56802329760109], - [1.4677409536147934, 43.5681886094487], - [1.4676792146088644, 43.56815556835687], - [1.4676094224368512, 43.568226603798564], - [1.4673143278903638, 43.56807323223049], - [1.466968687621005, 43.56842487650562], - [1.4668949742725488, 43.56838603631019], - [1.4668267668076282, 43.56845574775858], - [1.466900900516947, 43.568493653590565], - [1.4668414609245986, 43.56855394738048], - [1.4669426813666462, 43.568606169489215], - [1.466964401782576, 43.56858477629564], - [1.4671123289102184, 43.56866256377626], - [1.4670936806951715, 43.568682465911905], - [1.467274613795496, 43.5687761976738], - [1.4671993608742184, 43.56885350264096], - [1.4671081317373762, 43.56880573847684], - [1.4670812267973474, 43.568834057309914], - ], - ], - type: "Polygon", - }, - }, - ], -}; diff --git a/json/map.geojson b/json/map.geojson index 1bdaefa..0e32701 100644 --- a/json/map.geojson +++ b/json/map.geojson @@ -1,6 +1,130 @@ { "type": "FeatureCollection", "features": [ + { + "type": "Feature", + "properties": { + "name": "Métro Faculté de Pharmacie", + "short_name": "Fac de Pharma", + "description": "La station de métro pour toutes tes sorties chez Tonton", + "height": 6 + }, + "geometry": { + "coordinates": [ + [ + [ + 1.464452343556701, + 43.56777715718127 + ], + [ + 1.4644553345412987, + 43.56777483785251 + ], + [ + 1.464506728324153, + 43.56777887487121 + ], + [ + 1.4645110943103248, + 43.567782091379 + ], + [ + 1.4645032146472374, + 43.567849479885695 + ], + [ + 1.4645072028919515, + 43.56785522098647 + ], + [ + 1.4646270237557815, + 43.56786431370577 + ], + [ + 1.4646279208922692, + 43.567858317788136 + ], + [ + 1.464637597218939, + 43.56785843930203 + ], + [ + 1.4646425403996943, + 43.56786074329409 + ], + [ + 1.4646364550079056, + 43.567916139888524 + ], + [ + 1.4646588092282968, + 43.567916937974644 + ], + [ + 1.464670002210113, + 43.56792164858874 + ], + [ + 1.4646839712513042, + 43.56793136651234 + ], + [ + 1.4646918533066469, + 43.56794347984726 + ], + [ + 1.464692178938094, + 43.56795308392006 + ], + [ + 1.4646376972343091, + 43.56804331209088 + ], + [ + 1.4646211939119382, + 43.5680416964656 + ], + [ + 1.4645969769299256, + 43.56821827295448 + ], + [ + 1.4645840051497316, + 43.56821661545561 + ], + [ + 1.464584529436081, + 43.56820133111387 + ], + [ + 1.4645394220914056, + 43.56819651079664 + ], + [ + 1.4645365100687684, + 43.5682071376381 + ], + [ + 1.464463528130068, + 43.568200127767454 + ], + [ + 1.4644654274187587, + 43.56819037921994 + ], + [ + 1.4643950693041177, + 43.56818644898584 + ], + [ + 1.464452343556701, + 43.56777715718127 + ] + ] + ], + "type": "Polygon" + } + }, { "type": "Feature", "properties": { @@ -12,11 +136,26 @@ "geometry": { "coordinates": [ [ - [1.4676592625429805, 43.57073829651577], - [1.4674780647123669, 43.57064287792443], - [1.4676815658123985, 43.5704355855697], - [1.467864406018066, 43.570532208093965], - [1.4676592625429805, 43.57073829651577] + [ + 1.4676592625429805, + 43.57073829651577 + ], + [ + 1.4674780647123669, + 43.57064287792443 + ], + [ + 1.4676815658123985, + 43.5704355855697 + ], + [ + 1.467864406018066, + 43.570532208093965 + ], + [ + 1.4676592625429805, + 43.57073829651577 + ] ] ], "type": "Polygon" @@ -33,11 +172,26 @@ "geometry": { "coordinates": [ [ - [1.467379912968994, 43.571017227831135], - [1.4671990115851088, 43.57092275499767], - [1.4674778779674114, 43.57064295549509], - [1.4676592020865087, 43.570738262285715], - [1.467379912968994, 43.571017227831135] + [ + 1.467379912968994, + 43.571017227831135 + ], + [ + 1.4671990115851088, + 43.57092275499767 + ], + [ + 1.4674778779674114, + 43.57064295549509 + ], + [ + 1.4676592020865087, + 43.570738262285715 + ], + [ + 1.467379912968994, + 43.571017227831135 + ] ] ], "type": "Polygon" @@ -46,32 +200,86 @@ { "type": "Feature", "properties": { - "name": "Amphithéâtre Joseph Fourrier", - "short_name": "Amphi Fourrier", - "description": "l'Amphi Fourier, c'est pour les réceptions, les pièces du CATIN, les concerts des Enfoiros et les spectacles de danse de tes camarades au second semestre !", + "name": "Amphi Sophie Germain", + "short_name": "Sophie Germain", + "description": "L'Amphi Sophie Germain accueille des cours magistraux, conférences et événements de la vie du campus.", "height": 6 }, "geometry": { "coordinates": [ [ - [1.4678468524896857, 43.57052283609585], - [1.4677011833898632, 43.57044592702479], - [1.4678775851044463, 43.57026765950977], - [1.4678875803107019, 43.57023839648619], - [1.4679075974240448, 43.57024333367687], - [1.4679314476015577, 43.57019735607216], - [1.4679552977790138, 43.570204144713955], - [1.4679787220596268, 43.57021155050424], - [1.467998313277235, 43.5702201905917], - [1.4680242929347003, 43.57023315072047], - [1.4680532538635873, 43.57025012231347], - [1.4680690120170539, 43.57025999669284], - [1.4680847701693835, 43.57027264823856], - [1.4681021292676633, 43.57028632321234], - [1.468047134277981, 43.57031598209579], - [1.468058897525765, 43.57032941636152], - [1.4680234084054007, 43.570344728531325], - [1.4678468524896857, 43.57052283609585] + [ + 1.4678468524896857, + 43.57052283609585 + ], + [ + 1.4677011833898632, + 43.57044592702479 + ], + [ + 1.4678775851044463, + 43.57026765950977 + ], + [ + 1.4678875803107019, + 43.57023839648619 + ], + [ + 1.4679075974240448, + 43.57024333367687 + ], + [ + 1.4679314476015577, + 43.57019735607216 + ], + [ + 1.4679552977790138, + 43.570204144713955 + ], + [ + 1.4679787220596268, + 43.57021155050424 + ], + [ + 1.467998313277235, + 43.5702201905917 + ], + [ + 1.4680242929347003, + 43.57023315072047 + ], + [ + 1.4680532538635873, + 43.57025012231347 + ], + [ + 1.4680690120170539, + 43.57025999669284 + ], + [ + 1.4680847701693835, + 43.57027264823856 + ], + [ + 1.4681021292676633, + 43.57028632321234 + ], + [ + 1.468047134277981, + 43.57031598209579 + ], + [ + 1.468058897525765, + 43.57032941636152 + ], + [ + 1.4680234084054007, + 43.570344728531325 + ], + [ + 1.4678468524896857, + 43.57052283609585 + ] ] ], "type": "Polygon" @@ -88,33 +296,114 @@ "geometry": { "coordinates": [ [ - [1.467653281743594, 43.57004069740114], - [1.4670415028592458, 43.57066217499488], - [1.4669756698693561, 43.57062517717097], - [1.466940107915434, 43.57065984597108], - [1.46622735694703, 43.57028887205203], - [1.4663392246969522, 43.57017602030086], - [1.466443936876317, 43.57023162326513], - [1.4664886186203034, 43.57018590527602], - [1.466596059455071, 43.57024299097634], - [1.4665533877516452, 43.570288099375176], - [1.466587271484741, 43.570305216636456], - [1.4666304810160113, 43.5702608468828], - [1.466738510988364, 43.57031738057947], - [1.466695129128226, 43.570361897162], - [1.4667271535057864, 43.57037889439357], - [1.466772024870977, 43.57033356843158], - [1.4668810721508123, 43.57039103544315], - [1.4668373647627675, 43.57043600963493], - [1.4668706102760325, 43.57045319077784], - [1.4669154800950537, 43.57040855348447], - [1.4670229562389636, 43.57046463347157], - [1.4669782893058425, 43.570509831589334], - [1.4670107058136637, 43.57052799275681], - [1.4671878945951278, 43.57034674297887], - [1.4667019645927724, 43.570094028827185], - [1.4670581233196174, 43.569730852590936], - [1.467653281743594, 43.57004069740114] + [ + 1.467653281743594, + 43.57004069740114 + ], + [ + 1.4670415028592458, + 43.57066217499488 + ], + [ + 1.4669756698693561, + 43.57062517717097 + ], + [ + 1.466940107915434, + 43.57065984597108 + ], + [ + 1.46622735694703, + 43.57028887205203 + ], + [ + 1.4663392246969522, + 43.57017602030086 + ], + [ + 1.466443936876317, + 43.57023162326513 + ], + [ + 1.4664886186203034, + 43.57018590527602 + ], + [ + 1.466596059455071, + 43.57024299097634 + ], + [ + 1.4665533877516452, + 43.570288099375176 + ], + [ + 1.466587271484741, + 43.570305216636456 + ], + [ + 1.4666304810160113, + 43.5702608468828 + ], + [ + 1.466738510988364, + 43.57031738057947 + ], + [ + 1.466695129128226, + 43.570361897162 + ], + [ + 1.4667271535057864, + 43.57037889439357 + ], + [ + 1.466772024870977, + 43.57033356843158 + ], + [ + 1.4668810721508123, + 43.57039103544315 + ], + [ + 1.4668373647627675, + 43.57043600963493 + ], + [ + 1.4668706102760325, + 43.57045319077784 + ], + [ + 1.4669154800950537, + 43.57040855348447 + ], + [ + 1.4670229562389636, + 43.57046463347157 + ], + [ + 1.4669782893058425, + 43.570509831589334 + ], + [ + 1.4670107058136637, + 43.57052799275681 + ], + [ + 1.4671878945951278, + 43.57034674297887 + ], + [ + 1.4667019645927724, + 43.570094028827185 + ], + [ + 1.4670581233196174, + 43.569730852590936 + ], + [ + 1.467653281743594, + 43.57004069740114 + ] ] ], "type": "Polygon" @@ -131,19 +420,58 @@ "geometry": { "coordinates": [ [ - [1.4666302397496338, 43.57108342638125], - [1.4658420665138863, 43.57067556736092], - [1.4658876311189317, 43.57062916843108], - [1.4658657429858977, 43.57061771530854], - [1.4658975234260936, 43.570586842843454], - [1.4659170807853457, 43.57059762202914], - [1.4659601813029326, 43.57055083907224], - [1.4667501574340918, 43.570960274736194], - [1.4667040446162503, 43.57100720445905], - [1.466724486801354, 43.57101782101293], - [1.46669225594502, 43.57104930321475], - [1.4666724958267139, 43.57103899311315], - [1.4666302397496338, 43.57108342638125] + [ + 1.4666302397496338, + 43.57108342638125 + ], + [ + 1.4658420665138863, + 43.57067556736092 + ], + [ + 1.4658876311189317, + 43.57062916843108 + ], + [ + 1.4658657429858977, + 43.57061771530854 + ], + [ + 1.4658975234260936, + 43.570586842843454 + ], + [ + 1.4659170807853457, + 43.57059762202914 + ], + [ + 1.4659601813029326, + 43.57055083907224 + ], + [ + 1.4667501574340918, + 43.570960274736194 + ], + [ + 1.4667040446162503, + 43.57100720445905 + ], + [ + 1.466724486801354, + 43.57101782101293 + ], + [ + 1.46669225594502, + 43.57104930321475 + ], + [ + 1.4666724958267139, + 43.57103899311315 + ], + [ + 1.4666302397496338, + 43.57108342638125 + ] ] ], "type": "Polygon" @@ -160,19 +488,58 @@ "geometry": { "coordinates": [ [ - [1.465539299222371, 43.570729520064106], - [1.465276543492223, 43.570593038739105], - [1.4653746419407128, 43.570495711774726], - [1.4655083556894226, 43.5705654605907], - [1.4655526502953649, 43.57052164345919], - [1.4652333074255353, 43.57035584060921], - [1.4653562909927018, 43.57023097388904], - [1.4657675226886795, 43.570446394635695], - [1.4656447542397188, 43.57057048507784], - [1.4655927148519936, 43.570543305689625], - [1.465548742062822, 43.57058638844336], - [1.4656351304645057, 43.5706315184529], - [1.465539299222371, 43.570729520064106] + [ + 1.465539299222371, + 43.570729520064106 + ], + [ + 1.465276543492223, + 43.570593038739105 + ], + [ + 1.4653746419407128, + 43.570495711774726 + ], + [ + 1.4655083556894226, + 43.5705654605907 + ], + [ + 1.4655526502953649, + 43.57052164345919 + ], + [ + 1.4652333074255353, + 43.57035584060921 + ], + [ + 1.4653562909927018, + 43.57023097388904 + ], + [ + 1.4657675226886795, + 43.570446394635695 + ], + [ + 1.4656447542397188, + 43.57057048507784 + ], + [ + 1.4655927148519936, + 43.570543305689625 + ], + [ + 1.465548742062822, + 43.57058638844336 + ], + [ + 1.4656351304645057, + 43.5706315184529 + ], + [ + 1.465539299222371, + 43.570729520064106 + ] ] ], "type": "Polygon" @@ -189,21 +556,66 @@ "geometry": { "coordinates": [ [ - [1.4677219252347982, 43.56976678188457], - [1.4677036309291793, 43.5696946142009], - [1.4676557587653747, 43.569698491038054], - [1.4676411723362435, 43.56964534737793], - [1.4676722660397843, 43.56964216600315], - [1.4676459387607679, 43.569543246669696], - [1.467797171815448, 43.56952368816877], - [1.46781801897302, 43.56960172227781], - [1.4677821860465485, 43.56960589917088], - [1.4677926425310375, 43.569652316776114], - [1.4678366695354441, 43.569646790884576], - [1.4678438742565731, 43.56969098807818], - [1.4677752729568283, 43.56969698582975], - [1.4677879657414223, 43.56975849306352], - [1.4677219252347982, 43.56976678188457] + [ + 1.4677219252347982, + 43.56976678188457 + ], + [ + 1.4677036309291793, + 43.5696946142009 + ], + [ + 1.4676557587653747, + 43.569698491038054 + ], + [ + 1.4676411723362435, + 43.56964534737793 + ], + [ + 1.4676722660397843, + 43.56964216600315 + ], + [ + 1.4676459387607679, + 43.569543246669696 + ], + [ + 1.467797171815448, + 43.56952368816877 + ], + [ + 1.46781801897302, + 43.56960172227781 + ], + [ + 1.4677821860465485, + 43.56960589917088 + ], + [ + 1.4677926425310375, + 43.569652316776114 + ], + [ + 1.4678366695354441, + 43.569646790884576 + ], + [ + 1.4678438742565731, + 43.56969098807818 + ], + [ + 1.4677752729568283, + 43.56969698582975 + ], + [ + 1.4677879657414223, + 43.56975849306352 + ], + [ + 1.4677219252347982, + 43.56976678188457 + ] ] ], "type": "Polygon" @@ -220,11 +632,26 @@ "geometry": { "coordinates": [ [ - [1.4681078444042441, 43.56949712041214], - [1.4679762621142913, 43.56942690555255], - [1.4682276756475972, 43.56917280241282], - [1.4683615298010295, 43.5692423979591], - [1.4681078444042441, 43.56949712041214] + [ + 1.4681078444042441, + 43.56949712041214 + ], + [ + 1.4679762621142913, + 43.56942690555255 + ], + [ + 1.4682276756475972, + 43.56917280241282 + ], + [ + 1.4683615298010295, + 43.5692423979591 + ], + [ + 1.4681078444042441, + 43.56949712041214 + ] ] ], "type": "Polygon" @@ -241,12 +668,30 @@ "geometry": { "coordinates": [ [ - [1.4697614649906825, 43.569916576788245], - [1.4690183998410475, 43.56952762638883], - [1.469907014415952, 43.568630088660655], - [1.4706247404661497, 43.569005230990626], - [1.4698230988696537, 43.569821749019894], - [1.4697614649906825, 43.569916576788245] + [ + 1.4697614649906825, + 43.569916576788245 + ], + [ + 1.4690183998410475, + 43.56952762638883 + ], + [ + 1.469907014415952, + 43.568630088660655 + ], + [ + 1.4706247404661497, + 43.569005230990626 + ], + [ + 1.4698230988696537, + 43.569821749019894 + ], + [ + 1.4697614649906825, + 43.569916576788245 + ] ] ], "type": "Polygon" @@ -263,13 +708,34 @@ "geometry": { "coordinates": [ [ - [1.470556803334489, 43.56894944082751], - [1.4702622470308029, 43.56879639254865], - [1.470292094840545, 43.56876639938457], - [1.4699890122965371, 43.568607757592815], - [1.4701988500968355, 43.568391445003016], - [1.4707975492769094, 43.56870220288644], - [1.470556803334489, 43.56894944082751] + [ + 1.470556803334489, + 43.56894944082751 + ], + [ + 1.4702622470308029, + 43.56879639254865 + ], + [ + 1.470292094840545, + 43.56876639938457 + ], + [ + 1.4699890122965371, + 43.568607757592815 + ], + [ + 1.4701988500968355, + 43.568391445003016 + ], + [ + 1.4707975492769094, + 43.56870220288644 + ], + [ + 1.470556803334489, + 43.56894944082751 + ] ] ], "type": "Polygon" @@ -286,15 +752,42 @@ "geometry": { "coordinates": [ [ - [1.4700863706350447, 43.56811032992499], - [1.469938736003968, 43.56803629755606], - [1.4702461799896298, 43.567720133227084], - [1.4699983670576842, 43.56759451133419], - [1.4700750115827077, 43.56751744629773], - [1.4703186051377486, 43.567647805551616], - [1.4703993614309923, 43.56756522558362], - [1.4705432554910374, 43.567643018671475], - [1.4700863706350447, 43.56811032992499] + [ + 1.4700863706350447, + 43.56811032992499 + ], + [ + 1.469938736003968, + 43.56803629755606 + ], + [ + 1.4702461799896298, + 43.567720133227084 + ], + [ + 1.4699983670576842, + 43.56759451133419 + ], + [ + 1.4700750115827077, + 43.56751744629773 + ], + [ + 1.4703186051377486, + 43.567647805551616 + ], + [ + 1.4703993614309923, + 43.56756522558362 + ], + [ + 1.4705432554910374, + 43.567643018671475 + ], + [ + 1.4700863706350447, + 43.56811032992499 + ] ] ], "type": "Polygon" @@ -310,25 +803,82 @@ "geometry": { "coordinates": [ [ - [1.4692172469972604, 43.56844023133817], - [1.4690302477964963, 43.568343321608324], - [1.4691585244984822, 43.568213675413745], - [1.4691538069450587, 43.56819776314714], - [1.4687662114447164, 43.5679946106105], - [1.4687419705240359, 43.567997690869504], - [1.4686134366209274, 43.5681284349875], - [1.468508716125143, 43.568073172546946], - [1.4684794321244965, 43.56810498156062], - [1.468395058864445, 43.568061308319955], - [1.4686427171261016, 43.5678115071091], - [1.4686713528855364, 43.56782580766637], - [1.468752451183235, 43.567817509782856], - [1.4687726292060006, 43.56779371972871], - [1.4694117091423777, 43.568127910768226], - [1.4693899130114971, 43.568148896988106], - [1.4694062572902737, 43.56820860815358], - [1.4694357235645725, 43.568220939079765], - [1.4692172469972604, 43.56844023133817] + [ + 1.4692172469972604, + 43.56844023133817 + ], + [ + 1.4690302477964963, + 43.568343321608324 + ], + [ + 1.4691585244984822, + 43.568213675413745 + ], + [ + 1.4691538069450587, + 43.56819776314714 + ], + [ + 1.4687662114447164, + 43.5679946106105 + ], + [ + 1.4687419705240359, + 43.567997690869504 + ], + [ + 1.4686134366209274, + 43.5681284349875 + ], + [ + 1.468508716125143, + 43.568073172546946 + ], + [ + 1.4684794321244965, + 43.56810498156062 + ], + [ + 1.468395058864445, + 43.568061308319955 + ], + [ + 1.4686427171261016, + 43.5678115071091 + ], + [ + 1.4686713528855364, + 43.56782580766637 + ], + [ + 1.468752451183235, + 43.567817509782856 + ], + [ + 1.4687726292060006, + 43.56779371972871 + ], + [ + 1.4694117091423777, + 43.568127910768226 + ], + [ + 1.4693899130114971, + 43.568148896988106 + ], + [ + 1.4694062572902737, + 43.56820860815358 + ], + [ + 1.4694357235645725, + 43.568220939079765 + ], + [ + 1.4692172469972604, + 43.56844023133817 + ] ] ], "type": "Polygon" @@ -345,30 +895,102 @@ "geometry": { "coordinates": [ [ - [1.469490912075429, 43.57022628346135], - [1.4695650174136858, 43.57026435684202], - [1.4695487877031894, 43.57028153135954], - [1.4695818213533016, 43.57029721156181], - [1.4695568346110974, 43.57032281739805], - [1.4695679564698025, 43.57032965808091], - [1.4696563915750858, 43.57031883685494], - [1.4696672199398222, 43.57038067130878], - [1.4696450333524922, 43.57037983852794], - [1.4696398671326847, 43.57042491012902], - [1.4696181711544511, 43.57048390416426], - [1.4696053033635792, 43.570479306744204], - [1.4695804750512877, 43.570519847456495], - [1.4695553157966685, 43.57054788273601], - [1.4695367791341312, 43.57053777619785], - [1.469477067419831, 43.57058171350067], - [1.4694556526648626, 43.570569719056806], - [1.4694185817452308, 43.570485125437955], - [1.469392406896361, 43.57048707603846], - [1.469324699411544, 43.5705543827423], - [1.4692952759448872, 43.57053993412438], - [1.4692806203900375, 43.570554891618485], - [1.4692046407515704, 43.570514976235074], - [1.469490912075429, 43.57022628346135] + [ + 1.469490912075429, + 43.57022628346135 + ], + [ + 1.4695650174136858, + 43.57026435684202 + ], + [ + 1.4695487877031894, + 43.57028153135954 + ], + [ + 1.4695818213533016, + 43.57029721156181 + ], + [ + 1.4695568346110974, + 43.57032281739805 + ], + [ + 1.4695679564698025, + 43.57032965808091 + ], + [ + 1.4696563915750858, + 43.57031883685494 + ], + [ + 1.4696672199398222, + 43.57038067130878 + ], + [ + 1.4696450333524922, + 43.57037983852794 + ], + [ + 1.4696398671326847, + 43.57042491012902 + ], + [ + 1.4696181711544511, + 43.57048390416426 + ], + [ + 1.4696053033635792, + 43.570479306744204 + ], + [ + 1.4695804750512877, + 43.570519847456495 + ], + [ + 1.4695553157966685, + 43.57054788273601 + ], + [ + 1.4695367791341312, + 43.57053777619785 + ], + [ + 1.469477067419831, + 43.57058171350067 + ], + [ + 1.4694556526648626, + 43.570569719056806 + ], + [ + 1.4694185817452308, + 43.570485125437955 + ], + [ + 1.469392406896361, + 43.57048707603846 + ], + [ + 1.469324699411544, + 43.5705543827423 + ], + [ + 1.4692952759448872, + 43.57053993412438 + ], + [ + 1.4692806203900375, + 43.570554891618485 + ], + [ + 1.4692046407515704, + 43.570514976235074 + ], + [ + 1.469490912075429, + 43.57022628346135 + ] ] ], "type": "Polygon" @@ -376,23 +998,66 @@ }, { "type": "Feature", - "properties": { "name": "Résidence 4", "short_name": "R4", "height": 12 }, + "properties": { + "name": "Résidence 4", + "short_name": "R4", + "height": 12 + }, "geometry": { "coordinates": [ [ - [1.4683613151439943, 43.57340993918521], - [1.468361577883087, 43.57327318969695], - [1.4682799241763007, 43.57327704724409], - [1.4682772647076945, 43.57283265588603], - [1.4683436029655184, 43.572832900845384], - [1.468343727633453, 43.57280281485572], - [1.4684094584671072, 43.5728031219607], - [1.4684098384879292, 43.572827321212316], - [1.468413266698036, 43.57284273924046], - [1.4684012842327547, 43.57286751247139], - [1.4684830504942568, 43.572867266700456], - [1.4684936149294856, 43.57341020714395], - [1.4683613151439943, 43.57340993918521] + [ + 1.4683613151439943, + 43.57340993918521 + ], + [ + 1.468361577883087, + 43.57327318969695 + ], + [ + 1.4682799241763007, + 43.57327704724409 + ], + [ + 1.4682772647076945, + 43.57283265588603 + ], + [ + 1.4683436029655184, + 43.572832900845384 + ], + [ + 1.468343727633453, + 43.57280281485572 + ], + [ + 1.4684094584671072, + 43.5728031219607 + ], + [ + 1.4684098384879292, + 43.572827321212316 + ], + [ + 1.468413266698036, + 43.57284273924046 + ], + [ + 1.4684012842327547, + 43.57286751247139 + ], + [ + 1.4684830504942568, + 43.572867266700456 + ], + [ + 1.4684936149294856, + 43.57341020714395 + ], + [ + 1.4683613151439943, + 43.57340993918521 + ] ] ], "type": "Polygon" @@ -400,30 +1065,94 @@ }, { "type": "Feature", - "properties": { "name": "Résidence 7", "short_name": "R7", "height": 18 }, + "properties": { + "name": "Résidence 7", + "short_name": "R7", + "height": 18 + }, "geometry": { "coordinates": [ [ - [1.4689928543222948, 43.57312947604245], - [1.4688448359259212, 43.57305569239307], - [1.468868620684873, 43.57303183375538], - [1.468840143600886, 43.57301703023137], - [1.4691218335423741, 43.572733347642526], - [1.4691031575494549, 43.5727249687811], - [1.4691242892160687, 43.572702227561535], - [1.4691555797349167, 43.572717033037605], - [1.4691625500768168, 43.57271271853318], - [1.4691623865501242, 43.572562506710284], - [1.4692920511163265, 43.572562942898855], - [1.4692938095093666, 43.572541623852516], - [1.4693370323238923, 43.57254217539153], - [1.4693370825661702, 43.57258976968353], - [1.4693714812144947, 43.57258942054119], - [1.4693752639166462, 43.572913281078684], - [1.4693011432382832, 43.57291147534528], - [1.4692893921677808, 43.57292278886598], - [1.4692292983016557, 43.57289065870734], - [1.4689928543222948, 43.57312947604245] + [ + 1.4689928543222948, + 43.57312947604245 + ], + [ + 1.4688448359259212, + 43.57305569239307 + ], + [ + 1.468868620684873, + 43.57303183375538 + ], + [ + 1.468840143600886, + 43.57301703023137 + ], + [ + 1.4691218335423741, + 43.572733347642526 + ], + [ + 1.4691031575494549, + 43.5727249687811 + ], + [ + 1.4691242892160687, + 43.572702227561535 + ], + [ + 1.4691555797349167, + 43.572717033037605 + ], + [ + 1.4691625500768168, + 43.57271271853318 + ], + [ + 1.4691623865501242, + 43.572562506710284 + ], + [ + 1.4692920511163265, + 43.572562942898855 + ], + [ + 1.4692938095093666, + 43.572541623852516 + ], + [ + 1.4693370323238923, + 43.57254217539153 + ], + [ + 1.4693370825661702, + 43.57258976968353 + ], + [ + 1.4693714812144947, + 43.57258942054119 + ], + [ + 1.4693752639166462, + 43.572913281078684 + ], + [ + 1.4693011432382832, + 43.57291147534528 + ], + [ + 1.4692893921677808, + 43.57292278886598 + ], + [ + 1.4692292983016557, + 43.57289065870734 + ], + [ + 1.4689928543222948, + 43.57312947604245 + ] ] ], "type": "Polygon" @@ -431,29 +1160,90 @@ }, { "type": "Feature", - "properties": { "name": "Résidence 3", "short_name": "R3", "height": 21 }, + "properties": { + "name": "Résidence 3", + "short_name": "R3", + "height": 21 + }, "geometry": { "coordinates": [ [ - [1.4691608915918835, 43.57229708999341], - [1.4691561548851269, 43.57200207774966], - [1.4690799025374872, 43.57200270800911], - [1.4690792749863988, 43.57198887640706], - [1.4690228635158746, 43.571958001165314], - [1.4692803101921186, 43.57169873091266], - [1.4693532985284605, 43.57173659114494], - [1.4693793719041253, 43.57173460091266], - [1.4693887522399223, 43.57172178385321], - [1.4694202088702468, 43.57173826393415], - [1.4694473608000749, 43.57171290915204], - [1.469496042815166, 43.57174048459365], - [1.4693534170344265, 43.57188161476901], - [1.469353363987949, 43.57191865816034], - [1.4693672640823365, 43.57192441548116], - [1.4693690158851211, 43.572270027035955], - [1.4693347473600227, 43.5722697466131], - [1.4693339861251502, 43.572297227737494], - [1.4691608915918835, 43.57229708999341] + [ + 1.4691608915918835, + 43.57229708999341 + ], + [ + 1.4691561548851269, + 43.57200207774966 + ], + [ + 1.4690799025374872, + 43.57200270800911 + ], + [ + 1.4690792749863988, + 43.57198887640706 + ], + [ + 1.4690228635158746, + 43.571958001165314 + ], + [ + 1.4692803101921186, + 43.57169873091266 + ], + [ + 1.4693532985284605, + 43.57173659114494 + ], + [ + 1.4693793719041253, + 43.57173460091266 + ], + [ + 1.4693887522399223, + 43.57172178385321 + ], + [ + 1.4694202088702468, + 43.57173826393415 + ], + [ + 1.4694473608000749, + 43.57171290915204 + ], + [ + 1.469496042815166, + 43.57174048459365 + ], + [ + 1.4693534170344265, + 43.57188161476901 + ], + [ + 1.469353363987949, + 43.57191865816034 + ], + [ + 1.4693672640823365, + 43.57192441548116 + ], + [ + 1.4693690158851211, + 43.572270027035955 + ], + [ + 1.4693347473600227, + 43.5722697466131 + ], + [ + 1.4693339861251502, + 43.572297227737494 + ], + [ + 1.4691608915918835, + 43.57229708999341 + ] ] ], "type": "Polygon" @@ -470,11 +1260,26 @@ "geometry": { "coordinates": [ [ - [1.469002517501707, 43.57136506361658], - [1.469001840671467, 43.57130848753036], - [1.4690207905523494, 43.57130841035115], - [1.4690204800837137, 43.57136495580852], - [1.469002517501707, 43.57136506361658] + [ + 1.469002517501707, + 43.57136506361658 + ], + [ + 1.469001840671467, + 43.57130848753036 + ], + [ + 1.4690207905523494, + 43.57130841035115 + ], + [ + 1.4690204800837137, + 43.57136495580852 + ], + [ + 1.469002517501707, + 43.57136506361658 + ] ] ], "type": "Polygon" @@ -490,11 +1295,26 @@ "geometry": { "coordinates": [ [ - [1.4689172550997682, 43.57139676716605], - [1.4689159169172683, 43.57130242920917], - [1.4690014553219157, 43.571302594997576], - [1.4690024538884359, 43.57139718699233], - [1.4689172550997682, 43.57139676716605] + [ + 1.4689172550997682, + 43.57139676716605 + ], + [ + 1.4689159169172683, + 43.57130242920917 + ], + [ + 1.4690014553219157, + 43.571302594997576 + ], + [ + 1.4690024538884359, + 43.57139718699233 + ], + [ + 1.4689172550997682, + 43.57139676716605 + ] ] ], "type": "Polygon" @@ -502,17 +1322,42 @@ }, { "type": "Feature", - "properties": { "name": "IDK", "short_name": "IDK", "height": 3 }, + "properties": { + "name": "IDK", + "short_name": "IDK", + "height": 3 + }, "geometry": { "coordinates": [ [ - [1.4687776865714, 43.571397140347244], - [1.4687775107247774, 43.57136586343131], - [1.4687586449291814, 43.57136572585071], - [1.468757879695005, 43.571302603553164], - [1.4689159626066726, 43.57130239448804], - [1.4689174250125063, 43.571397284204465], - [1.4687776865714, 43.571397140347244] + [ + 1.4687776865714, + 43.571397140347244 + ], + [ + 1.4687775107247774, + 43.57136586343131 + ], + [ + 1.4687586449291814, + 43.57136572585071 + ], + [ + 1.468757879695005, + 43.571302603553164 + ], + [ + 1.4689159626066726, + 43.57130239448804 + ], + [ + 1.4689174250125063, + 43.571397284204465 + ], + [ + 1.4687776865714, + 43.571397140347244 + ] ] ], "type": "Polygon" @@ -520,15 +1365,34 @@ }, { "type": "Feature", - "properties": { "name": "Résidence 1", "short_name": "R1", "height": 18 }, + "properties": { + "name": "Résidence 1", + "short_name": "R1", + "height": 18 + }, "geometry": { "coordinates": [ [ - [1.4681837881526008, 43.57135899232321], - [1.4680571728146674, 43.57129275812292], - [1.468509584538765, 43.57083607988034], - [1.4686369517816331, 43.570902808338616], - [1.4681837881526008, 43.57135899232321] + [ + 1.4681837881526008, + 43.57135899232321 + ], + [ + 1.4680571728146674, + 43.57129275812292 + ], + [ + 1.468509584538765, + 43.57083607988034 + ], + [ + 1.4686369517816331, + 43.570902808338616 + ], + [ + 1.4681837881526008, + 43.57135899232321 + ] ] ], "type": "Polygon" @@ -545,13 +1409,34 @@ "geometry": { "coordinates": [ [ - [1.4670511894526044, 43.572302073098655], - [1.4673566333027566, 43.57246484486697], - [1.4672776630942508, 43.57254280752565], - [1.467009402297009, 43.572399653256326], - [1.4670743956718013, 43.57233660342919], - [1.4670371510122493, 43.57231571030621], - [1.4670511894526044, 43.572302073098655] + [ + 1.4670511894526044, + 43.572302073098655 + ], + [ + 1.4673566333027566, + 43.57246484486697 + ], + [ + 1.4672776630942508, + 43.57254280752565 + ], + [ + 1.467009402297009, + 43.572399653256326 + ], + [ + 1.4670743956718013, + 43.57233660342919 + ], + [ + 1.4670371510122493, + 43.57231571030621 + ], + [ + 1.4670511894526044, + 43.572302073098655 + ] ] ], "type": "Polygon" @@ -568,21 +1453,66 @@ "geometry": { "coordinates": [ [ - [1.4673566282526735, 43.57246544274071], - [1.4670514684245006, 43.57230207560866], - [1.4671294141083706, 43.5722244751538], - [1.4671744516259366, 43.57224767993307], - [1.4671871334761022, 43.572233719556834], - [1.4672610385704274, 43.572271886700776], - [1.4673180405510209, 43.572213158161304], - [1.4672557494732246, 43.57218092297802], - [1.4675598355503894, 43.57186857826093], - [1.4677104486631265, 43.571944368709495], - [1.4674069056088967, 43.572255316794894], - [1.4675847978380148, 43.57234679360289], - [1.46744703472649, 43.57248521913513], - [1.4673738172621142, 43.57244698048967], - [1.4673566282526735, 43.57246544274071] + [ + 1.4673566282526735, + 43.57246544274071 + ], + [ + 1.4670514684245006, + 43.57230207560866 + ], + [ + 1.4671294141083706, + 43.5722244751538 + ], + [ + 1.4671744516259366, + 43.57224767993307 + ], + [ + 1.4671871334761022, + 43.572233719556834 + ], + [ + 1.4672610385704274, + 43.572271886700776 + ], + [ + 1.4673180405510209, + 43.572213158161304 + ], + [ + 1.4672557494732246, + 43.57218092297802 + ], + [ + 1.4675598355503894, + 43.57186857826093 + ], + [ + 1.4677104486631265, + 43.571944368709495 + ], + [ + 1.4674069056088967, + 43.572255316794894 + ], + [ + 1.4675847978380148, + 43.57234679360289 + ], + [ + 1.46744703472649, + 43.57248521913513 + ], + [ + 1.4673738172621142, + 43.57244698048967 + ], + [ + 1.4673566282526735, + 43.57246544274071 + ] ] ], "type": "Polygon" @@ -599,27 +1529,90 @@ "geometry": { "coordinates": [ [ - [1.465072797400751, 43.57145419260243], - [1.4652324177260994, 43.57153776555447], - [1.4653259375905918, 43.57144467594168], - [1.4651669865018846, 43.571360693600866], - [1.465254641349162, 43.571270806140944], - [1.4655260137253379, 43.57140963465892], - [1.4654372707269658, 43.57150121938216], - [1.4653638104554148, 43.57146363099028], - [1.4652693746901946, 43.57155643239324], - [1.465859911506442, 43.57186453276], - [1.4658058550215571, 43.57191799393411], - [1.4658280188068034, 43.57192889033519], - [1.465792669965964, 43.571961255379165], - [1.4657724113977224, 43.57195171752136], - [1.4657357140789031, 43.571990303726494], - [1.4649501962577176, 43.57158052845023], - [1.4649831460449434, 43.57154451675254], - [1.4649635856216037, 43.57153471415518], - [1.4649962671863932, 43.571500385239915], - [1.4650178243069547, 43.57150998355607], - [1.465072797400751, 43.57145419260243] + [ + 1.465072797400751, + 43.57145419260243 + ], + [ + 1.4652324177260994, + 43.57153776555447 + ], + [ + 1.4653259375905918, + 43.57144467594168 + ], + [ + 1.4651669865018846, + 43.571360693600866 + ], + [ + 1.465254641349162, + 43.571270806140944 + ], + [ + 1.4655260137253379, + 43.57140963465892 + ], + [ + 1.4654372707269658, + 43.57150121938216 + ], + [ + 1.4653638104554148, + 43.57146363099028 + ], + [ + 1.4652693746901946, + 43.57155643239324 + ], + [ + 1.465859911506442, + 43.57186453276 + ], + [ + 1.4658058550215571, + 43.57191799393411 + ], + [ + 1.4658280188068034, + 43.57192889033519 + ], + [ + 1.465792669965964, + 43.571961255379165 + ], + [ + 1.4657724113977224, + 43.57195171752136 + ], + [ + 1.4657357140789031, + 43.571990303726494 + ], + [ + 1.4649501962577176, + 43.57158052845023 + ], + [ + 1.4649831460449434, + 43.57154451675254 + ], + [ + 1.4649635856216037, + 43.57153471415518 + ], + [ + 1.4649962671863932, + 43.571500385239915 + ], + [ + 1.4650178243069547, + 43.57150998355607 + ], + [ + 1.465072797400751, + 43.57145419260243 + ] ] ], "type": "Polygon" @@ -636,19 +1629,58 @@ "geometry": { "coordinates": [ [ - [1.4661786623695434, 43.57154106530305], - [1.465393820853052, 43.571129259111586], - [1.4654297881850766, 43.57109307719986], - [1.4654095461499708, 43.57108234419434], - [1.4654427220348794, 43.571051611505794], - [1.4654598897787139, 43.57106127483709], - [1.4655145234096096, 43.571005853122216], - [1.4663002551394868, 43.57141784305563], - [1.4662467834557162, 43.57147128496052], - [1.4662668776566363, 43.57148101143275], - [1.4662348350665297, 43.571511186853314], - [1.4662170909517727, 43.57150178560221], - [1.4661786623695434, 43.57154106530305] + [ + 1.4661786623695434, + 43.57154106530305 + ], + [ + 1.465393820853052, + 43.571129259111586 + ], + [ + 1.4654297881850766, + 43.57109307719986 + ], + [ + 1.4654095461499708, + 43.57108234419434 + ], + [ + 1.4654427220348794, + 43.571051611505794 + ], + [ + 1.4654598897787139, + 43.57106127483709 + ], + [ + 1.4655145234096096, + 43.571005853122216 + ], + [ + 1.4663002551394868, + 43.57141784305563 + ], + [ + 1.4662467834557162, + 43.57147128496052 + ], + [ + 1.4662668776566363, + 43.57148101143275 + ], + [ + 1.4662348350665297, + 43.571511186853314 + ], + [ + 1.4662170909517727, + 43.57150178560221 + ], + [ + 1.4661786623695434, + 43.57154106530305 + ] ] ], "type": "Polygon" @@ -665,13 +1697,34 @@ "geometry": { "coordinates": [ [ - [1.465960900800411, 43.571066457818375], - [1.465687580105822, 43.57092479973218], - [1.4657902901498119, 43.570818363307524], - [1.466016688981199, 43.570933918036246], - [1.4660358273823135, 43.57091639770229], - [1.4660841229466257, 43.57094102461963], - [1.465960900800411, 43.571066457818375] + [ + 1.465960900800411, + 43.571066457818375 + ], + [ + 1.465687580105822, + 43.57092479973218 + ], + [ + 1.4657902901498119, + 43.570818363307524 + ], + [ + 1.466016688981199, + 43.570933918036246 + ], + [ + 1.4660358273823135, + 43.57091639770229 + ], + [ + 1.4660841229466257, + 43.57094102461963 + ], + [ + 1.465960900800411, + 43.571066457818375 + ] ] ], "type": "Polygon" @@ -687,11 +1740,26 @@ "geometry": { "coordinates": [ [ - [1.464991010881704, 43.57230903860378], - [1.4644883816052072, 43.57204853489469], - [1.4647051389781325, 43.57182657393898], - [1.4652084456861871, 43.572088684922875], - [1.464991010881704, 43.57230903860378] + [ + 1.464991010881704, + 43.57230903860378 + ], + [ + 1.4644883816052072, + 43.57204853489469 + ], + [ + 1.4647051389781325, + 43.57182657393898 + ], + [ + 1.4652084456861871, + 43.572088684922875 + ], + [ + 1.464991010881704, + 43.57230903860378 + ] ] ], "type": "Polygon" @@ -699,35 +1767,114 @@ }, { "type": "Feature", - "properties": { "name": "Hall bio5", "short_name": "", "height": 13.7 }, + "properties": { + "name": "Hall bio5", + "short_name": "", + "height": 13.7 + }, "geometry": { "coordinates": [ [ - [1.4649492956472159, 43.57243707743643], - [1.4648619019474154, 43.572389103116166], - [1.464887727070618, 43.57236341360826], - [1.4648756800157514, 43.57235684552532], - [1.4648815900826833, 43.57234950395073], - [1.4648420900841472, 43.572330143341986], - [1.4648296545994128, 43.572344180303304], - [1.4648504009018666, 43.572352694950695], - [1.4648011955259221, 43.57241410646904], - [1.4646856769663543, 43.57237132091237], - [1.4647316700565511, 43.5723059831104], - [1.464769465028695, 43.57232161785248], - [1.4647866421180424, 43.57230177714899], - [1.4647476952296472, 43.57228023248834], - [1.4647427448297492, 43.572287475886725], - [1.464727547735862, 43.572279811781556], - [1.4647031565985742, 43.57230783663374], - [1.4646134868048364, 43.57225956978334], - [1.464704769398054, 43.57216796914045], - [1.4650428363723051, 43.57234701890346], - [1.4650102203072777, 43.57237553065062], - [1.4650185019674495, 43.57238035652921], - [1.4650071616689786, 43.572394990577465], - [1.4649941439191423, 43.57239348584616], - [1.4649492956472159, 43.57243707743643] + [ + 1.4649492956472159, + 43.57243707743643 + ], + [ + 1.4648619019474154, + 43.572389103116166 + ], + [ + 1.464887727070618, + 43.57236341360826 + ], + [ + 1.4648756800157514, + 43.57235684552532 + ], + [ + 1.4648815900826833, + 43.57234950395073 + ], + [ + 1.4648420900841472, + 43.572330143341986 + ], + [ + 1.4648296545994128, + 43.572344180303304 + ], + [ + 1.4648504009018666, + 43.572352694950695 + ], + [ + 1.4648011955259221, + 43.57241410646904 + ], + [ + 1.4646856769663543, + 43.57237132091237 + ], + [ + 1.4647316700565511, + 43.5723059831104 + ], + [ + 1.464769465028695, + 43.57232161785248 + ], + [ + 1.4647866421180424, + 43.57230177714899 + ], + [ + 1.4647476952296472, + 43.57228023248834 + ], + [ + 1.4647427448297492, + 43.572287475886725 + ], + [ + 1.464727547735862, + 43.572279811781556 + ], + [ + 1.4647031565985742, + 43.57230783663374 + ], + [ + 1.4646134868048364, + 43.57225956978334 + ], + [ + 1.464704769398054, + 43.57216796914045 + ], + [ + 1.4650428363723051, + 43.57234701890346 + ], + [ + 1.4650102203072777, + 43.57237553065062 + ], + [ + 1.4650185019674495, + 43.57238035652921 + ], + [ + 1.4650071616689786, + 43.572394990577465 + ], + [ + 1.4649941439191423, + 43.57239348584616 + ], + [ + 1.4649492956472159, + 43.57243707743643 + ] ] ], "type": "Polygon" @@ -744,11 +1891,26 @@ "geometry": { "coordinates": [ [ - [1.465173231997511, 43.572405532318356], - [1.465390038759523, 43.57218393801651], - [1.4657930570455164, 43.57239471603663], - [1.4655750456870464, 43.57261469186835], - [1.465173231997511, 43.572405532318356] + [ + 1.465173231997511, + 43.572405532318356 + ], + [ + 1.465390038759523, + 43.57218393801651 + ], + [ + 1.4657930570455164, + 43.57239471603663 + ], + [ + 1.4655750456870464, + 43.57261469186835 + ], + [ + 1.465173231997511, + 43.572405532318356 + ] ] ], "type": "Polygon" @@ -763,15 +1925,42 @@ "geometry": { "coordinates": [ [ - [1.4660808755718904, 43.57289392700244], - [1.4660156694627915, 43.57286059317238], - [1.4660299212444556, 43.57284758019259], - [1.4657762063565656, 43.57271691446138], - [1.4659903828032839, 43.57249638110545], - [1.4662918272833565, 43.57265210051375], - [1.4661155344265069, 43.572832453009624], - [1.4661337904874472, 43.5728416597087], - [1.4660808755718904, 43.57289392700244] + [ + 1.4660808755718904, + 43.57289392700244 + ], + [ + 1.4660156694627915, + 43.57286059317238 + ], + [ + 1.4660299212444556, + 43.57284758019259 + ], + [ + 1.4657762063565656, + 43.57271691446138 + ], + [ + 1.4659903828032839, + 43.57249638110545 + ], + [ + 1.4662918272833565, + 43.57265210051375 + ], + [ + 1.4661155344265069, + 43.572832453009624 + ], + [ + 1.4661337904874472, + 43.5728416597087 + ], + [ + 1.4660808755718904, + 43.57289392700244 + ] ] ], "type": "Polygon" @@ -779,19 +1968,49 @@ }, { "type": "Feature", - "properties": { "name": "TWB", "height": 9.3 }, + "properties": { + "name": "TWB", + "height": 9.3 + }, "geometry": { "coordinates": [ [ - [1.4667790220126165, 43.573381554488236], - [1.4662402448018668, 43.57310027157504], - [1.4665555394401508, 43.57278650216381], - [1.466754680305968, 43.57289307062024], - [1.4667840988431067, 43.572861373355835], - [1.4668504791314092, 43.57289525663802], - [1.4668187976302818, 43.57292913990116], - [1.467089381210343, 43.57306820313613], - [1.4667790220126165, 43.573381554488236] + [ + 1.4667790220126165, + 43.573381554488236 + ], + [ + 1.4662402448018668, + 43.57310027157504 + ], + [ + 1.4665555394401508, + 43.57278650216381 + ], + [ + 1.466754680305968, + 43.57289307062024 + ], + [ + 1.4667840988431067, + 43.572861373355835 + ], + [ + 1.4668504791314092, + 43.57289525663802 + ], + [ + 1.4668187976302818, + 43.57292913990116 + ], + [ + 1.467089381210343, + 43.57306820313613 + ], + [ + 1.4667790220126165, + 43.573381554488236 + ] ] ], "type": "Polygon" @@ -808,11 +2027,26 @@ "geometry": { "coordinates": [ [ - [1.4660763534338344, 43.57210546251159], - [1.4662304004947657, 43.572182764900674], - [1.466074694559353, 43.572341349594296], - [1.4659222410874975, 43.572261324181], - [1.4660763534338344, 43.57210546251159] + [ + 1.4660763534338344, + 43.57210546251159 + ], + [ + 1.4662304004947657, + 43.572182764900674 + ], + [ + 1.466074694559353, + 43.572341349594296 + ], + [ + 1.4659222410874975, + 43.572261324181 + ], + [ + 1.4660763534338344, + 43.57210546251159 + ] ] ], "type": "Polygon" @@ -828,13 +2062,34 @@ "geometry": { "coordinates": [ [ - [1.4672750420205887, 43.57112508248565], - [1.4667116697185634, 43.57169718309038], - [1.4666678097752026, 43.57167255585233], - [1.4661885269652828, 43.5721623419351], - [1.466048479126556, 43.57208994194724], - [1.4670888906692028, 43.57102942553689], - [1.4672750420205887, 43.57112508248565] + [ + 1.4672750420205887, + 43.57112508248565 + ], + [ + 1.4667116697185634, + 43.57169718309038 + ], + [ + 1.4666678097752026, + 43.57167255585233 + ], + [ + 1.4661885269652828, + 43.5721623419351 + ], + [ + 1.466048479126556, + 43.57208994194724 + ], + [ + 1.4670888906692028, + 43.57102942553689 + ], + [ + 1.4672750420205887, + 43.57112508248565 + ] ] ], "type": "Polygon" @@ -842,33 +2097,106 @@ }, { "type": "Feature", - "properties": { "name": "Résidence 2", "short_name": "R2", "height": 21 }, + "properties": { + "name": "Résidence 2", + "short_name": "R2", + "height": 21 + }, "geometry": { "coordinates": [ [ - [1.4691548261369292, 43.57151204154812], - [1.469151020125281, 43.571215127557906], - [1.4690738125439395, 43.571215384155465], - [1.4690734583809615, 43.571202297671505], - [1.4690139589609714, 43.571170222942584], - [1.469273257353251, 43.57090994629286], - [1.4693519017169194, 43.57094893229717], - [1.469371414980003, 43.570948075462155], - [1.4693850151326728, 43.57093479451825], - [1.4694193111712934, 43.570952359637204], - [1.4694417809891434, 43.57092922508923], - [1.4694890858697818, 43.57095450172437], - [1.4693474251876637, 43.57109719104517], - [1.469348500686607, 43.571134074141355], - [1.4693617651821285, 43.571140567642146], - [1.4693639576852604, 43.57149868257383], - [1.4693940415750149, 43.571497627918035], - [1.4693916154538442, 43.57156618051741], - [1.469246952206987, 43.57157010053592], - [1.469246048251165, 43.57152645517428], - [1.4692994228922203, 43.571526806726354], - [1.4692994228922203, 43.571512393099795], - [1.4691548261369292, 43.57151204154812] + [ + 1.4691548261369292, + 43.57151204154812 + ], + [ + 1.469151020125281, + 43.571215127557906 + ], + [ + 1.4690738125439395, + 43.571215384155465 + ], + [ + 1.4690734583809615, + 43.571202297671505 + ], + [ + 1.4690139589609714, + 43.571170222942584 + ], + [ + 1.469273257353251, + 43.57090994629286 + ], + [ + 1.4693519017169194, + 43.57094893229717 + ], + [ + 1.469371414980003, + 43.570948075462155 + ], + [ + 1.4693850151326728, + 43.57093479451825 + ], + [ + 1.4694193111712934, + 43.570952359637204 + ], + [ + 1.4694417809891434, + 43.57092922508923 + ], + [ + 1.4694890858697818, + 43.57095450172437 + ], + [ + 1.4693474251876637, + 43.57109719104517 + ], + [ + 1.469348500686607, + 43.571134074141355 + ], + [ + 1.4693617651821285, + 43.571140567642146 + ], + [ + 1.4693639576852604, + 43.57149868257383 + ], + [ + 1.4693940415750149, + 43.571497627918035 + ], + [ + 1.4693916154538442, + 43.57156618051741 + ], + [ + 1.469246952206987, + 43.57157010053592 + ], + [ + 1.469246048251165, + 43.57152645517428 + ], + [ + 1.4692994228922203, + 43.571526806726354 + ], + [ + 1.4692994228922203, + 43.571512393099795 + ], + [ + 1.4691548261369292, + 43.57151204154812 + ] ] ], "type": "Polygon" @@ -885,17 +2213,50 @@ "geometry": { "coordinates": [ [ - [1.4688460220451702, 43.5703509645102], - [1.468819917214546, 43.570336501092754], - [1.468794580172613, 43.57036209021345], - [1.4686074233084696, 43.5702657197472], - [1.468631964221231, 43.570239674890985], - [1.4685763151086348, 43.57020987355162], - [1.4687688200070852, 43.57001522213778], - [1.4685045108459178, 43.569877426330976], - [1.4686761655047462, 43.56970147122678], - [1.469211611000759, 43.569981303199114], - [1.4688460220451702, 43.5703509645102] + [ + 1.4688460220451702, + 43.5703509645102 + ], + [ + 1.468819917214546, + 43.570336501092754 + ], + [ + 1.468794580172613, + 43.57036209021345 + ], + [ + 1.4686074233084696, + 43.5702657197472 + ], + [ + 1.468631964221231, + 43.570239674890985 + ], + [ + 1.4685763151086348, + 43.57020987355162 + ], + [ + 1.4687688200070852, + 43.57001522213778 + ], + [ + 1.4685045108459178, + 43.569877426330976 + ], + [ + 1.4686761655047462, + 43.56970147122678 + ], + [ + 1.469211611000759, + 43.569981303199114 + ], + [ + 1.4688460220451702, + 43.5703509645102 + ] ] ], "type": "Polygon" @@ -911,11 +2272,26 @@ "geometry": { "coordinates": [ [ - [1.468658722773597, 43.57218777216994], - [1.4686611289760663, 43.572041334011914], - [1.4689763414799017, 43.57204656395203], - [1.4689727321769226, 43.57219125878862], - [1.468658722773597, 43.57218777216994] + [ + 1.468658722773597, + 43.57218777216994 + ], + [ + 1.4686611289760663, + 43.572041334011914 + ], + [ + 1.4689763414799017, + 43.57204656395203 + ], + [ + 1.4689727321769226, + 43.57219125878862 + ], + [ + 1.468658722773597, + 43.57218777216994 + ] ] ], "type": "Polygon" @@ -931,15 +2307,42 @@ "geometry": { "coordinates": [ [ - [1.4686543650473425, 43.57232454804637], - [1.4686552539396587, 43.57229943179183], - [1.4686356983220037, 43.57230007579855], - [1.4686365872131546, 43.572229879032705], - [1.4689548104477694, 43.57223116704753], - [1.4689530326642455, 43.57229621175833], - [1.468935254830086, 43.57229621175833], - [1.468935254830086, 43.57232519205277], - [1.4686543650473425, 43.57232454804637] + [ + 1.4686543650473425, + 43.57232454804637 + ], + [ + 1.4686552539396587, + 43.57229943179183 + ], + [ + 1.4686356983220037, + 43.57230007579855 + ], + [ + 1.4686365872131546, + 43.572229879032705 + ], + [ + 1.4689548104477694, + 43.57223116704753 + ], + [ + 1.4689530326642455, + 43.57229621175833 + ], + [ + 1.468935254830086, + 43.57229621175833 + ], + [ + 1.468935254830086, + 43.57232519205277 + ], + [ + 1.4686543650473425, + 43.57232454804637 + ] ] ], "type": "Polygon" @@ -955,15 +2358,42 @@ "geometry": { "coordinates": [ [ - [1.4687611325545618, 43.57254032042974], - [1.4687601453008483, 43.572513855542326], - [1.4687404002407334, 43.572514570809744], - [1.4687413874931963, 43.57244733563914], - [1.469059282965219, 43.572444474566254], - [1.469058295711477, 43.572513855542326], - [1.46904052515751, 43.57251242500749], - [1.46904052515751, 43.57254032042974], - [1.4687611325545618, 43.57254032042974] + [ + 1.4687611325545618, + 43.57254032042974 + ], + [ + 1.4687601453008483, + 43.572513855542326 + ], + [ + 1.4687404002407334, + 43.572514570809744 + ], + [ + 1.4687413874931963, + 43.57244733563914 + ], + [ + 1.469059282965219, + 43.572444474566254 + ], + [ + 1.469058295711477, + 43.572513855542326 + ], + [ + 1.46904052515751, + 43.57251242500749 + ], + [ + 1.46904052515751, + 43.57254032042974 + ], + [ + 1.4687611325545618, + 43.57254032042974 + ] ] ], "type": "Polygon" @@ -980,11 +2410,26 @@ "geometry": { "coordinates": [ [ - [1.470777021160444, 43.568315847164854], - [1.4704135681352284, 43.56812823860483], - [1.4706756783485844, 43.56786640931284], - [1.4710373868683178, 43.568056596472786], - [1.470777021160444, 43.568315847164854] + [ + 1.470777021160444, + 43.568315847164854 + ], + [ + 1.4704135681352284, + 43.56812823860483 + ], + [ + 1.4706756783485844, + 43.56786640931284 + ], + [ + 1.4710373868683178, + 43.568056596472786 + ], + [ + 1.470777021160444, + 43.568315847164854 + ] ] ], "type": "Polygon" @@ -1000,21 +2445,66 @@ "geometry": { "coordinates": [ [ - [1.4659815568585657, 43.57015445162551], - [1.4653614974729123, 43.56983170088213], - [1.4654827629952933, 43.569708893674544], - [1.4655928712043078, 43.56976650661821], - [1.4657090064875717, 43.56964793008876], - [1.4655630587222959, 43.569572089387464], - [1.4658916187624413, 43.56923880029953], - [1.465990987165128, 43.569290174569886], - [1.465964316873908, 43.569317500240174], - [1.4664466341962736, 43.56956829820601], - [1.4664708824838897, 43.569542005137265], - [1.4666176133629847, 43.56961781170179], - [1.4664726690363636, 43.569764820977696], - [1.4664009642860947, 43.569727926506545], - [1.4659815568585657, 43.57015445162551] + [ + 1.4659815568585657, + 43.57015445162551 + ], + [ + 1.4653614974729123, + 43.56983170088213 + ], + [ + 1.4654827629952933, + 43.569708893674544 + ], + [ + 1.4655928712043078, + 43.56976650661821 + ], + [ + 1.4657090064875717, + 43.56964793008876 + ], + [ + 1.4655630587222959, + 43.569572089387464 + ], + [ + 1.4658916187624413, + 43.56923880029953 + ], + [ + 1.465990987165128, + 43.569290174569886 + ], + [ + 1.465964316873908, + 43.569317500240174 + ], + [ + 1.4664466341962736, + 43.56956829820601 + ], + [ + 1.4664708824838897, + 43.569542005137265 + ], + [ + 1.4666176133629847, + 43.56961781170179 + ], + [ + 1.4664726690363636, + 43.569764820977696 + ], + [ + 1.4664009642860947, + 43.569727926506545 + ], + [ + 1.4659815568585657, + 43.57015445162551 + ] ] ], "type": "Polygon" @@ -1031,25 +2521,82 @@ "geometry": { "coordinates": [ [ - [1.4652059312881534, 43.56927817758316], - [1.4652771673482192, 43.568758514443786], - [1.4652755558664978, 43.56872840618527], - [1.4652544334708466, 43.56870350650166], - [1.465223420429254, 43.56867909265526], - [1.4646255192470505, 43.56839084533405], - [1.464712314320849, 43.56829975883787], - [1.4653006789741596, 43.56860675768283], - [1.465345160733733, 43.56862148311032], - [1.4653789055171274, 43.56862148311032], - [1.4654214699606314, 43.56861453715484], - [1.46607538873522, 43.56839810804419], - [1.466127932900008, 43.56848780947897], - [1.4654728965006427, 43.56870471964285], - [1.4654398971509863, 43.568723550434584], - [1.4654222191203132, 43.568746804851486], - [1.465410664955641, 43.568773267547044], - [1.4653414365754713, 43.569288422369], - [1.4652059312881534, 43.56927817758316] + [ + 1.4652059312881534, + 43.56927817758316 + ], + [ + 1.4652771673482192, + 43.568758514443786 + ], + [ + 1.4652755558664978, + 43.56872840618527 + ], + [ + 1.4652544334708466, + 43.56870350650166 + ], + [ + 1.465223420429254, + 43.56867909265526 + ], + [ + 1.4646255192470505, + 43.56839084533405 + ], + [ + 1.464712314320849, + 43.56829975883787 + ], + [ + 1.4653006789741596, + 43.56860675768283 + ], + [ + 1.465345160733733, + 43.56862148311032 + ], + [ + 1.4653789055171274, + 43.56862148311032 + ], + [ + 1.4654214699606314, + 43.56861453715484 + ], + [ + 1.46607538873522, + 43.56839810804419 + ], + [ + 1.466127932900008, + 43.56848780947897 + ], + [ + 1.4654728965006427, + 43.56870471964285 + ], + [ + 1.4654398971509863, + 43.568723550434584 + ], + [ + 1.4654222191203132, + 43.568746804851486 + ], + [ + 1.465410664955641, + 43.568773267547044 + ], + [ + 1.4653414365754713, + 43.569288422369 + ], + [ + 1.4652059312881534, + 43.56927817758316 + ] ] ], "type": "Polygon" @@ -1066,48 +2613,174 @@ "geometry": { "coordinates": [ [ - [1.4660884641955931, 43.56818945308683], - [1.466104826801086, 43.568061086312355], - [1.4662136127645624, 43.56806870683005], - [1.4662085438606312, 43.56811158752487], - [1.4662950720631898, 43.56811711608097], - [1.4663518059319074, 43.567656057446555], - [1.4663389515439178, 43.56763399603204], - [1.4663103818369336, 43.567609291603134], - [1.4657264140986683, 43.567307131467174], - [1.4658083877701813, 43.567225436994505], - [1.4658738492346686, 43.56726049947389], - [1.4659239711075998, 43.56721086960954], - [1.465856324727639, 43.56717703405087], - [1.465923595978694, 43.56711073511656], - [1.4660674528012407, 43.56718260848436], - [1.466000185333968, 43.5672504945866], - [1.4659509497322176, 43.567224337511504], - [1.4658997105244964, 43.567272987631725], - [1.466391051942992, 43.567529341536044], - [1.466421349302749, 43.56754073057445], - [1.4664574964445762, 43.56754790037698], - [1.466491712936886, 43.56754242881479], - [1.4670391792810733, 43.56735551119297], - [1.4670046821341884, 43.56730053080719], - [1.466953646072085, 43.5673171448928], - [1.4669052024668758, 43.56724309292099], - [1.4670690050857047, 43.56718633987646], - [1.4671164215722001, 43.5672634019449], - [1.467037479687491, 43.56728988157391], - [1.467070578416724, 43.56734506929624], - [1.4671494059136592, 43.56731835274954], - [1.4672068818071864, 43.56741201543883], - [1.4665552336251721, 43.567628078660476], - [1.4665177353948593, 43.567652692913924], - [1.4664994087501668, 43.56767440518411], - [1.4664885026903107, 43.567705321286894], - [1.4664202579607206, 43.56821112285948], - [1.4662840888136373, 43.56820222809634], - [1.4662913051841429, 43.56814203989572], - [1.4662053724041755, 43.568136075368585], - [1.4661975243632241, 43.56819663093211], - [1.4660884641955931, 43.56818945308683] + [ + 1.4660884641955931, + 43.56818945308683 + ], + [ + 1.466104826801086, + 43.568061086312355 + ], + [ + 1.4662136127645624, + 43.56806870683005 + ], + [ + 1.4662085438606312, + 43.56811158752487 + ], + [ + 1.4662950720631898, + 43.56811711608097 + ], + [ + 1.4663518059319074, + 43.567656057446555 + ], + [ + 1.4663389515439178, + 43.56763399603204 + ], + [ + 1.4663103818369336, + 43.567609291603134 + ], + [ + 1.4657264140986683, + 43.567307131467174 + ], + [ + 1.4658083877701813, + 43.567225436994505 + ], + [ + 1.4658738492346686, + 43.56726049947389 + ], + [ + 1.4659239711075998, + 43.56721086960954 + ], + [ + 1.465856324727639, + 43.56717703405087 + ], + [ + 1.465923595978694, + 43.56711073511656 + ], + [ + 1.4660674528012407, + 43.56718260848436 + ], + [ + 1.466000185333968, + 43.5672504945866 + ], + [ + 1.4659509497322176, + 43.567224337511504 + ], + [ + 1.4658997105244964, + 43.567272987631725 + ], + [ + 1.466391051942992, + 43.567529341536044 + ], + [ + 1.466421349302749, + 43.56754073057445 + ], + [ + 1.4664574964445762, + 43.56754790037698 + ], + [ + 1.466491712936886, + 43.56754242881479 + ], + [ + 1.4670391792810733, + 43.56735551119297 + ], + [ + 1.4670046821341884, + 43.56730053080719 + ], + [ + 1.466953646072085, + 43.5673171448928 + ], + [ + 1.4669052024668758, + 43.56724309292099 + ], + [ + 1.4670690050857047, + 43.56718633987646 + ], + [ + 1.4671164215722001, + 43.5672634019449 + ], + [ + 1.467037479687491, + 43.56728988157391 + ], + [ + 1.467070578416724, + 43.56734506929624 + ], + [ + 1.4671494059136592, + 43.56731835274954 + ], + [ + 1.4672068818071864, + 43.56741201543883 + ], + [ + 1.4665552336251721, + 43.567628078660476 + ], + [ + 1.4665177353948593, + 43.567652692913924 + ], + [ + 1.4664994087501668, + 43.56767440518411 + ], + [ + 1.4664885026903107, + 43.567705321286894 + ], + [ + 1.4664202579607206, + 43.56821112285948 + ], + [ + 1.4662840888136373, + 43.56820222809634 + ], + [ + 1.4662913051841429, + 43.56814203989572 + ], + [ + 1.4662053724041755, + 43.568136075368585 + ], + [ + 1.4661975243632241, + 43.56819663093211 + ], + [ + 1.4660884641955931, + 43.56818945308683 + ] ] ], "type": "Polygon" @@ -1123,30 +2796,102 @@ "geometry": { "coordinates": [ [ - [1.464329854169904, 43.571950139444], - [1.4640449063722087, 43.571801420025395], - [1.46397134881812, 43.571876327236964], - [1.4638249399895642, 43.57179942737292], - [1.463898645992856, 43.57172486372917], - [1.4638502579955173, 43.57169902119804], - [1.4642098225365316, 43.571335377347964], - [1.4644283262586555, 43.57144993399976], - [1.4645197190804424, 43.571358043022485], - [1.464139107766755, 43.57115980320398], - [1.4640928396617028, 43.57120668556615], - [1.4638877957212628, 43.5710998492529], - [1.4640599679144373, 43.5709254151011], - [1.464110061065071, 43.570952915896584], - [1.4641451779136787, 43.570955722099825], - [1.464176938004158, 43.5709654502686], - [1.4641983696093064, 43.570983409961485], - [1.4642099891544262, 43.571003427529774], - [1.4647907343973259, 43.57130767498563], - [1.4646671934806363, 43.5714330625207], - [1.464640539028693, 43.57141945940299], - [1.4645497318657874, 43.571512679100124], - [1.4646902903338912, 43.57158643434937], - [1.464329854169904, 43.571950139444] + [ + 1.464329854169904, + 43.571950139444 + ], + [ + 1.4640449063722087, + 43.571801420025395 + ], + [ + 1.46397134881812, + 43.571876327236964 + ], + [ + 1.4638249399895642, + 43.57179942737292 + ], + [ + 1.463898645992856, + 43.57172486372917 + ], + [ + 1.4638502579955173, + 43.57169902119804 + ], + [ + 1.4642098225365316, + 43.571335377347964 + ], + [ + 1.4644283262586555, + 43.57144993399976 + ], + [ + 1.4645197190804424, + 43.571358043022485 + ], + [ + 1.464139107766755, + 43.57115980320398 + ], + [ + 1.4640928396617028, + 43.57120668556615 + ], + [ + 1.4638877957212628, + 43.5710998492529 + ], + [ + 1.4640599679144373, + 43.5709254151011 + ], + [ + 1.464110061065071, + 43.570952915896584 + ], + [ + 1.4641451779136787, + 43.570955722099825 + ], + [ + 1.464176938004158, + 43.5709654502686 + ], + [ + 1.4641983696093064, + 43.570983409961485 + ], + [ + 1.4642099891544262, + 43.571003427529774 + ], + [ + 1.4647907343973259, + 43.57130767498563 + ], + [ + 1.4646671934806363, + 43.5714330625207 + ], + [ + 1.464640539028693, + 43.57141945940299 + ], + [ + 1.4645497318657874, + 43.571512679100124 + ], + [ + 1.4646902903338912, + 43.57158643434937 + ], + [ + 1.464329854169904, + 43.571950139444 + ] ] ], "type": "Polygon" @@ -1154,21 +2899,56 @@ }, { "type": "Feature", - "properties": { "height": 4.4 }, + "properties": { + "height": 4.4 + }, "geometry": { "coordinates": [ [ - [1.4685297264329904, 43.568859980621994], - [1.468407708647021, 43.56879754124512], - [1.4685133113986524, 43.56868798409482], - [1.4684678814834342, 43.568664541938006], - [1.4685119228338692, 43.56861871343267], - [1.4686209763518434, 43.56867408236974], - [1.4686528275841226, 43.568641044708414], - [1.4687001272454552, 43.56866551690638], - [1.468582063040202, 43.56878789381349], - [1.4685941329814511, 43.568793845437455], - [1.4685297264329904, 43.568859980621994] + [ + 1.4685297264329904, + 43.568859980621994 + ], + [ + 1.468407708647021, + 43.56879754124512 + ], + [ + 1.4685133113986524, + 43.56868798409482 + ], + [ + 1.4684678814834342, + 43.568664541938006 + ], + [ + 1.4685119228338692, + 43.56861871343267 + ], + [ + 1.4686209763518434, + 43.56867408236974 + ], + [ + 1.4686528275841226, + 43.568641044708414 + ], + [ + 1.4687001272454552, + 43.56866551690638 + ], + [ + 1.468582063040202, + 43.56878789381349 + ], + [ + 1.4685941329814511, + 43.568793845437455 + ], + [ + 1.4685297264329904, + 43.568859980621994 + ] ] ], "type": "Polygon" @@ -1176,18 +2956,44 @@ }, { "type": "Feature", - "properties": { "height": 4.7 }, + "properties": { + "height": 4.7 + }, "geometry": { "coordinates": [ [ - [1.4680022742402628, 43.56907660293419], - [1.4679957660217724, 43.56903165404211], - [1.4682370711949773, 43.56901733435373], - [1.468232712605328, 43.568979438426936], - [1.4683740314924876, 43.56898211057671], - [1.4683703161872188, 43.569064153302946], - [1.4682955496109287, 43.5690573514766], - [1.4680022742402628, 43.56907660293419] + [ + 1.4680022742402628, + 43.56907660293419 + ], + [ + 1.4679957660217724, + 43.56903165404211 + ], + [ + 1.4682370711949773, + 43.56901733435373 + ], + [ + 1.468232712605328, + 43.568979438426936 + ], + [ + 1.4683740314924876, + 43.56898211057671 + ], + [ + 1.4683703161872188, + 43.569064153302946 + ], + [ + 1.4682955496109287, + 43.5690573514766 + ], + [ + 1.4680022742402628, + 43.56907660293419 + ] ] ], "type": "Polygon" @@ -1195,16 +3001,36 @@ }, { "type": "Feature", - "properties": { "height": 4.1 }, + "properties": { + "height": 4.1 + }, "geometry": { "coordinates": [ [ - [1.4679232079615474, 43.56908754093999], - [1.4677339028045822, 43.56910888923693], - [1.4677045661434533, 43.56903747007894], - [1.4677689391599245, 43.56905994040113], - [1.4679141161652751, 43.569041610489336], - [1.4679232079615474, 43.56908754093999] + [ + 1.4679232079615474, + 43.56908754093999 + ], + [ + 1.4677339028045822, + 43.56910888923693 + ], + [ + 1.4677045661434533, + 43.56903747007894 + ], + [ + 1.4677689391599245, + 43.56905994040113 + ], + [ + 1.4679141161652751, + 43.569041610489336 + ], + [ + 1.4679232079615474, + 43.56908754093999 + ] ] ], "type": "Polygon" @@ -1212,25 +3038,72 @@ }, { "type": "Feature", - "properties": { "height": 5.3 }, + "properties": { + "height": 5.3 + }, "geometry": { "coordinates": [ [ - [1.4675318979190592, 43.568724093009536], - [1.46748876607964, 43.568656761828265], - [1.4675063680763003, 43.5686511745765], - [1.467498321449682, 43.56863817814093], - [1.4675328964582093, 43.5686266645032], - [1.4675166355661418, 43.56860042869397], - [1.4676458845129332, 43.568556702320194], - [1.4676740625050684, 43.56860054780867], - [1.467658304526907, 43.56860637798914], - [1.4676968507753827, 43.568665518433875], - [1.4676589645729337, 43.56867839340171], - [1.4676482357371015, 43.56866284627009], - [1.467590906517188, 43.56868218865483], - [1.4676028088195494, 43.56870065086676], - [1.4675318979190592, 43.568724093009536] + [ + 1.4675318979190592, + 43.568724093009536 + ], + [ + 1.46748876607964, + 43.568656761828265 + ], + [ + 1.4675063680763003, + 43.5686511745765 + ], + [ + 1.467498321449682, + 43.56863817814093 + ], + [ + 1.4675328964582093, + 43.5686266645032 + ], + [ + 1.4675166355661418, + 43.56860042869397 + ], + [ + 1.4676458845129332, + 43.568556702320194 + ], + [ + 1.4676740625050684, + 43.56860054780867 + ], + [ + 1.467658304526907, + 43.56860637798914 + ], + [ + 1.4676968507753827, + 43.568665518433875 + ], + [ + 1.4676589645729337, + 43.56867839340171 + ], + [ + 1.4676482357371015, + 43.56866284627009 + ], + [ + 1.467590906517188, + 43.56868218865483 + ], + [ + 1.4676028088195494, + 43.56870065086676 + ], + [ + 1.4675318979190592, + 43.568724093009536 + ] ] ], "type": "Polygon" @@ -1238,15 +3111,32 @@ }, { "type": "Feature", - "properties": { "height": 6 }, + "properties": { + "height": 6 + }, "geometry": { "coordinates": [ [ - [1.4663325230153816, 43.571268895183806], - [1.4660092832303633, 43.57109860984849], - [1.4661271742887436, 43.570986630418645], - [1.4664508007951724, 43.57115204837379], - [1.4663325230153816, 43.571268895183806] + [ + 1.4663325230153816, + 43.571268895183806 + ], + [ + 1.4660092832303633, + 43.57109860984849 + ], + [ + 1.4661271742887436, + 43.570986630418645 + ], + [ + 1.4664508007951724, + 43.57115204837379 + ], + [ + 1.4663325230153816, + 43.571268895183806 + ] ] ], "type": "Polygon" @@ -1254,19 +3144,48 @@ }, { "type": "Feature", - "properties": { "height": 5.2 }, + "properties": { + "height": 5.2 + }, "geometry": { "coordinates": [ [ - [1.4675987812041171, 43.57276806327212], - [1.4675059990602222, 43.572720328369684], - [1.4677417617085098, 43.57247603458134], - [1.4678361923023715, 43.57252399287108], - [1.4677399030951221, 43.572624379867165], - [1.4677717543265487, 43.572640654699484], - [1.4677279198514839, 43.57268650285485], - [1.4676952304293707, 43.57267010658046], - [1.4675987812041171, 43.57276806327212] + [ + 1.4675987812041171, + 43.57276806327212 + ], + [ + 1.4675059990602222, + 43.572720328369684 + ], + [ + 1.4677417617085098, + 43.57247603458134 + ], + [ + 1.4678361923023715, + 43.57252399287108 + ], + [ + 1.4677399030951221, + 43.572624379867165 + ], + [ + 1.4677717543265487, + 43.572640654699484 + ], + [ + 1.4677279198514839, + 43.57268650285485 + ], + [ + 1.4676952304293707, + 43.57267010658046 + ], + [ + 1.4675987812041171, + 43.57276806327212 + ] ] ], "type": "Polygon" @@ -1274,15 +3193,32 @@ }, { "type": "Feature", - "properties": { "height": 3 }, + "properties": { + "height": 3 + }, "geometry": { "coordinates": [ [ - [1.4679769806022023, 43.57276038349872], - [1.4679190305363647, 43.57273101455678], - [1.4679619458803757, 43.572686926819756], - [1.468018890118401, 43.5727173888674], - [1.4679769806022023, 43.57276038349872] + [ + 1.4679769806022023, + 43.57276038349872 + ], + [ + 1.4679190305363647, + 43.57273101455678 + ], + [ + 1.4679619458803757, + 43.572686926819756 + ], + [ + 1.468018890118401, + 43.5727173888674 + ], + [ + 1.4679769806022023, + 43.57276038349872 + ] ] ], "type": "Polygon" @@ -1290,15 +3226,32 @@ }, { "type": "Feature", - "properties": { "height": 3 }, + "properties": { + "height": 3 + }, "geometry": { "coordinates": [ [ - [1.4679072142182008, 43.57283009875559], - [1.4678503925950395, 43.572801071634444], - [1.4678923299995006, 43.57275696207341], - [1.467950464838168, 43.57278722562762], - [1.4679072142182008, 43.57283009875559] + [ + 1.4679072142182008, + 43.57283009875559 + ], + [ + 1.4678503925950395, + 43.572801071634444 + ], + [ + 1.4678923299995006, + 43.57275696207341 + ], + [ + 1.467950464838168, + 43.57278722562762 + ], + [ + 1.4679072142182008, + 43.57283009875559 + ] ] ], "type": "Polygon" @@ -1315,19 +3268,58 @@ "geometry": { "coordinates": [ [ - [1.465104347028955, 43.57064183282944], - [1.4646308509144603, 43.570400991657465], - [1.4646509674823278, 43.57038070808889], - [1.4646107343465644, 43.57035920992794], - [1.4651053877867923, 43.5698546242825], - [1.4652814505043352, 43.56994714703927], - [1.4648133986282517, 43.57042040381751], - [1.4648926315285848, 43.57046107665741], - [1.4649027270359625, 43.57045010494983], - [1.464943374739363, 43.570472625821225], - [1.4649957119767407, 43.57043836329561], - [1.465199752982926, 43.57054703612661], - [1.465104347028955, 43.57064183282944] + [ + 1.465104347028955, + 43.57064183282944 + ], + [ + 1.4646308509144603, + 43.570400991657465 + ], + [ + 1.4646509674823278, + 43.57038070808889 + ], + [ + 1.4646107343465644, + 43.57035920992794 + ], + [ + 1.4651053877867923, + 43.5698546242825 + ], + [ + 1.4652814505043352, + 43.56994714703927 + ], + [ + 1.4648133986282517, + 43.57042040381751 + ], + [ + 1.4648926315285848, + 43.57046107665741 + ], + [ + 1.4649027270359625, + 43.57045010494983 + ], + [ + 1.464943374739363, + 43.570472625821225 + ], + [ + 1.4649957119767407, + 43.57043836329561 + ], + [ + 1.465199752982926, + 43.57054703612661 + ], + [ + 1.465104347028955, + 43.57064183282944 + ] ] ], "type": "Polygon" @@ -1343,23 +3335,74 @@ "geometry": { "coordinates": [ [ - [1.4645941262868405, 43.57091036281443], - [1.4642428059379426, 43.57072739589549], - [1.4644944971766165, 43.57047423440625], - [1.464535655140594, 43.570497137439276], - [1.4645585743076595, 43.57047455789461], - [1.4645327580464027, 43.57046107601869], - [1.464574599613968, 43.5704193369759], - [1.464600080599297, 43.57043294031885], - [1.4646307929768057, 43.570401185149024], - [1.4651046854580727, 43.57064214136577], - [1.4650174434226244, 43.570731421298575], - [1.4648104739361543, 43.57062564752317], - [1.4648319021075622, 43.570577490207484], - [1.4647983744956434, 43.57056048606847], - [1.4647276677315801, 43.57063318244428], - [1.4648189699796035, 43.57068167012869], - [1.4645941262868405, 43.57091036281443] + [ + 1.4645941262868405, + 43.57091036281443 + ], + [ + 1.4642428059379426, + 43.57072739589549 + ], + [ + 1.4644944971766165, + 43.57047423440625 + ], + [ + 1.464535655140594, + 43.570497137439276 + ], + [ + 1.4645585743076595, + 43.57047455789461 + ], + [ + 1.4645327580464027, + 43.57046107601869 + ], + [ + 1.464574599613968, + 43.5704193369759 + ], + [ + 1.464600080599297, + 43.57043294031885 + ], + [ + 1.4646307929768057, + 43.570401185149024 + ], + [ + 1.4651046854580727, + 43.57064214136577 + ], + [ + 1.4650174434226244, + 43.570731421298575 + ], + [ + 1.4648104739361543, + 43.57062564752317 + ], + [ + 1.4648319021075622, + 43.570577490207484 + ], + [ + 1.4647983744956434, + 43.57056048606847 + ], + [ + 1.4647276677315801, + 43.57063318244428 + ], + [ + 1.4648189699796035, + 43.57068167012869 + ], + [ + 1.4645941262868405, + 43.57091036281443 + ] ] ], "type": "Polygon" @@ -1367,15 +3410,32 @@ }, { "type": "Feature", - "properties": { "height": 10.4 }, + "properties": { + "height": 10.4 + }, "geometry": { "coordinates": [ [ - [1.4646001572163527, 43.57043296507533], - [1.4645746918624525, 43.57041914970716], - [1.4646271625765337, 43.570367772765536], - [1.4646509515490322, 43.57038073793643], - [1.4646001572163527, 43.57043296507533] + [ + 1.4646001572163527, + 43.57043296507533 + ], + [ + 1.4645746918624525, + 43.57041914970716 + ], + [ + 1.4646271625765337, + 43.570367772765536 + ], + [ + 1.4646509515490322, + 43.57038073793643 + ], + [ + 1.4646001572163527, + 43.57043296507533 + ] ] ], "type": "Polygon" @@ -1391,53 +3451,182 @@ "geometry": { "coordinates": [ [ - [1.4670812267973474, 43.568834057309914], - [1.4668420260681216, 43.568709255639845], - [1.4668570628054454, 43.568694808349534], - [1.4668200147928019, 43.56867525297764], - [1.4668104594236127, 43.5686852128575], - [1.466783235252592, 43.568670625243726], - [1.466792416319663, 43.5686617138972], - [1.4667555188230779, 43.568642385056734], - [1.466724164613538, 43.56867351201791], - [1.466599183137447, 43.56860853909828], - [1.4667754482590283, 43.56843039597965], - [1.466793050255717, 43.56843926273814], - [1.466863777383395, 43.56836739906316], - [1.46684516955807, 43.56835671035563], - [1.4669227282407178, 43.56827844641953], - [1.4669416713419139, 43.568288527827036], - [1.4670258711840916, 43.56820096736422], - [1.4670086044633592, 43.56819234349703], - [1.4670849961336785, 43.568113327946406], - [1.467103939234903, 43.568123166455536], - [1.4671879434825428, 43.56803870235777], - [1.4671698385720333, 43.56802825651826], - [1.4672474405099933, 43.56794933448171], - [1.4672770315489458, 43.56796376293167], - [1.4674511740026048, 43.567786900063], - [1.4679049736688228, 43.56802329760109], - [1.4677409536147934, 43.5681886094487], - [1.4676792146088644, 43.56815556835687], - [1.4676094224368512, 43.568226603798564], - [1.4673143278903638, 43.56807323223049], - [1.466968687621005, 43.56842487650562], - [1.4668949742725488, 43.56838603631019], - [1.4668267668076282, 43.56845574775858], - [1.466900900516947, 43.568493653590565], - [1.4668414609245986, 43.56855394738048], - [1.4669426813666462, 43.568606169489215], - [1.466964401782576, 43.56858477629564], - [1.4671123289102184, 43.56866256377626], - [1.4670936806951715, 43.568682465911905], - [1.467274613795496, 43.5687761976738], - [1.4671993608742184, 43.56885350264096], - [1.4671081317373762, 43.56880573847684], - [1.4670812267973474, 43.568834057309914] + [ + 1.4670812267973474, + 43.568834057309914 + ], + [ + 1.4668420260681216, + 43.568709255639845 + ], + [ + 1.4668570628054454, + 43.568694808349534 + ], + [ + 1.4668200147928019, + 43.56867525297764 + ], + [ + 1.4668104594236127, + 43.5686852128575 + ], + [ + 1.466783235252592, + 43.568670625243726 + ], + [ + 1.466792416319663, + 43.5686617138972 + ], + [ + 1.4667555188230779, + 43.568642385056734 + ], + [ + 1.466724164613538, + 43.56867351201791 + ], + [ + 1.466599183137447, + 43.56860853909828 + ], + [ + 1.4667754482590283, + 43.56843039597965 + ], + [ + 1.466793050255717, + 43.56843926273814 + ], + [ + 1.466863777383395, + 43.56836739906316 + ], + [ + 1.46684516955807, + 43.56835671035563 + ], + [ + 1.4669227282407178, + 43.56827844641953 + ], + [ + 1.4669416713419139, + 43.568288527827036 + ], + [ + 1.4670258711840916, + 43.56820096736422 + ], + [ + 1.4670086044633592, + 43.56819234349703 + ], + [ + 1.4670849961336785, + 43.568113327946406 + ], + [ + 1.467103939234903, + 43.568123166455536 + ], + [ + 1.4671879434825428, + 43.56803870235777 + ], + [ + 1.4671698385720333, + 43.56802825651826 + ], + [ + 1.4672474405099933, + 43.56794933448171 + ], + [ + 1.4672770315489458, + 43.56796376293167 + ], + [ + 1.4674511740026048, + 43.567786900063 + ], + [ + 1.4679049736688228, + 43.56802329760109 + ], + [ + 1.4677409536147934, + 43.5681886094487 + ], + [ + 1.4676792146088644, + 43.56815556835687 + ], + [ + 1.4676094224368512, + 43.568226603798564 + ], + [ + 1.4673143278903638, + 43.56807323223049 + ], + [ + 1.466968687621005, + 43.56842487650562 + ], + [ + 1.4668949742725488, + 43.56838603631019 + ], + [ + 1.4668267668076282, + 43.56845574775858 + ], + [ + 1.466900900516947, + 43.568493653590565 + ], + [ + 1.4668414609245986, + 43.56855394738048 + ], + [ + 1.4669426813666462, + 43.568606169489215 + ], + [ + 1.466964401782576, + 43.56858477629564 + ], + [ + 1.4671123289102184, + 43.56866256377626 + ], + [ + 1.4670936806951715, + 43.568682465911905 + ], + [ + 1.467274613795496, + 43.5687761976738 + ], + [ + 1.4671993608742184, + 43.56885350264096 + ], + [ + 1.4671081317373762, + 43.56880573847684 + ], + [ + 1.4670812267973474, + 43.568834057309914 + ] ] ], "type": "Polygon" } } ] -} +} \ No newline at end of file From bafd6584037fc42203dc7ca7ddb9afb15235cb92 Mon Sep 17 00:00:00 2001 From: pierrbt Date: Sun, 5 Apr 2026 21:09:07 +0200 Subject: [PATCH 5/7] chore: update readme --- README.MD | 61 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/README.MD b/README.MD index 7a9c35d..4a2b85f 100644 --- a/README.MD +++ b/README.MD @@ -1,30 +1,57 @@

- Logo -
- Map-INSA + Logo +
+ Map-INSA

- + Map-INSA preview

+Application 3D du campus INSA Toulouse, migree vers une stack moderne: -## 🏗️ Ajouter / Modifier un bâtiment +- Vite + TypeScript +- maptalks + maptalks.three + three +- source de donnees unique: `json/map.geojson` -- Rendez-vous sur [geojson.io](https://geojson.io/) -- Ouvrer le fichier [json/map.geojson](./json/map.geojson) -- Faites vos modifications - > **Remplissez le tableau dans `Table` comme ceci**: - > | name | short_name | description | height | - > | ---- | ----------- | ---------- | ------ | - > | | | | | +## Lancer le projet - > Pour récupérer la hauteur d'un bâtiment, vous pouvez vous rendre sur le site de [OSMBuildings](https://www.osmbuildings.org/) et cliquer sur le bâtiment en question. -- Enregistrez le fichier dans le dossier [json](./json) sous le nom `map.geojson` -- Ouvrez le fichier [js/buildins.js](./js/buildins.js) et copiez le contenu de `map.geojson` dans la variable `buildings` comme ceci : +```bash +npm install +npm run dev +``` +Build production: -```js -const buildings = COLLER LE CONTENU DE map.geojson ICI +```bash +npm run build ``` +Preview locale du build: + +```bash +npm run preview +``` + +## Ajouter / Modifier un batiment + +- Rendez-vous sur [geojson.io](https://geojson.io/) +- Ouvrez le fichier [`json/map.geojson`](./json/map.geojson) +- Faites vos modifications puis sauvegardez le fichier + +Proprietes attendues dans `properties`: + +| name | short_name | description | height | +| ---- | ---------- | ----------- | ------ | +| string (optionnel) | string (optionnel) | string (optionnel) | number (requis) | + +Pour recuperer la hauteur d'un batiment, vous pouvez utiliser [OSMBuildings](https://www.osmbuildings.org/). + +## Deploiement + +La configuration Vite utilise `base: './'` pour etre compatible avec: + +- hebergement en sous-dossier sur serveur INSA +- affichage dans navigateur standard +- integration WebView dans une application mobile + From 620ce11ff3e2f7e41c9f1e4c9a62381bc57ba094 Mon Sep 17 00:00:00 2001 From: pierrbt Date: Sun, 5 Apr 2026 21:09:38 +0200 Subject: [PATCH 6/7] feat: new implementation of the map made partially with opencode ai assistant --- index.html | 45 ++------ src/config.ts | 26 +++++ src/data.ts | 11 ++ src/main.ts | 40 +++++++ src/map/buildings3d.ts | 210 +++++++++++++++++++++++++++++++++++ src/map/createMap.ts | 31 ++++++ src/styles/main.css | 243 +++++++++++++++++++++++++++++++++++++++++ src/types.ts | 22 ++++ src/ui/controls.ts | 37 +++++++ src/ui/modal.ts | 29 +++++ src/ui/search.ts | 84 ++++++++++++++ src/utils/dom.ts | 7 ++ 12 files changed, 748 insertions(+), 37 deletions(-) create mode 100644 src/config.ts create mode 100644 src/data.ts create mode 100644 src/main.ts create mode 100644 src/map/buildings3d.ts create mode 100644 src/map/createMap.ts create mode 100644 src/styles/main.css create mode 100644 src/types.ts create mode 100644 src/ui/controls.ts create mode 100644 src/ui/modal.ts create mode 100644 src/ui/search.ts create mode 100644 src/utils/dom.ts diff --git a/index.html b/index.html index 79de87a..208d50c 100644 --- a/index.html +++ b/index.html @@ -1,11 +1,10 @@ - - + + - Map-INSA - @@ -30,12 +28,8 @@ property="og:description" content="Find your way around the INSA Toulouse campus." /> - - - -
- -
    -
    - -
    - -
    - -
    -
    -
    - -