├── .browserslistrc
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── README.md
├── babel.config.js
├── package.json
├── public
├── favicon.ico
└── index.html
├── src
├── App.Loader.js
├── App.vue
├── api
│ └── ViewerApi.js
├── assets
│ └── logo.png
├── components
│ └── Viewer
│ │ └── index.vue
├── main.js
├── router
│ └── index.js
├── themes
│ └── index.scss
└── views
│ └── index.vue
└── vue.config.js
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /lib/
2 | /libs/
3 | /web/
4 | /pack/
5 | /dist/
6 | pages/
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | extends: ['plugin:vue/vue3-essential', 'plugin:prettier/recommended'],
7 | rules: {
8 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
9 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
10 | 'global-require': 0,
11 | //强制使用单引号
12 | quotes: ['error', 'single'],
13 | indent: 0,
14 | 'no-new': 0,
15 | camelcase: 0,
16 | 'padded-blocks': 0,
17 | 'no-unused-vars': 0,
18 | 'no-trailing-spaces': 0,
19 | 'no-mixed-spaces-and-tabs': 0,
20 | 'space-before-function-paren': [0, 'always'],
21 | 'no-multiple-empty-lines': 0
22 | },
23 | globals: {
24 | __SERVICE_URL__: false,
25 | Vue: false,
26 | Vuex: false,
27 | VueRouter: false,
28 | Fetch: false,
29 | Hub: false,
30 | echarts: false,
31 | axios: false,
32 | Cesium: false,
33 | DC: false,
34 | '%=': false
35 | },
36 | parserOptions: {
37 | parser: 'babel-eslint'
38 | }
39 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "eslintIntegration": true,
3 | "singleQuote": true,
4 | "semi": false
5 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # dc-vue-next
2 |
3 | ## Project setup
4 | ```
5 | yarn install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | yarn serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | yarn build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | yarn lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['@vue/cli-plugin-babel/preset'],
3 | }
4 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dc-vue-next",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "@dvgis/dc-sdk": "^3.0.0",
12 | "axios": "^1.4.0",
13 | "core-js": "^3.6.5",
14 | "vue": "^3.0.0",
15 | "vue-router": "^4.0.0-rc.3"
16 | },
17 | "devDependencies": {
18 | "@vue/cli-plugin-babel": "~4.5.0",
19 | "@vue/cli-plugin-eslint": "~4.5.0",
20 | "@vue/cli-service": "~4.5.0",
21 | "@vue/compiler-sfc": "^3.0.0",
22 | "@vue/eslint-config-prettier": "^6.0.0",
23 | "babel-eslint": "^10.1.0",
24 | "copy-webpack-plugin": "^6.3.1",
25 | "eslint": "^6.7.2",
26 | "eslint-plugin-prettier": "^3.1.4",
27 | "eslint-plugin-vue": "^7.0.0-0",
28 | "prettier": "^2.1.2",
29 | "sass": "^1.29.0",
30 | "sass-loader": "^10.1.0",
31 | "svg-sprite-loader": "^5.0.0",
32 | "url-loader": "^4.1.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dvt3d/dc-vue-next/8718270ce4a77f4c5b19fbac794fef31a5f5738a/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/App.Loader.js:
--------------------------------------------------------------------------------
1 | /**
2 | @author : Caven Chen
3 | @date : 2023-05-06
4 | */
5 |
6 | import { createApp } from 'vue'
7 |
8 | import * as DC from 'dvgis/dc-sdk'
9 | import 'dvgis/dc-sdk/dist/dc.min.css'
10 |
11 | const hub = createApp({})
12 |
13 | global.Hub = hub
14 |
15 | class AppLoader {
16 | constructor(app) {
17 | app.config.globalProperties.hub = hub
18 | }
19 |
20 | install() {
21 | global.DC = DC
22 | global.Hub = hub
23 | }
24 | }
25 |
26 | export default AppLoader
27 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
20 |
--------------------------------------------------------------------------------
/src/api/ViewerApi.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: Caven
3 | * @Date: 2020-11-17 18:55:35
4 | */
5 |
6 | class ViewerApi {
7 | constructor(viewer) {
8 | this._viewer = viewer
9 | }
10 |
11 | get viewer() {
12 | return this._viewer
13 | }
14 |
15 | loadBaseLayer() {
16 | let baselayer = DC.ImageryLayerFactory.createImageryLayer(
17 | DC.ImageryType.AMAP,
18 | {
19 | style: 'img',
20 | }
21 | )
22 | this.viewer.addBaseLayer(baselayer)
23 | }
24 | }
25 |
26 | export default ViewerApi
27 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dvt3d/dc-vue-next/8718270ce4a77f4c5b19fbac794fef31a5f5738a/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/Viewer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
29 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: Caven
3 | * @Date: 2020-11-16 18:12:40
4 | */
5 |
6 | import { createApp } from 'vue'
7 | import AppLoader from '@/App.Loader'
8 | ;(async () => {
9 | Promise.all([import('./App.vue'), import('./router')]).then(
10 | ([{ default: App }, { default: router }]) => {
11 | const app = createApp(App)
12 | let appLoader = new AppLoader(app)
13 | appLoader.install()
14 | app.use(router)
15 | app.mount('#app')
16 | }
17 | )
18 | })()
19 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: Caven
3 | * @Date: 2020-11-17 18:35:04
4 | */
5 |
6 | import { createRouter, createWebHashHistory } from 'vue-router'
7 |
8 | const routes = [
9 | { path: '/', name: 'index', component: () => import('@/views') },
10 | ]
11 |
12 | const router = createRouter({
13 | history: createWebHashHistory(),
14 | routes,
15 | })
16 |
17 | export default router
18 |
--------------------------------------------------------------------------------
/src/themes/index.scss:
--------------------------------------------------------------------------------
1 |
2 | * {
3 | margin: 0;
4 | padding: 0;
5 | }
6 |
7 | html,
8 | body {
9 | width: 100%;
10 | height: 100%;
11 | overflow: hidden;
12 | }
13 |
14 |
15 | #viewer-container {
16 | width: 100%;
17 | height: 100%;
18 | overflow: hidden;
19 | }
--------------------------------------------------------------------------------
/src/views/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
27 |
28 |
35 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @Author: Caven
3 | * @Date: 2018-12-15 00:33:19
4 | */
5 |
6 | 'use strict'
7 | const path = require('path')
8 |
9 | const CopyWebpackPlugin = require('copy-webpack-plugin')
10 | const dvgisDist = './node_modules/@dvgis'
11 |
12 | let resolve = (dir) => {
13 | return path.resolve(__dirname, dir)
14 | }
15 |
16 | module.exports = {
17 | publicPath: process.env.NODE_ENV === 'production' ? '/dc-vue-next' : '/',
18 | productionSourceMap: false,
19 | configureWebpack: {
20 | module: {
21 | unknownContextCritical: false,
22 | },
23 | performance: {
24 | hints: false,
25 | },
26 | },
27 | chainWebpack: (config) => {
28 | config.resolve.extensions
29 | .add('.js')
30 | .add('.cjs')
31 | .add('.vue')
32 | .end()
33 | .alias.set('dvgis', path.resolve(__dirname, dvgisDist))
34 | .end()
35 | config.module
36 | .rule('images')
37 | .test(/\.(png|jpe?g|gif)(\?.*)?$/)
38 | .use('url-loader')
39 | .loader('url-loader')
40 | .options({
41 | name: 'images/[name].[ext]',
42 | limit: 10000,
43 | })
44 | .end()
45 |
46 | config.module
47 | .rule('fonts')
48 | .test(/\.(eot|ttf|woff|woff2)(\?.*)?$/)
49 | .use('url-loader')
50 | .loader('url-loader')
51 | .options({
52 | name: 'fonts/[name].[ext]',
53 | limit: 10000,
54 | })
55 | .end()
56 |
57 | config.module.rule('svg').exclude.add(resolve('src/assets/svg/icons')).end()
58 |
59 | config.module
60 | .rule('icons')
61 | .test(/\.svg$/)
62 | .include.add(resolve('src/assets/svg/icons'))
63 | .end()
64 | .use('svg-sprite-loader')
65 | .loader('svg-sprite-loader')
66 | .options({
67 | symbolId: 'icon-[name]',
68 | })
69 | .end()
70 |
71 | config.plugin('copy').use(CopyWebpackPlugin, [
72 | {
73 | patterns: [
74 | {
75 | from: path.join(__dirname, 'public'),
76 | to: path.join(__dirname, 'dist'),
77 | globOptions: {
78 | ignore: ['index.html'],
79 | },
80 | },
81 | {
82 | from: path.join(dvgisDist, 'dc-sdk/dist/resources'),
83 | to: path.join(__dirname, 'dist', 'libs/dc-sdk/resources'),
84 | },
85 | ],
86 | },
87 | ])
88 | },
89 | }
90 |
--------------------------------------------------------------------------------