Compare commits

...
This repository has been archived on 2022-03-23. You can view files and clone it, but cannot push or open issues or pull requests.

1 Commits
master ... map

21 changed files with 1708 additions and 25 deletions

View File

@ -15,6 +15,7 @@ module.exports = {
extends: ['eslint:recommended', 'plugin:react/recommended', 'prettier'], extends: ['eslint:recommended', 'plugin:react/recommended', 'prettier'],
plugins: ['@babel', 'prettier'], plugins: ['@babel', 'prettier'],
rules: { rules: {
'prettier/prettier': 'error', 'no-unused-vars': 'warn',
'prettier/prettier': 'warn',
}, },
} }

559
package-lock.json generated
View File

@ -9,9 +9,12 @@
"version": "1.0.0", "version": "1.0.0",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"axios": "^0.24.0", "axios": "^0.24.0",
"core-js": "^3.20.2", "core-js": "^3.20.2",
"moment": "^2.29.1", "moment": "^2.29.1",
"ol": "^6.13.0",
"proj4": "^2.7.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-redux": "^7.2.6", "react-redux": "^7.2.6",
@ -44,6 +47,7 @@
"less": "^4.1.2", "less": "^4.1.2",
"less-loader": "^10.2.0", "less-loader": "^10.2.0",
"lint-staged": "^12.1.7", "lint-staged": "^12.1.7",
"mini-css-extract-plugin": "^2.6.0",
"postcss": "^8.4.5", "postcss": "^8.4.5",
"postcss-flexbugs-fixes": "^5.0.2", "postcss-flexbugs-fixes": "^5.0.2",
"postcss-loader": "^6.2.1", "postcss-loader": "^6.2.1",
@ -63,6 +67,11 @@
"webpack-merge": "^5.8.0" "webpack-merge": "^5.8.0"
} }
}, },
"node_modules/@amap/amap-jsapi-loader": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
},
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
"version": "7.16.7", "version": "7.16.7",
"resolved": "https://registry.npmmirror.com/@babel/code-frame/download/@babel/code-frame-7.16.7.tgz", "resolved": "https://registry.npmmirror.com/@babel/code-frame/download/@babel/code-frame-7.16.7.tgz",
@ -2119,6 +2128,45 @@
"dev": true, "dev": true,
"license": "BSD-3-Clause" "license": "BSD-3-Clause"
}, },
"node_modules/@mapbox/jsonlint-lines-primitives": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
"integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@mapbox/mapbox-gl-style-spec": {
"version": "13.23.1",
"resolved": "https://registry.npmmirror.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.23.1.tgz",
"integrity": "sha512-C6wh8A/5EdsgzhL6y6yl464VCQNIxK0yjrpnvCvchcFe3sNK2RbBw/J9u3m+p8Y6S6MsGuSMt3AkGAXOKMYweQ==",
"dependencies": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
"@mapbox/point-geometry": "^0.1.0",
"@mapbox/unitbezier": "^0.0.0",
"csscolorparser": "~1.0.2",
"json-stringify-pretty-compact": "^2.0.0",
"minimist": "^1.2.5",
"rw": "^1.3.3",
"sort-object": "^0.3.2"
},
"bin": {
"gl-style-composite": "bin/gl-style-composite",
"gl-style-format": "bin/gl-style-format",
"gl-style-migrate": "bin/gl-style-migrate",
"gl-style-validate": "bin/gl-style-validate"
}
},
"node_modules/@mapbox/point-geometry": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
"integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
},
"node_modules/@mapbox/unitbezier": {
"version": "0.0.0",
"resolved": "https://registry.npmmirror.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
"integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA=="
},
"node_modules/@nodelib/fs.scandir": { "node_modules/@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -2154,6 +2202,11 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/@petamoriken/float16": {
"version": "3.6.2",
"resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.6.2.tgz",
"integrity": "sha512-zZnksXtFBqvONcXWuAtSWrl3YXaDbU2ArRCCuzM42mP0GBJclD6e0GC3zEemmrjiMSOHcLPyRC4vOnAsnomJIw=="
},
"node_modules/@svgr/babel-plugin-add-jsx-attribute": { "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz",
@ -4150,6 +4203,11 @@
"url": "https://github.com/sponsors/fb55" "url": "https://github.com/sponsors/fb55"
} }
}, },
"node_modules/csscolorparser": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz",
"integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="
},
"node_modules/cssdb": { "node_modules/cssdb": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.0.0.tgz", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.0.0.tgz",
@ -5773,6 +5831,24 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/geotiff": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.0.4.tgz",
"integrity": "sha512-aG8h9bJccGusioPsEWsEqx8qdXpZN71A20WCvRKGxcnHSOWLKmC5ZmsAmodfxb9TRQvs+89KikGuPzxchhA+Uw==",
"dependencies": {
"@petamoriken/float16": "^3.4.7",
"lerc": "^3.0.0",
"lru-cache": "^6.0.0",
"pako": "^2.0.4",
"parse-headers": "^2.0.2",
"web-worker": "^1.2.0",
"xml-utils": "^1.0.2"
},
"engines": {
"browsers": "defaults",
"node": ">=10.19"
}
},
"node_modules/get-intrinsic": { "node_modules/get-intrinsic": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@ -6251,6 +6327,11 @@
"postcss": "^8.1.0" "postcss": "^8.1.0"
} }
}, },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"node_modules/ignore": { "node_modules/ignore": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
@ -6799,6 +6880,11 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true "dev": true
}, },
"node_modules/json-stringify-pretty-compact": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
"integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
},
"node_modules/json5": { "node_modules/json5": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
@ -6866,6 +6952,11 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/lerc": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz",
"integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
},
"node_modules/less": { "node_modules/less": {
"version": "4.1.2", "version": "4.1.2",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz",
@ -7393,7 +7484,6 @@
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": { "dependencies": {
"yallist": "^4.0.0" "yallist": "^4.0.0"
}, },
@ -7416,6 +7506,11 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/mapbox-to-css-font": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz",
"integrity": "sha512-QQ/iKiM43DM9+aujTL45Iz5o7gDeSFmy4LPl3HZmNcwCE++NxGazf+yFpY+wCb+YS23sDa1ghpo3zrNFOcHlow=="
},
"node_modules/mdn-data": { "node_modules/mdn-data": {
"version": "2.0.14", "version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
@ -7473,6 +7568,11 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/mgrs": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/mgrs/-/mgrs-1.0.0.tgz",
"integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA=="
},
"node_modules/micromatch": { "node_modules/micromatch": {
"version": "4.0.4", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
@ -7528,6 +7628,66 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/mini-css-extract-plugin": {
"version": "2.6.0",
"resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz",
"integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==",
"dev": true,
"dependencies": {
"schema-utils": "^4.0.0"
},
"engines": {
"node": ">= 12.13.0"
},
"peerDependencies": {
"webpack": "^5.0.0"
}
},
"node_modules/mini-css-extract-plugin/node_modules/ajv": {
"version": "8.10.0",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.10.0.tgz",
"integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
"peerDependencies": {
"ajv": "^8.8.2"
}
},
"node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz",
"integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.8.0",
"ajv-formats": "^2.1.1",
"ajv-keywords": "^5.0.0"
},
"engines": {
"node": ">= 12.13.0"
}
},
"node_modules/minimalistic-assert": { "node_modules/minimalistic-assert": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@ -7549,8 +7709,7 @@
"node_modules/minimist": { "node_modules/minimist": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
"dev": true
}, },
"node_modules/mkdirp": { "node_modules/mkdirp": {
"version": "0.5.5", "version": "0.5.5",
@ -7872,6 +8031,27 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true "dev": true
}, },
"node_modules/ol": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/ol/-/ol-6.13.0.tgz",
"integrity": "sha512-Fa6yt+FArWE9fwYRRhi/8+ULcFDRS2ZuDcLp3R9bQeDVa5T4E4TT9iqLeJhmHG+bzWiLWJHIeFUqw8GD2gW0YA==",
"dependencies": {
"geotiff": "^2.0.2",
"ol-mapbox-style": "^7.0.0",
"pbf": "3.2.1",
"rbush": "^3.0.1"
}
},
"node_modules/ol-mapbox-style": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/ol-mapbox-style/-/ol-mapbox-style-7.0.0.tgz",
"integrity": "sha512-y0OrKfx/TBcbGUf0UefDuYPSfMCCjPz0aUttm/kG461CNwzJpGavvf/lJ7nyNfeHSJFr0iEEdAbB98UUUQQkww==",
"dependencies": {
"@mapbox/mapbox-gl-style-spec": "^13.20.1",
"mapbox-to-css-font": "^2.4.1",
"webfont-matcher": "^1.1.0"
}
},
"node_modules/on-finished": { "node_modules/on-finished": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@ -8015,6 +8195,11 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/pako": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/pako/-/pako-2.0.4.tgz",
"integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg=="
},
"node_modules/param-case": { "node_modules/param-case": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@ -8037,6 +8222,11 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/parse-headers": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.4.tgz",
"integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
},
"node_modules/parse-json": { "node_modules/parse-json": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@ -8131,6 +8321,18 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/pbf": {
"version": "3.2.1",
"resolved": "https://registry.npmmirror.com/pbf/-/pbf-3.2.1.tgz",
"integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
"dependencies": {
"ieee754": "^1.1.12",
"resolve-protobuf-schema": "^2.1.0"
},
"bin": {
"pbf": "bin/pbf"
}
},
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@ -9347,6 +9549,15 @@
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/proj4": {
"version": "2.7.5",
"resolved": "https://registry.npmmirror.com/proj4/-/proj4-2.7.5.tgz",
"integrity": "sha512-5ecXUXbHAfvdhfBQpU7EhUfPCQGUCPmVup/4gnZA3bJY3JcK/xxzm4QQDz1xiXokN6ux65VDczlCtBtKrTSpAQ==",
"dependencies": {
"mgrs": "1.0.0",
"wkt-parser": "^1.3.1"
}
},
"node_modules/prompts": { "node_modules/prompts": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@ -9370,6 +9581,11 @@
"react-is": "^16.13.1" "react-is": "^16.13.1"
} }
}, },
"node_modules/protocol-buffers-schema": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
},
"node_modules/proxy-addr": { "node_modules/proxy-addr": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -9440,6 +9656,11 @@
} }
] ]
}, },
"node_modules/quickselect": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz",
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
},
"node_modules/randombytes": { "node_modules/randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@ -9482,6 +9703,14 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/rbush": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz",
"integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
"dependencies": {
"quickselect": "^2.0.0"
}
},
"node_modules/react": { "node_modules/react": {
"version": "17.0.2", "version": "17.0.2",
"resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
@ -10044,6 +10273,14 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/resolve-protobuf-schema": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
"integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
"dependencies": {
"protocol-buffers-schema": "^3.3.1"
}
},
"node_modules/resolve-url-loader": { "node_modules/resolve-url-loader": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
@ -10186,6 +10423,11 @@
"queue-microtask": "^1.2.2" "queue-microtask": "^1.2.2"
} }
}, },
"node_modules/rw": {
"version": "1.3.3",
"resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz",
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
"node_modules/rxjs": { "node_modules/rxjs": {
"version": "7.5.1", "version": "7.5.1",
"resolved": "https://registry.npmmirror.com/rxjs/download/rxjs-7.5.1.tgz", "resolved": "https://registry.npmmirror.com/rxjs/download/rxjs-7.5.1.tgz",
@ -10494,6 +10736,34 @@
"websocket-driver": "^0.7.4" "websocket-driver": "^0.7.4"
} }
}, },
"node_modules/sort-asc": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/sort-asc/-/sort-asc-0.1.0.tgz",
"integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sort-desc": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/sort-desc/-/sort-desc-0.1.1.tgz",
"integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sort-object": {
"version": "0.3.2",
"resolved": "https://registry.npmmirror.com/sort-object/-/sort-object-0.3.2.tgz",
"integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==",
"dependencies": {
"sort-asc": "^0.1.0",
"sort-desc": "^0.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-list-map": { "node_modules/source-list-map": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
@ -11180,6 +11450,16 @@
"minimalistic-assert": "^1.0.0" "minimalistic-assert": "^1.0.0"
} }
}, },
"node_modules/web-worker": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz",
"integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
},
"node_modules/webfont-matcher": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/webfont-matcher/-/webfont-matcher-1.1.0.tgz",
"integrity": "sha512-ov8lMvF9wi4PD7fK2Axn9PQEpO9cYI0fIoGqErwd+wi8xacFFDmX114D5Q2Lw0Wlgmb+Qw/dKI2KTtimrJf85g=="
},
"node_modules/webpack": { "node_modules/webpack": {
"version": "5.65.0", "version": "5.65.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz",
@ -11567,6 +11847,11 @@
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"dev": true "dev": true
}, },
"node_modules/wkt-parser": {
"version": "1.3.2",
"resolved": "https://registry.npmmirror.com/wkt-parser/-/wkt-parser-1.3.2.tgz",
"integrity": "sha512-A26BOOo7sHAagyxG7iuRhnKMO7Q3mEOiOT4oGUmohtN/Li5wameeU4S6f8vWw6NADTVKljBs8bzA8JPQgSEMVQ=="
},
"node_modules/word-wrap": { "node_modules/word-wrap": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmmirror.com/word-wrap/download/word-wrap-1.2.3.tgz", "resolved": "https://registry.npmmirror.com/word-wrap/download/word-wrap-1.2.3.tgz",
@ -11697,11 +11982,15 @@
} }
} }
}, },
"node_modules/xml-utils": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.0.2.tgz",
"integrity": "sha512-rEn0FvKi+YGjv9omf22oAf+0d6Ly/sgJ/CUufU/nOzS7SRLmgwSujrewc03KojXxt+aPaTRpm593TgehtUBMSQ=="
},
"node_modules/yallist": { "node_modules/yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
"dev": true
}, },
"node_modules/yaml": { "node_modules/yaml": {
"version": "1.10.2", "version": "1.10.2",
@ -11726,6 +12015,11 @@
} }
}, },
"dependencies": { "dependencies": {
"@amap/amap-jsapi-loader": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
},
"@babel/code-frame": { "@babel/code-frame": {
"version": "7.16.7", "version": "7.16.7",
"resolved": "https://registry.npmmirror.com/@babel/code-frame/download/@babel/code-frame-7.16.7.tgz", "resolved": "https://registry.npmmirror.com/@babel/code-frame/download/@babel/code-frame-7.16.7.tgz",
@ -13151,6 +13445,36 @@
"integrity": "sha1-tSBSnsIdjllFoYUd/Rwy6U45/0U=", "integrity": "sha1-tSBSnsIdjllFoYUd/Rwy6U45/0U=",
"dev": true "dev": true
}, },
"@mapbox/jsonlint-lines-primitives": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
"integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="
},
"@mapbox/mapbox-gl-style-spec": {
"version": "13.23.1",
"resolved": "https://registry.npmmirror.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.23.1.tgz",
"integrity": "sha512-C6wh8A/5EdsgzhL6y6yl464VCQNIxK0yjrpnvCvchcFe3sNK2RbBw/J9u3m+p8Y6S6MsGuSMt3AkGAXOKMYweQ==",
"requires": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
"@mapbox/point-geometry": "^0.1.0",
"@mapbox/unitbezier": "^0.0.0",
"csscolorparser": "~1.0.2",
"json-stringify-pretty-compact": "^2.0.0",
"minimist": "^1.2.5",
"rw": "^1.3.3",
"sort-object": "^0.3.2"
}
},
"@mapbox/point-geometry": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
"integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
},
"@mapbox/unitbezier": {
"version": "0.0.0",
"resolved": "https://registry.npmmirror.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
"integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA=="
},
"@nodelib/fs.scandir": { "@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -13177,6 +13501,11 @@
"fastq": "^1.6.0" "fastq": "^1.6.0"
} }
}, },
"@petamoriken/float16": {
"version": "3.6.2",
"resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.6.2.tgz",
"integrity": "sha512-zZnksXtFBqvONcXWuAtSWrl3YXaDbU2ArRCCuzM42mP0GBJclD6e0GC3zEemmrjiMSOHcLPyRC4vOnAsnomJIw=="
},
"@svgr/babel-plugin-add-jsx-attribute": { "@svgr/babel-plugin-add-jsx-attribute": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz",
@ -14703,6 +15032,11 @@
"integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
"dev": true "dev": true
}, },
"csscolorparser": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz",
"integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="
},
"cssdb": { "cssdb": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.0.0.tgz", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.0.0.tgz",
@ -15924,6 +16258,20 @@
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true "dev": true
}, },
"geotiff": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.0.4.tgz",
"integrity": "sha512-aG8h9bJccGusioPsEWsEqx8qdXpZN71A20WCvRKGxcnHSOWLKmC5ZmsAmodfxb9TRQvs+89KikGuPzxchhA+Uw==",
"requires": {
"@petamoriken/float16": "^3.4.7",
"lerc": "^3.0.0",
"lru-cache": "^6.0.0",
"pako": "^2.0.4",
"parse-headers": "^2.0.2",
"web-worker": "^1.2.0",
"xml-utils": "^1.0.2"
}
},
"get-intrinsic": { "get-intrinsic": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@ -16285,6 +16633,11 @@
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"ignore": { "ignore": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
@ -16681,6 +17034,11 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true "dev": true
}, },
"json-stringify-pretty-compact": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
"integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
},
"json5": { "json5": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
@ -16728,6 +17086,11 @@
"integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
"dev": true "dev": true
}, },
"lerc": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz",
"integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
},
"less": { "less": {
"version": "4.1.2", "version": "4.1.2",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz",
@ -17134,7 +17497,6 @@
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": { "requires": {
"yallist": "^4.0.0" "yallist": "^4.0.0"
} }
@ -17148,6 +17510,11 @@
"semver": "^6.0.0" "semver": "^6.0.0"
} }
}, },
"mapbox-to-css-font": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz",
"integrity": "sha512-QQ/iKiM43DM9+aujTL45Iz5o7gDeSFmy4LPl3HZmNcwCE++NxGazf+yFpY+wCb+YS23sDa1ghpo3zrNFOcHlow=="
},
"mdn-data": { "mdn-data": {
"version": "2.0.14", "version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
@ -17193,6 +17560,11 @@
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true "dev": true
}, },
"mgrs": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/mgrs/-/mgrs-1.0.0.tgz",
"integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA=="
},
"micromatch": { "micromatch": {
"version": "4.0.4", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
@ -17230,6 +17602,56 @@
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true "dev": true
}, },
"mini-css-extract-plugin": {
"version": "2.6.0",
"resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz",
"integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==",
"dev": true,
"requires": {
"schema-utils": "^4.0.0"
},
"dependencies": {
"ajv": {
"version": "8.10.0",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.10.0.tgz",
"integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.3"
}
},
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"schema-utils": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz",
"integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.8.0",
"ajv-formats": "^2.1.1",
"ajv-keywords": "^5.0.0"
}
}
}
},
"minimalistic-assert": { "minimalistic-assert": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@ -17248,8 +17670,7 @@
"minimist": { "minimist": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
"dev": true
}, },
"mkdirp": { "mkdirp": {
"version": "0.5.5", "version": "0.5.5",
@ -17488,6 +17909,27 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true "dev": true
}, },
"ol": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/ol/-/ol-6.13.0.tgz",
"integrity": "sha512-Fa6yt+FArWE9fwYRRhi/8+ULcFDRS2ZuDcLp3R9bQeDVa5T4E4TT9iqLeJhmHG+bzWiLWJHIeFUqw8GD2gW0YA==",
"requires": {
"geotiff": "^2.0.2",
"ol-mapbox-style": "^7.0.0",
"pbf": "3.2.1",
"rbush": "^3.0.1"
}
},
"ol-mapbox-style": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/ol-mapbox-style/-/ol-mapbox-style-7.0.0.tgz",
"integrity": "sha512-y0OrKfx/TBcbGUf0UefDuYPSfMCCjPz0aUttm/kG461CNwzJpGavvf/lJ7nyNfeHSJFr0iEEdAbB98UUUQQkww==",
"requires": {
"@mapbox/mapbox-gl-style-spec": "^13.20.1",
"mapbox-to-css-font": "^2.4.1",
"webfont-matcher": "^1.1.0"
}
},
"on-finished": { "on-finished": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@ -17589,6 +18031,11 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true "dev": true
}, },
"pako": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/pako/-/pako-2.0.4.tgz",
"integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg=="
},
"param-case": { "param-case": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@ -17608,6 +18055,11 @@
"callsites": "^3.0.0" "callsites": "^3.0.0"
} }
}, },
"parse-headers": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.4.tgz",
"integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
},
"parse-json": { "parse-json": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@ -17678,6 +18130,15 @@
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true "dev": true
}, },
"pbf": {
"version": "3.2.1",
"resolved": "https://registry.npmmirror.com/pbf/-/pbf-3.2.1.tgz",
"integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
"requires": {
"ieee754": "^1.1.12",
"resolve-protobuf-schema": "^2.1.0"
}
},
"picocolors": { "picocolors": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@ -18446,6 +18907,15 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true "dev": true
}, },
"proj4": {
"version": "2.7.5",
"resolved": "https://registry.npmmirror.com/proj4/-/proj4-2.7.5.tgz",
"integrity": "sha512-5ecXUXbHAfvdhfBQpU7EhUfPCQGUCPmVup/4gnZA3bJY3JcK/xxzm4QQDz1xiXokN6ux65VDczlCtBtKrTSpAQ==",
"requires": {
"mgrs": "1.0.0",
"wkt-parser": "^1.3.1"
}
},
"prompts": { "prompts": {
"version": "2.4.2", "version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@ -18466,6 +18936,11 @@
"react-is": "^16.13.1" "react-is": "^16.13.1"
} }
}, },
"protocol-buffers-schema": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
},
"proxy-addr": { "proxy-addr": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -18509,6 +18984,11 @@
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true "dev": true
}, },
"quickselect": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz",
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
},
"randombytes": { "randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@ -18544,6 +19024,14 @@
} }
} }
}, },
"rbush": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz",
"integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
"requires": {
"quickselect": "^2.0.0"
}
},
"react": { "react": {
"version": "17.0.2", "version": "17.0.2",
"resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
@ -18971,6 +19459,14 @@
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true "dev": true
}, },
"resolve-protobuf-schema": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
"integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
"requires": {
"protocol-buffers-schema": "^3.3.1"
}
},
"resolve-url-loader": { "resolve-url-loader": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
@ -19059,6 +19555,11 @@
"queue-microtask": "^1.2.2" "queue-microtask": "^1.2.2"
} }
}, },
"rw": {
"version": "1.3.3",
"resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz",
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
"rxjs": { "rxjs": {
"version": "7.5.1", "version": "7.5.1",
"resolved": "https://registry.npmmirror.com/rxjs/download/rxjs-7.5.1.tgz", "resolved": "https://registry.npmmirror.com/rxjs/download/rxjs-7.5.1.tgz",
@ -19319,6 +19820,25 @@
"websocket-driver": "^0.7.4" "websocket-driver": "^0.7.4"
} }
}, },
"sort-asc": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/sort-asc/-/sort-asc-0.1.0.tgz",
"integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw=="
},
"sort-desc": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/sort-desc/-/sort-desc-0.1.1.tgz",
"integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw=="
},
"sort-object": {
"version": "0.3.2",
"resolved": "https://registry.npmmirror.com/sort-object/-/sort-object-0.3.2.tgz",
"integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==",
"requires": {
"sort-asc": "^0.1.0",
"sort-desc": "^0.1.1"
}
},
"source-list-map": { "source-list-map": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
@ -19823,6 +20343,16 @@
"minimalistic-assert": "^1.0.0" "minimalistic-assert": "^1.0.0"
} }
}, },
"web-worker": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz",
"integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
},
"webfont-matcher": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/webfont-matcher/-/webfont-matcher-1.1.0.tgz",
"integrity": "sha512-ov8lMvF9wi4PD7fK2Axn9PQEpO9cYI0fIoGqErwd+wi8xacFFDmX114D5Q2Lw0Wlgmb+Qw/dKI2KTtimrJf85g=="
},
"webpack": { "webpack": {
"version": "5.65.0", "version": "5.65.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz",
@ -20098,6 +20628,11 @@
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"dev": true "dev": true
}, },
"wkt-parser": {
"version": "1.3.2",
"resolved": "https://registry.npmmirror.com/wkt-parser/-/wkt-parser-1.3.2.tgz",
"integrity": "sha512-A26BOOo7sHAagyxG7iuRhnKMO7Q3mEOiOT4oGUmohtN/Li5wameeU4S6f8vWw6NADTVKljBs8bzA8JPQgSEMVQ=="
},
"word-wrap": { "word-wrap": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmmirror.com/word-wrap/download/word-wrap-1.2.3.tgz", "resolved": "https://registry.npmmirror.com/word-wrap/download/word-wrap-1.2.3.tgz",
@ -20192,11 +20727,15 @@
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
"xml-utils": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.0.2.tgz",
"integrity": "sha512-rEn0FvKi+YGjv9omf22oAf+0d6Ly/sgJ/CUufU/nOzS7SRLmgwSujrewc03KojXxt+aPaTRpm593TgehtUBMSQ=="
},
"yallist": { "yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
"dev": true
}, },
"yaml": { "yaml": {
"version": "1.10.2", "version": "1.10.2",

View File

@ -13,9 +13,12 @@
"author": "zhouxhere", "author": "zhouxhere",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"axios": "^0.24.0", "axios": "^0.24.0",
"core-js": "^3.20.2", "core-js": "^3.20.2",
"moment": "^2.29.1", "moment": "^2.29.1",
"ol": "^6.13.0",
"proj4": "^2.7.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-redux": "^7.2.6", "react-redux": "^7.2.6",
@ -48,6 +51,7 @@
"less": "^4.1.2", "less": "^4.1.2",
"less-loader": "^10.2.0", "less-loader": "^10.2.0",
"lint-staged": "^12.1.7", "lint-staged": "^12.1.7",
"mini-css-extract-plugin": "^2.6.0",
"postcss": "^8.4.5", "postcss": "^8.4.5",
"postcss-flexbugs-fixes": "^5.0.2", "postcss-flexbugs-fixes": "^5.0.2",
"postcss-loader": "^6.2.1", "postcss-loader": "^6.2.1",

162
src/asset/style/global.less Normal file
View File

@ -0,0 +1,162 @@
html,
body,
#root {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
font-size: 12px;
line-height: 1;
}
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
ol,
ul {
list-style: none;
margin-bottom: 0 !important;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
* {
box-sizing: border-box;
}
*::before,
*::after {
box-sizing: border-box;
}
/* 设置滚动条的样式 */
::-webkit-scrollbar {
width: 5px;
}
/* 滚动槽 */
::-webkit-scrollbar-track {
-webkit-box-shadow: #d0d0d0;
border-radius: 10px;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius: 10px;
background: #d0d0d0;
-webkit-box-shadow: #d0d0d0;
}
::-webkit-scrollbar-thumb:window-inactive {
background: #d0d0d0;
}

View File

@ -4,12 +4,12 @@ module.exports = {
name: 'app', name: 'app',
urls: { urls: {
loginUrl: '/passport/login', loginUrl: '/passport/login',
defaultUrl: '/home/index', defaultUrl: '/map',
}, },
redirects: [ redirects: [
{ {
from: RouteCode.ROOT, from: RouteCode.ROOT,
to: RouteCode.PAGE_HOME, to: RouteCode.PAGE_MAP,
}, },
], ],
} }

View File

@ -2,10 +2,12 @@ export const RoutePath = {
ROOT: 'layout', ROOT: 'layout',
LAYOUT_BASIC: 'layout/basic', LAYOUT_BASIC: 'layout/basic',
PAGE_HOME: 'page/home', PAGE_HOME: 'page/home',
PAGE_MAP: 'page/map',
} }
export const RouteCode = { export const RouteCode = {
ROOT: 'LAYOUT', ROOT: 'LAYOUT',
LAYOUT_BASIC: 'LAYOUT_BASIC', LAYOUT_BASIC: 'LAYOUT_BASIC',
PAGE_HOME: 'PAGE_HOME', PAGE_HOME: 'PAGE_HOME',
PAGE_MAP: 'PAGE_MAP',
} }

View File

@ -7,6 +7,8 @@ import App from './App'
import { Provider } from 'react-redux' import { Provider } from 'react-redux'
import store from './store' import store from './store'
import './asset/style/global.less'
const element = ( const element = (
<Provider store={store}> <Provider store={store}>
<App /> <App />

21
src/page/map/amap.js Normal file
View File

@ -0,0 +1,21 @@
//获取当前时间
var nowDate = new Date()
var year = nowDate.getFullYear()
var month = nowDate.getMonth() + 1
var today = nowDate.getDate()
var hours = nowDate.getHours()
var minutes = nowDate.getMinutes()
var seconds = nowDate.getSeconds()
if (month >= 1 && month <= 9) {
month = '0' + month
}
if (today >= 1 && today <= 9) {
today = '0' + today
}
var currentdate =
year + '-' + month + '-' + today + ' ' + hours + ':' + minutes + ':' + seconds
var longTime = new Date(
currentdate.replace(new RegExp('-', 'gm'), '/')
).getTime()
export default { longTime }

View File

@ -0,0 +1,97 @@
// 导入proj控件,使用其方法注入gcj02坐标系
import * as proj from 'ol/proj'
import gcj02 from 'util/gcj02'
var forEachPoint = function (func) {
return function (input, opt_output, opt_dimension) {
var len = input.length
var dimension = opt_dimension ? opt_dimension : 2
var output
if (opt_output) {
output = opt_output
} else {
if (dimension !== 2) {
output = input.slice()
} else {
output = new Array(len)
}
}
for (var offset = 0; offset < len; offset += dimension) {
func(input, output, offset)
}
return output
}
}
var sphericalMercator = {}
var RADIUS = 6378137
var MAX_LATITUDE = 85.0511287798
var RAD_PER_DEG = Math.PI / 180
sphericalMercator.forward = forEachPoint(function (input, output, offset) {
var lat = Math.max(Math.min(MAX_LATITUDE, input[offset + 1]), -MAX_LATITUDE)
var sin = Math.sin(lat * RAD_PER_DEG)
output[offset] = RADIUS * input[offset] * RAD_PER_DEG
output[offset + 1] = (RADIUS * Math.log((1 + sin) / (1 - sin))) / 2
})
sphericalMercator.inverse = forEachPoint(function (input, output, offset) {
output[offset] = input[offset] / RADIUS / RAD_PER_DEG
output[offset + 1] =
(2 * Math.atan(Math.exp(input[offset + 1] / RADIUS)) - Math.PI / 2) /
RAD_PER_DEG
})
var projzh = {}
projzh.ll2gmerc = function (input, opt_output, opt_dimension) {
let output = gcj02.fromWGS84(input, opt_output, opt_dimension)
return projzh.ll2smerc(output, output, opt_dimension)
}
projzh.gmerc2ll = function (input, opt_output, opt_dimension) {
let output = projzh.smerc2ll(input, input, opt_dimension)
return gcj02.toWGS84(output, opt_output, opt_dimension)
}
projzh.smerc2gmerc = function (input, opt_output, opt_dimension) {
let output = projzh.smerc2ll(input, input, opt_dimension)
output = gcj02.fromWGS84(output, output, opt_dimension)
return projzh.ll2smerc(output, output, opt_dimension)
}
projzh.gmerc2smerc = function (input, opt_output, opt_dimension) {
let output = projzh.smerc2ll(input, input, opt_dimension)
output = gcj02.toWGS84(output, output, opt_dimension)
return projzh.ll2smerc(output, output, opt_dimension)
}
projzh.ll2smerc = sphericalMercator.forward
projzh.smerc2ll = sphericalMercator.inverse
// 定义GCJ02
const gcj02Extent = [
-20037508.342789244, -20037508.342789244, 20037508.342789244,
20037508.342789244,
]
const gcj02Mecator = new proj.Projection({
code: 'GCJ-02',
extent: gcj02Extent,
units: 'm',
})
proj.addProjection(gcj02Mecator)
// 将4326/3857转为gcj02坐标的方法定义
proj.addCoordinateTransforms(
'EPSG:4326',
gcj02Mecator,
projzh.ll2gmerc,
projzh.gmerc2ll
)
proj.addCoordinateTransforms(
'EPSG:3857',
gcj02Mecator,
projzh.smerc2gmerc,
projzh.gmerc2smerc
)
export default { gcj02Mecator, gcj02 }
// 我使用的react所以这里需要导出定义的gcj02Mecator提供给外部使用
// export default gcj02Mecator

387
src/page/map/index.js Normal file
View File

@ -0,0 +1,387 @@
import React, { useEffect, useState } from 'react'
import style from './index.module.less'
import './map.less'
import 'ol/ol.css'
import { View, Map } from 'ol'
import { register } from 'ol/proj/proj4'
import proj4 from 'proj4'
import { get, Projection, toLonLat, transformExtent } from 'ol/proj'
import {
Attribution,
FullScreen,
MousePosition,
Rotate,
ScaleLine,
Zoom,
ZoomSlider,
} from 'ol/control'
import { WMTSCapabilities } from 'ol/format'
import WMTS, { optionsFromCapabilities } from 'ol/source/WMTS'
import XYZ from 'ol/source/XYZ'
import { getWidth, getTopLeft } from 'ol/extent'
import WMTSTileGrid from 'ol/tilegrid/WMTS'
import TileLayer from 'ol/layer/Tile'
import AMapLoader from '@amap/amap-jsapi-loader'
import amapUtil from './amap'
import './gcj02Mector'
import gcj02 from 'util/gcj02'
import LoadingControl from './loadingControl'
import TrafficControl from './trafficControl'
import VectorLayer from 'ol/layer/Vector'
import VectorSource from 'ol/source/Vector'
import Cluster from 'ol/source/Cluster'
import { GeoJSON } from 'ol/format'
import { Circle, Stroke, Style, Text, Fill } from 'ol/style'
// import { bbox } from 'ol/loadingstrategy'
const MapPage = () => {
// eslint-disable-next-line no-unused-vars
const [map, setMap] = useState(null)
// const [layers, setLayers] = useState([])
// const [markers, setMarkers] = useState([])
useEffect(async () => {
// await loadAMap()
registerProj4490()
renderMap()
console.log((await getWfs()).getSource().getFeatures())
}, [])
// eslint-disable-next-line no-unused-vars
const registerProj4490 = () => {
proj4.defs('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs')
register(proj4)
const proj4490 = new Projection({
code: 'EPSG:4490',
extent: [-180, -90, 180, 90],
worldExtent: [-180, -90, 180, 90],
})
return proj4490
}
// eslint-disable-next-line no-unused-vars
const loadAMap = async () => {
await AMapLoader.load({
key: 'your key',
version: '2.0',
AMapUI: {
version: '1.1',
},
})
}
// eslint-disable-next-line no-unused-vars
const renderMap = async () => {
let _map = new Map({
controls: [
new Zoom({
className: 'control-zoom ol-zoom',
}),
new FullScreen({
// className: 'control-fullscreen ol-full-screen',
}),
new MousePosition({
className: 'control-position ol-mouse-position',
projection: 'EPSG:4490',
coordinateFormat: function (coordinate) {
// 原本经纬度
// return format(coordinate, '{x}, {y}', 6)
// 高德经纬度
return gcj02.fromWGS84(coordinate, [])
},
}),
new Rotate({
className: 'control-rotate ol-rotate',
}),
new ScaleLine({
className: 'control-scale ol-scale-line',
}),
new ZoomSlider({
className: 'ol-zoomslider control-slider',
}),
new Attribution({
className: 'control-attribution ol-attribution',
collapsible: false,
collapsed: false,
}),
new LoadingControl({ key: 'loading' }),
new TrafficControl({ key: 'traffic' }),
],
layers: [
(await getTianditu())[0],
(await getTianditu())[1],
await getWfs(),
],
view: new View({
center: [0, 0],
zoom: 3,
minZoom: 1,
maxZoom: 19,
projection: get('EPSG:3857'),
constrainResolution: true,
smoothResolutionConstraint: true,
extent: transformExtent(
[73.62, 16.7, 134.77, 53.56],
'EPSG:4490',
'EPSG:3857'
),
// extent: [73.62, 16.7, 134.77, 53.56],
showFullExtent: true,
}),
target: 'map',
})
setMap(_map)
let traffic = _map
.getLayers()
.getArray()
.find((p) => p.getProperties().key === 'amap-traffic')
if (traffic) {
setInterval(() => {
traffic.getSource().clear()
traffic.setSource(
new XYZ({
url: `https://tm.amap.com/trafficengine/mapabc/traffictile??v=1.0&;t=1&x={x}&y={y}&z={z}&&t=${amapUtil.longTime}`,
projection: get('GCJ-02'),
minZoom: 7,
maxZoom: 20,
})
)
}, 1000 * 60)
}
_map.on('singleclick', async (event) => {
console.log(event)
console.log(gcj02.fromWGS84(toLonLat(event.coordinate, 'EPSG:3857'), []))
})
_map.on('change:layergroup', (event) => {
console.log(event)
})
let loading = _map
.getControls()
.getArray()
.find((p) => p.getProperties().key === 'loading')
if (loading) {
loading.show()
setTimeout(() => {
loading.hide()
}, 1000 * 3)
}
}
// eslint-disable-next-line no-unused-vars
const getTianditu = async () => {
return Promise.all([
fetch(
`http://t${Math.floor(
Math.random() * 7
)}.tianditu.gov.cn/vec_w/wmts?request=GetCapabilities&service=wmts`
),
fetch(
`http://t${Math.floor(
Math.random() * 7
)}.tianditu.gov.cn/cva_w/wmts?request=GetCapabilities&service=wmts`
),
])
.then((response) => {
return Promise.all(response.map((item) => item.text()))
})
.then((text) => {
let projection = get('EPSG:3857')
let projectionExtent = projection.getExtent()
let size = getWidth(projectionExtent) / 256
let resolutions = new Array(19)
let matrixIds = new Array(19)
for (let z = 1; z < 19; ++z) {
resolutions[z] = size / Math.pow(2, z)
matrixIds[z] = z
}
return text.map((item, index) => {
let result = new WMTSCapabilities().read(item)
let option = optionsFromCapabilities(result, {
layer: result.Contents.Layer[0].Identifier,
matrixSet: result.Contents.TileMatrixSet[0].Identifier,
})
option.projection = projection
option.tileGrid = new WMTSTileGrid({
origin: getTopLeft(projectionExtent),
resolutions: resolutions,
matrixIds: matrixIds,
})
option.urls = option.urls.map((url) => url + 'tk=your token')
let _url = option.urls[0]
for (let i = 1; i < 8; i++) {
option.urls.push(_url.replace('t0', `t${i}`))
}
return new TileLayer({
key: `${result.Contents.Layer[0].Identifier}_${result.Contents.TileMatrixSet[0].Identifier}`,
source: new WMTS({
...option,
attributions: '&copy;your company',
}),
zIndex: index * 2,
})
})
})
}
// eslint-disable-next-line no-unused-vars
const getWfs = async () => {
return await fetch(
'https://gisserver.tianditu.gov.cn/TDTService/wfs?service=WFS&version=1.1.0&request=GetFeature&typename=TDTService:AGNP&outputFormat=application/json&srsname=EPSG:3857'
)
.then((response) => response.json())
.then((res) => {
// eslint-disable-next-line no-unused-vars
let features = new GeoJSON().readFeatures(res)
const styleCache = {}
return new VectorLayer({
source: new Cluster({
source: new VectorSource({
features: features,
}),
}),
style: function (feature) {
const size = feature.get('features').length
let style = size === 1 ? null : styleCache[size]
if (!style) {
style = new Style({
image: new Circle({
radius: 10,
stroke: new Stroke({
color: '#fff',
}),
fill: new Fill({
color: '#3399CC',
}),
}),
text: new Text({
text:
size === 1
? feature.get('features')[0].getProperties().NAME
: size.toString(),
fill: new Fill({
color: '#fff',
}),
}),
})
styleCache[size] = style
}
return style
},
})
})
}
// eslint-disable-next-line no-unused-vars
const getAMap = async () => {
let AMap
// eslint-disable-next-line no-undef
if (AMap === undefined) {
await AMapLoader.load({
key: '2451a439b8ff9fce0c01fdfef55f1eb0',
version: '2.0',
AMapUI: {
version: '1.1',
},
}).then((_map) => {
AMap = _map
})
}
return [
new TileLayer({
source: new XYZ({
// eslint-disable-next-line no-undef
url: new AMap.TileLayer()
.getTileUrl()
.replace(
'{1,2,3,4}',
(Math.floor(Math.random() * 4) + 1).toString()
)
.replace('[x]', '{x}')
.replace('[y]', '{y}')
.replace('[z]', '{z}'),
projection: get('EPSG:3857'),
minZoom: 3,
maxZoom: 18,
}),
zIndex: 1,
}),
new TileLayer({
source: new XYZ({
// eslint-disable-next-line no-undef
url: new AMap.TileLayer.RoadNet()
.getTileUrl()
.replace(
'{1,2,3,4}',
(Math.floor(Math.random() * 4) + 1).toString()
)
.replace('[x]', '{x}')
.replace('[y]', '{y}')
.replace('[z]', '{z}'),
projection: 'EPSG:4490',
crossOrigin: '*',
minZoom: 7,
maxZoom: 18,
}),
// zIndex: 1,
}),
new TileLayer({
source: new XYZ({
// eslint-disable-next-line no-undef
url: new AMap.TileLayer.Satellite()
.getTileUrl()
.replace(
'{1,2,3,4}',
(Math.floor(Math.random() * 4) + 1).toString()
)
.replace('[x]', '{x}')
.replace('[y]', '{y}')
.replace('[z]', '{z}'),
projection: 'EPSG:4490',
crossOrigin: '*',
minZoom: 3,
maxZoom: 18,
}),
// zIndex: 1,
}),
new TileLayer({
source: new XYZ({
// eslint-disable-next-line no-undef
url: new AMap.TileLayer.Traffic()
.getTileUrl()
.replace(
'{1,2,3,4}',
(Math.floor(Math.random() * 4) + 1).toString()
)
.replace('[x]', '{x}')
.replace('[y]', '{y}')
.replace('[z]', '{z}'),
projection: 'EPSG:4490',
crossOrigin: '*',
minZoom: 7,
maxZoom: 18,
}),
// zIndex: 1,
}),
]
}
return (
<div className={style['map']}>
<div className={style['main']} id='map'></div>
</div>
)
}
export default MapPage

View File

@ -0,0 +1,11 @@
.map {
width: 100%;
height: 100%;
position: relative;
}
.main {
width: 100%;
height: 100%;
position: absolute;
}

View File

@ -0,0 +1,42 @@
import { Control } from 'ol/control'
export default class LoadingControl extends Control {
constructor(opt_options) {
const _options = opt_options || {}
const _root = document.createElement('div')
_root.className = 'ol-layer-data-loading'
_root.style = {
width: '100%',
height: '100%',
'background-color': 'rgba(255,255,255,0.5)',
}
const _box = document.createElement('span')
_box.className = 'ol-layer-spin-dot-spin'
for (let i = 0; i < 4; i++) {
const _i = document.createElement('i')
_i.className = 'ol-layer-spin-dot-item dot' + i
_box.appendChild(_i)
}
_root.appendChild(_box)
super({
element: _root,
target: _options.target,
})
if (_options.key) {
this.set('key', _options.key)
}
}
show = function () {
this.element.style.display = 'block'
}
hide = function () {
this.element.style.display = 'none'
}
}

143
src/page/map/map.less Normal file
View File

@ -0,0 +1,143 @@
.control {
&-zoom {
top: auto !important;
left: 1em !important;
right: auto !important;
bottom: 1em !important;
}
&-slider {
top: 1em !important;
left: 1em !important;
right: auto !important;
bottom: auto !important;
&-thumb {
left: auto !important;
}
}
&-rotate {
top: auto !important;
left: auto !important;
right: 81em !important;
bottom: 1em !important;
}
&-fullscreen {
top: 1em !important;
left: auto !important;
right: 1em !important;
bottom: auto !important;
}
&-scale {
top: auto !important;
left: 50% !important;
right: auto !important;
bottom: 1em !important;
}
&-attribution {
top: auto !important;
left: auto !important;
right: 1em !important;
bottom: 1em !important;
}
&-position {
top: auto !important;
left: auto !important;
right: 15% !important;
bottom: 1em !important;
}
}
// traffic control
.control-traffic {
left: 3em;
bottom: 1em;
&-select {
> button {
background-color: rgba(0, 60, 136, 0.8) !important;
}
}
}
.ol-touch .rotate-north {
left: 3em;
bottom: 1em;
}
// loading control
.ol-layer-data-loading {
width: 100%;
height: 100%;
box-sizing: border-box;
margin: 0;
padding: 0;
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
list-style: none;
font-feature-settings: 'tnum';
position: absolute;
display: none;
color: #6996ff;
text-align: center;
vertical-align: middle;
transition: transform 0.3 cubic-bezier(0.78, 0.14, 0.15, 0.86);
background-color: rgba(255, 255, 255, 0.5);
.ol-layer-spin-dot-spin {
position: relative;
top: 50%;
font-size: 32px;
transform: rotate(45deg);
animation: antRotate 1.2s infinite linear;
display: inline-block;
width: 1em;
height: 1em;
.ol-layer-spin-dot-item {
position: absolute;
display: block;
width: 9px;
height: 9px;
background-color: #6996ff;
border-radius: 100%;
transform: scale(0.75);
transform-origin: 50% 50%;
animation: antSpinMove 1s infinite linear alternate;
-webkit-animation: antSpinMove 1s infinite linear alternate;
&.dot0 {
top: 0;
left: 0;
opacity: 1;
}
&.dot1 {
top: 0;
right: 0;
opacity: 0.6;
}
&.dot2 {
bottom: 0;
right: 0;
opacity: 0.3;
}
&.dot3 {
bottom: 0;
left: 0;
opacity: 0.1;
}
}
}
}
@keyframes antSpinMove {
to {
opacity: 1;
}
}
@keyframes antRotate {
to {
transform: rotate(405deg);
}
}

View File

@ -0,0 +1,125 @@
import { Control } from 'ol/control'
import TileLayer from 'ol/layer/Tile'
import { get } from 'ol/proj'
import XYZ from 'ol/source/XYZ'
import amapUtil from './amap'
export default class TrafficControl extends Control {
constructor(opt_options) {
const _options = opt_options || {}
const _root = document.createElement('div')
_root.className = 'control-traffic ol-unselectable ol-control'
const _box = document.createElement('button')
_box.innerHTML = 'T'
_root.appendChild(_box)
super({
element: _root,
target: _options.target,
})
if (_options.key) {
this.set('key', _options.key)
}
this.loadTraffic = false
this.interv = null
this.duration_ =
!isNaN(_options.duration) && _options.duration > 0
? _options.duration
: 1000 * 60
this.autoLoad_ = _options.autoLoad !== undefined ? _options.autoLoad : false
if (this.autoLoad_) {
this.addTrafficLayer()
}
_box.addEventListener('click', this.handleClick.bind(this), false)
}
handleClick() {
event.preventDefault()
if (!this.loadTraffic) {
this.addTrafficLayer()
} else {
this.delTrafficLayer()
}
}
addTrafficLayer() {
let layer = this.getMap()
.getLayers()
.getArray()
.find((p) => p.getProperties().key === 'amap-traffic')
if (!layer) {
this.getMap().addLayer(this.getTrafficLayer())
this.element.className =
'control-traffic ol-unselectable control-traffic-select ol-control'
this.loadTraffic = true
layer = this.getMap()
.getLayers()
.getArray()
.find((p) => p.getProperties().key === 'amap-traffic')
if (!this.interv) {
this.interv = setInterval(() => {
layer.getSource().clear()
layer.setSource(
new XYZ({
// url: `https://tm.amap.com/trafficengine/mapabc/traffictile??v=1.0&;t=1&x={x}&y={y}&z={z}&&t=${amapUtil.longTime}`,
tileUrlFunction: (tileCoord) => {
let _zoom = parseInt(this.getMap().getView().getZoom(), 10)
if (_zoom < 8 || _zoom > 18) return
let [z, x, y] = tileCoord
return `https://tm.amap.com/trafficengine/mapabc/traffictile??v=1.0&;t=1&x=${x}&y=${y}&z=${z}&&t=${amapUtil.longTime}`
},
projection: get('GCJ-02'),
minZoom: 7,
maxZoom: 18,
})
)
}, this.duration_)
}
}
}
delTrafficLayer() {
let layer = this.getMap()
.getLayers()
.getArray()
.find((p) => p.getProperties().key === 'amap-traffic')
if (layer) {
this.getMap().removeLayer(layer)
this.element.className = 'control-traffic ol-control'
this.loadTraffic = false
if (this.interv) {
clearInterval(this.interv)
this.interv = null
}
}
}
getTrafficLayer() {
return new TileLayer({
key: 'amap-traffic',
source: new XYZ({
// url: `https://tm.amap.com/trafficengine/mapabc/traffictile??v=1.0&;t=1&x={x}&y={y}&z={z}&&t=${amapUtil.longTime}`,
tileUrlFunction: (tileCoord) => {
let _zoom = parseInt(this.getMap().getView().getZoom(), 10)
if (_zoom < 8 || _zoom > 18) return
let [z, x, y] = tileCoord
return `https://tm.amap.com/trafficengine/mapabc/traffictile??v=1.0&;t=1&x=${x}&y=${y}&z=${z}&&t=${amapUtil.longTime}`
},
// projection: get('EPSG:3857'),
projection: get('GCJ-02'),
minZoom: 7,
maxZoom: 18,
}),
zIndex: 1,
})
}
}

View File

@ -12,13 +12,16 @@ const Router = () => {
const processRoutes = (params) => { const processRoutes = (params) => {
if (!params) return [] if (!params) return []
let allRedirects = routerTool.processRoutes(defaultRoutes, redirects) let allRedirects = routerTool.processRoutes(defaultRoutes, redirects)
console.log(allRedirects)
let routes = params.map((item) => { let routes = params.map((item) => {
let Component = lazy(() => import(`src/${item.component}`)) let Component = lazy(() => import(`src/${item.component}`))
let redirect = allRedirects.find((p) => p.from === item.code) let redirect = allRedirects.find((p) => p.from === item.code)
let props = { let props = {
element: ( element: (
<Suspense fallback={<div>loading</div>}> <Suspense fallback={<div>loading</div>}>
<Redirect redirect={redirect ? redirect.toUrl : ''}> <Redirect
redirect={redirect ? redirect.toUrl : ''}
from={redirect ? redirect.fromUrl : ''}>
<Component /> <Component />
</Redirect> </Redirect>
</Suspense> </Suspense>

View File

@ -4,9 +4,11 @@ import { generatePath, useMatch, useNavigate } from 'react-router-dom'
const Redirect = (props) => { const Redirect = (props) => {
const match = useMatch(props.redirect) const match = useMatch(props.redirect)
const isFrom = useMatch(props.from)
const navigate = useNavigate() const navigate = useNavigate()
useEffect(() => { useEffect(() => {
if (props.redirect) { console.log(props)
if (props.redirect && isFrom) {
if (match) { if (match) {
navigate(generatePath(props.redirect, match.params)) navigate(generatePath(props.redirect, match.params))
} else { } else {

View File

@ -21,6 +21,12 @@ export const defaultRoutes = [
}, },
], ],
}, },
{
code: RouteCode.PAGE_MAP,
title: 'map',
path: 'map',
component: RoutePath.PAGE_MAP,
},
], ],
}, },
] ]

114
src/util/gcj02.js Normal file
View File

@ -0,0 +1,114 @@
var forEachPoint = function (func) {
return function (input, opt_output, opt_dimension) {
var len = input.length
var dimension = opt_dimension ? opt_dimension : 2
var output
if (opt_output) {
output = opt_output
} else {
if (dimension !== 2) {
output = input.slice()
} else {
output = new Array(len)
}
}
for (var offset = 0; offset < len; offset += dimension) {
func(input, output, offset)
}
return output
}
}
var gcj02 = {}
// var i = 0
var PI = Math.PI
var AXIS = 6378245.0
// eslint-disable-next-line no-loss-of-precision
var OFFSET = 0.00669342162296594323 // (a^2 - b^2) / a^2
function delta(wgLon, wgLat) {
var dLat = transformLat(wgLon - 105.0, wgLat - 35.0)
var dLon = transformLon(wgLon - 105.0, wgLat - 35.0)
var radLat = (wgLat / 180.0) * PI
var magic = Math.sin(radLat)
magic = 1 - OFFSET * magic * magic
var sqrtMagic = Math.sqrt(magic)
dLat = (dLat * 180.0) / (((AXIS * (1 - OFFSET)) / (magic * sqrtMagic)) * PI)
dLon = (dLon * 180.0) / ((AXIS / sqrtMagic) * Math.cos(radLat) * PI)
return [dLon, dLat]
}
function outOfChina(lon, lat) {
if (lon < 72.004 || lon > 137.8347) {
return true
}
if (lat < 0.8293 || lat > 55.8271) {
return true
}
return false
}
function transformLat(x, y) {
var ret =
-100.0 +
2.0 * x +
3.0 * y +
0.2 * y * y +
0.1 * x * y +
0.2 * Math.sqrt(Math.abs(x))
ret +=
((20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0) /
3.0
ret +=
((20.0 * Math.sin(y * PI) + 40.0 * Math.sin((y / 3.0) * PI)) * 2.0) / 3.0
ret +=
((160.0 * Math.sin((y / 12.0) * PI) + 320 * Math.sin((y * PI) / 30.0)) *
2.0) /
3.0
return ret
}
function transformLon(x, y) {
var ret =
300.0 +
x +
2.0 * y +
0.1 * x * x +
0.1 * x * y +
0.1 * Math.sqrt(Math.abs(x))
ret +=
((20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0) /
3.0
ret +=
((20.0 * Math.sin(x * PI) + 40.0 * Math.sin((x / 3.0) * PI)) * 2.0) / 3.0
ret +=
((150.0 * Math.sin((x / 12.0) * PI) + 300.0 * Math.sin((x / 30.0) * PI)) *
2.0) /
3.0
return ret
}
gcj02.toWGS84 = forEachPoint(function (input, output, offset) {
var lng = input[offset]
var lat = input[offset + 1]
if (!outOfChina(lng, lat)) {
var deltaD = delta(lng, lat)
lng = lng - deltaD[0]
lat = lat - deltaD[1]
}
output[offset] = lng
output[offset + 1] = lat
})
gcj02.fromWGS84 = forEachPoint(function (input, output, offset) {
var lng = input[offset]
var lat = input[offset + 1]
if (!outOfChina(lng, lat)) {
var deltaD = delta(lng, lat)
lng = lng + deltaD[0]
lat = lat + deltaD[1]
}
output[offset] = lng
output[offset + 1] = lat
})
export default gcj02

View File

@ -1,15 +1,21 @@
const findPath = (params, code) => { const findPath = (params, code) => {
let paths = []
for (let i = 0; i < params.length; i++) { for (let i = 0; i < params.length; i++) {
if (params[i].code === code) { if (params[i].code === code) {
return [params[i].path] paths = [params[i].path]
} else { break
if (params[i].children) { }
let childPath = findPath(params[i].children, code) if (params[i].children) {
return childPath ? [params[i].path, ...childPath] : [] let childPath = findPath(params[i].children, code)
if (childPath.length > 0) {
paths = [params[i].path, ...childPath]
} }
return [] }
if (i === params.length - 1) {
break
} }
} }
return paths
} }
const processRoutes = (routes, redirects) => { const processRoutes = (routes, redirects) => {
@ -17,10 +23,14 @@ const processRoutes = (routes, redirects) => {
let fromUrl = findPath(routes, item.from) let fromUrl = findPath(routes, item.from)
if (fromUrl.length > 0) { if (fromUrl.length > 0) {
fromUrl = fromUrl.join('/').replace('//', '/') fromUrl = fromUrl.join('/').replace('//', '/')
} else {
fromUrl = ''
} }
let toUrl = findPath(routes, item.to) let toUrl = findPath(routes, item.to)
if (toUrl.length > 0) { if (toUrl.length > 0) {
toUrl = toUrl.join('/').replace('//', '/') toUrl = toUrl.join('/').replace('//', '/')
} else {
toUrl = ''
} }
return { return {
...item, ...item,

View File

@ -79,7 +79,10 @@ module.exports = {
loader: require.resolve('css-loader'), loader: require.resolve('css-loader'),
options: { options: {
importLoaders: 1, importLoaders: 1,
modules: true, modules: {
auto: true,
localIdentName: '[name]__[hash:base64:8]',
},
}, },
}, },
require.resolve('postcss-loader'), require.resolve('postcss-loader'),
@ -112,7 +115,10 @@ module.exports = {
loader: require.resolve('css-loader'), loader: require.resolve('css-loader'),
options: { options: {
importLoaders: 3, importLoaders: 3,
modules: true, modules: {
auto: true,
localIdentName: '[local]__[hash:base64:8]',
},
}, },
}, },
require.resolve('postcss-loader'), require.resolve('postcss-loader'),
@ -139,7 +145,13 @@ module.exports = {
], ],
alias: { alias: {
'react-native': 'react-native-web', 'react-native': 'react-native-web',
src: path.resolve(__dirname, 'src'), src: path.resolve(__dirname, 'src/'),
config: path.resolve(__dirname, 'src/config'),
layout: path.resolve(__dirname, 'src/layout'),
page: path.resolve(__dirname, 'src/page'),
router: path.resolve(__dirname, 'src/router'),
store: path.resolve(__dirname, 'src/store'),
util: path.resolve(__dirname, 'src/util'),
}, },
}, },
plugins: [ plugins: [

View File

@ -8,7 +8,7 @@ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin')
module.exports = merge(common, { module.exports = merge(common, {
mode: 'production', mode: 'production',
output: { output: {
fileName: 'static/js/[name].[contenthash:8].js', filename: 'static/js/[name].[contenthash:8].js',
chunkFilename: 'static/js/[name].[contenthash:8].chunk.js', chunkFilename: 'static/js/[name].[contenthash:8].chunk.js',
}, },
optimization: { optimization: {