# BC-SDK

<p>
<img src="https://img.shields.io/github/workflow/status/dvgis/bc-sdk/build"/>
<img src="https://img.shields.io/badge/license-Apache%202-blue"/>
<a href="https://www.npmjs.com/package/miniearth/bc-sdk" target="_blank">
 <img src="https://img.shields.io/npm/v/miniearth/bc-sdk?color=orange&logo=npm" />
</a>
<a href="https://www.npmjs.com/package/miniearth/bc-sdk" target="_blank">
 <img src="https://img.shields.io/npm/dt/miniearth/bc-sdk?logo=npm"/>
</a>
<a href="https://resource.dvgis.cn/bc-docs/v2.x/zh" target="_blank">
 <img src="https://img.shields.io/badge/docs-online-yellow.svg"/>
</a>
<a href="http://bc.dvgis.cn" target="_blank">
 <img src="https://img.shields.io/badge/demo-online-red.svg"/>
</a>
</p>

[**🇨🇳 中文**](./README_zh.md) | [**🇬🇧English**](./README.md)

> BC-SDK 是基于 Cesium 进行二次开发的2、3D一体 WebGis 应用框架,该框架优化了 Cesium 的使用方式和增添了一些额外功能，旨在为开发者快速构建 WebGis 应用。

```warning
Tips：本框架是 JS+GIS 的框架包。开发者需要有一定的前端技术和 GIS 相关技术
```

## 安装

`NPM / YARN` **_`(推荐使用)`_**

NPM / YARN 的方式安装，它能更好地和 `webpack` 打包工具配合使用。

```shell
yarn add miniearth/bc-sdk
-------------------------
npm install miniearth/bc-sdk
```

```js
import BC from 'miniearth/bc-sdk/dist/bc.base.min' //基础包
import BcCore from 'miniearth/bc-sdk/dist/bc.core.min' //核心包
import BcChart from 'miniearth/bc-sdk/dist/bc.chart.min' //chart包
import BcMapv from 'miniearth/bc-sdk/dist/bc.mapv.min' //mapv包
import 'miniearth/bc-sdk/dist/bc.core.min.css' // 主要样式
```

`NPM / YARN` **_`(按需安装)`_**

```shell
yarn add miniearth/bc-base
yarn add miniearth/bc-core
yarn add miniearth/bc-chart
yarn add miniearth/bc-mapv
-------------------------
npm install miniearth/bc-base
npm install miniearth/bc-core
npm install miniearth/bc-chart
npm install miniearth/bc-mapv
```

```js
import BC from 'miniearth/bc-base' //基础包
import BcCore from 'miniearth/bc-core' //核心包
import BcChart from 'miniearth/bc-chart' //chart包
import BcMapv from 'miniearth/bc-mapv' //mapv包
import 'miniearth/bc-core/dist/bc.core.min.css' // 主要样式
```

`CDN`

[Resources 下载链接](https://github.com/dvgis/bc-sdk/releases)

```html
<!--基础包-->
<script src="https://cdn.jsdelivr.net/npm/miniearth/bc-sdk/dist/bc.base.min.js"></script>
<!--核心包-->
<script src="https://cdn.jsdelivr.net/npm/miniearth/bc-sdk/dist/bc.core.min.js"></script>
<!--chart包-->
<script src="https://cdn.jsdelivr.net/npm/miniearth/bc-sdk/dist/bc.chart.min.js"></script>
<!--mapv包-->
<script src="https://cdn.jsdelivr.net/npm/miniearth/bc-sdk/dist/bc.mapv.min.js"></script>
<!--主要样式-->
<link
  href="https://cdn.jsdelivr.net/npm/miniearth/bc-sdk/dist/bc.core.min.css"
  rel="stylesheet"
  type="text/css"
/>
```

```
请将 resources 放置工程根目录 libs/bc-sdk 下，如果放置到其他目录下，框架将无法正常运行
```

## 配置

> 配置主要用于 `NPM / YARN` 的方式

由于 BC 框架中将 `CESIUM_BASE_URL` 设置为 `JSON.stringify('./libs/bc-sdk/resources/')`，这样需将 `Cesium` 相关的静态资源文件: `Assets`、`Workers` 、`ThirdParty` 复制到工程的 `libs/bc-sdk/resources` 目录下以保证三维场景能够正常呈现

`Webpack`

[工程模板](https://github.com/cavencj/bc-vue-app)

```js
// webpack.config.js

const path = require('path')
const CopywebpackPlugin = require('copy-webpack-plugin')
const dvgisDist = './node_modules/miniearth'

module.exports = {
  plugins: [
    new CopyWebpackPlugin([
      {
        from: path.join(dvgisDist, 'bc-sdk/dist/resources'),
        to: 'libs/bc-sdk/resources',
      },
    ]),
  ],
}
```

`Vue2.x`

[工程模板](https://github.com/dvgis/bc-vue)

```js
// vue.config.js

const path = require('path')
const CopywebpackPlugin = require('copy-webpack-plugin')
const dvgisDist = './node_modules/miniearth'

module.exports = {
  // 其他配置
  chainWebpack: (config) => {
    config.plugin('copy').use(CopywebpackPlugin, [
      [
        {
          from: path.join(dvgisDist, 'bc-sdk/dist/resources'),
          to: 'libs/bc-sdk/resources',
        },
      ],
    ])
  },
}
```

`Vue3.x`

[工程模板](https://github.com/dvgis/bc-vue-next)

```js
// vue.config.js

const path = require('path')
const CopywebpackPlugin = require('copy-webpack-plugin')
const dvgisDist = './node_modules/miniearth'

module.exports = {
  // 其他配置
  chainWebpack: (config) => {
    config.plugin('copy').use(CopywebpackPlugin, [
      {
        patterns: [
          {
            from: path.join(dvgisDist, 'bc-sdk/dist/resources'),
            to: path.join(__dirname, 'dist', 'libs/bc-sdk/resources'),
          },
        ],
      },
    ])
  },
}
```


## 开始

```js
global.BC = BC
BC.use(BcCore) // Node 方式
BC.ready(() => {
  let viewer = new BC.Viewer(divId) // divId 为一个div节点的Id属性值，如果不传入，会无法初始化3D场景
})
```

## 示例

|  ![picture](http://bc.dvgis.cn/examples/images/baselayer/baidu.png?v=2) | ![picture](http://bc.dvgis.cn/examples/images/baselayer/tdt.png?v=1) | ![picture](http://bc.dvgis.cn/examples/images/baselayer/arcgis.png?v=2) | ![picture](http://bc.dvgis.cn/examples/images/mini-scene/china.gif) |
|  :-----------------------------------------------------------: | :-----------------------------------------------------------: | :------------------------------------------------------------------: | :--------------------------------------------------------------: |
|  ![picture](http://bc.dvgis.cn/examples/images/mini-scene/dfmz.gif) | ![picture](http://bc.dvgis.cn/examples/images/mini-scene/factory.gif?v=1) | ![picture](http://bc.dvgis.cn/examples/images/layer/cluster_circle.gif) | ![picture](http://bc.dvgis.cn/examples/images/model/shp_custom_shader.gif) |
|  ![picture](http://bc.dvgis.cn/examples/images/overlay/polyline_image_trail.gif) | ![picture](http://bc.dvgis.cn/examples/images/overlay/wall_trail.gif?v=1) | ![picture](http://bc.dvgis.cn/examples/images/overlay/water.gif?v=2)  |  ![picture](http://bc.dvgis.cn/examples/images/overlay/plot-overlay.png)   |

[更多>>](http://bc.dvgis.cn/#/examples)

## 生态

|  模块名称 | 状态 | 描述 | 
|  :------ | :------: | :------ | 
| [bc-chart](https://github.com/dvgis/bc-chart) | <img src="https://img.shields.io/npm/v/miniearth/bc-chart?logo=npm" /> | BC图表模块，用于在三维场景中添加Echarts功能 | 
| [bc-mapv](https://github.com/dvgis/bc-mapv) | <img src="https://img.shields.io/npm/v/miniearth/bc-mapv?logo=npm" /> | BC大数据模块，用于在三维场景中添加Mapv功能 | 
| [bc-ui](https://github.com/dvgis/bc-ui) | <img src="https://img.shields.io/npm/v/miniearth/bc-ui?logo=npm" /> | BC基于Vue2.x组件开发框架，将BC功能Vue模块化 | 
|  bc-ui-next | <img src="https://img.shields.io/npm/v/miniearth/bc-ui-next?logo=npm" /> | BC基于Vue3.x组件开发框架，将BC功能Vue模块化 |

## QQ 群

<p>
<img src="http://bc.dvgis.cn/examples/images/base/q1.png?v=2" style="width:60px;height:60px" title="数字视觉"/>
<img src="http://bc.dvgis.cn/examples/images/base/q2.png?v=6" style="width:60px;height:60px" title="Cesium开心农场"/>
</p>

## 支持

> 如果bc-sdk能够给您带来效益，请支持一下呗~
<p>
<img src="http://bc.dvgis.cn/examples/images/base/sponsor.jpg?v=2" style="width:60px;height:60px" title="数字视觉"/>
</p>

## 版权声明

```warning
1.框架作为一个基础平台，代码开源，任何个人和机构可以修改、重构，无需经过我方授权。
2.任何个人和机构修改框架出现的问题，我方无需负责。
3.后期会添加一些行业性的插件和工具，代码会适量开源。
4.对于我方发布的程序包，任何个人和机构在遵守下列条件的前提下可以永久免费使用:
   1)程序包完整引用；
   2)保留此版权信息在控制台输出
我方保留对此版权信息的最终解释权。
```

## 谢谢
