Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/doodlewind/vue-cmap
Vue China map visualizing component, supports drilldown and lazy loading.
https://github.com/doodlewind/vue-cmap
Last synced: 3 months ago
JSON representation
Vue China map visualizing component, supports drilldown and lazy loading.
- Host: GitHub
- URL: https://github.com/doodlewind/vue-cmap
- Owner: doodlewind
- Created: 2016-11-30T15:46:04.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-12-06T13:50:12.000Z (about 8 years ago)
- Last Synced: 2024-10-11T22:48:18.196Z (3 months ago)
- Language: JavaScript
- Homepage: http://ewind.us/h5/cmap/
- Size: 447 KB
- Stars: 39
- Watchers: 3
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README-cn.md
Awesome Lists containing this project
- awesome-vue - vue-cmap - cmap?style=social) - Vue China map可视化组件 (UI组件)
- awesome-github-vue - vue-cmap - Vue China map可视化组件 (UI组件)
- awesome-github-vue - vue-cmap - Vue China map可视化组件 (UI组件)
- awesome - vue-cmap - Vue China map可视化组件 (UI组件)
README
# vue-cmap
Vue 中国地图可视化组件,支持 Drilldown 切换国家 / 省份视图![vue-cmap-country](http://7u2gqx.com1.z0.glb.clouddn.com/vue-cmap-1.png)
![vue-cmap-province](http://7u2gqx.com1.z0.glb.clouddn.com/vue-cmap-2.png)
## 特性
* 平滑的省市视图切换
* 可叠加 OpenStreetMap 贴片地图
* 惰性加载地形数据(基于 Code Splitting,无需配置后端接口)
* 参数化的定制样式
* 极轻,初始数据量小于 80K## Demo
Clone 本仓库并执行构建:``` text
cd vue-cmap/example
npm run dev
```## 导入
按标准 Vue 组件导入方式导入即可:``` text
npm install vue-cmap
`````` html
import CMap from 'vue-cmap'
export default {
data() {
return {
myMapData: [
{ name: "安徽", value: 200, children: [] }
]
}
},
components: { CMap }
}```
## API
CMap 组件的数据和配置均以 Vue 的标准 `props` 形式传入,若地图数据在初始化 CMap 后保持不变,可在引入组件时添加 `v-once` 指令以优化性能:``` html
```
### mapData
通过该 `props` 传入省市数据。由于全国城市数量固定,故在此可将省份和城市数据全量传入,传入省市数据的顺序、数量均不限(缺少数据的省市会显示为灰色)。数据格式如下:``` js
const myMapData = [
{
// name 需与省份中文名保持一致
name: "安徽",
value: 200,
children: [
{ name: "黄山市", value: 100 },
{ name: "合肥市", value: 100 }
// ...
]
},
{ name: '北京', value: 300, children: [] }
// ...
]
```### mapConf
通过该 `props` 传入 CMap 配置参数信息。传入的参数将与如下的默认参数合并后,再用于渲染图表:``` js
export default {
colors: ['#800026', '#BD0026', '#E31A1C', '#FC4E2A', '#FD8D3C', '#FEB24C', '#FED976', '#FFEDA0'],
scale: null,
width: '100%',
height: '550px',
hasCityView: true,
hasTileLayer: false,
hasZoomControl: true,
countryBounds: [[18, 72], [54, 137]],
tileStyle: {
weight: 2,
opacity: 1,
borderColor: 'white',
dashArray: 4,
fillOpacity: 0.7
},
highlightStyle: {
weight: 5,
borderColor: '#666',
dashArray: 0,
fillOpacity: 0.7
}
}
```#### width
Type: `String` Default: `100%`地图区域宽度。
#### height
Type: `String` Default: `550px`地图区域高度。
#### colors
Type: `Array`地图配色数组,数量不限。数组中越靠后的颜色用于渲染越大的数据。数据将按大小顺序均匀分配各颜色。
#### scale
Type: `Object` Default: `null`需要手动定义地图各颜色阈值时,传入该参数。该参数存在时,`colors` 不生效。格式如下:
``` js
const scale = [
{ color: 'green', threshold: 100 }, // 小于等于 100 的数据为绿色
{ color: 'yellow', threshold: 200 }, // 小于等于 200 的数据为黄色
{ color: 'red', threshold: 300 }, // 小于等于 300 的数据为红色
]
```在默认情况下 `scale` 由 CMap 组件根据传入数据自动生成,无需手动定义颜色与数据的对应关系。
#### hasCityView
Type: `Boolean` Default: `true`是否展示各省下的城市详细数据。
#### hasTileLayer
Type: `Boolean` Default: `false`是否加载来自 Open Street Map 的贴片地图。
#### hasZoomControl
Type: `Boolean` Default: `true`是否显示地图缩放控件。
#### boxZoom
Type: `Boolean` Default: `true`是否启用 Shift 拖动鼠标的缩放。
#### doubleClickZoom
Type: `Boolean` Default: `true`是否启用双击缩放。
#### ScrollWheelZoom
Type: `Boolean` Default: `true`是否启用滚轮缩放。
#### minZoom
Type: `Number` Default: `3`最低缩放等级。
#### maxZoom
Type: `Number` Default: `Infinity`最高缩放等级。
#### countryBounds
Type: `Array` Default: `[[18, 72], [54, 137]]`初始化时加载的中国经纬度,地图的缩放和平移均限制在该范围内。
#### tileStyle
Type: `Object`地图省市 Tile 样式,默认参数如下:
``` js
const tileStyle = {
weight: 2, // 边框宽度
opacity: 1, // 内容透明度
borderColor: 'white', // 边框颜色
dashArray: 4, // 边框间隔长度
fillOpacity: 0.7 // 边框透明度
}
```#### highlightStyle
Type: `Object`Hover 时的 Tile 样式,默认参数如下:
``` js
const tileStyle = {
weight: 5, // 边框宽度
borderColor: '#666', // 边框颜色
dashArray: 0, // 边框间隔长度
fillOpacity: 0.7 // 边框透明度
}
```## Custom
可通过定制 `modules/loader.js` 中 `require` 内容,剪裁出适合业务所需省份范围的构建版本,当只需国家视图时,可去除 `china.json` 之外的省份地形数据导入代码,以减小 Webpack 的构建文件数量。## License
MIT