├── .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 | 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 | 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 | 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 | --------------------------------------------------------------------------------