diff --git a/docs/api/map.en.md b/docs/api/map.en.md
index a98eb49695..e851cd64cc 100644
--- a/docs/api/map.en.md
+++ b/docs/api/map.en.md
@@ -12,11 +12,10 @@ L7 在内部解决了不同地图底图之间差异,同时 L7 层面统一管
### 引入 Map
-```javascropt
+```javascript
+import { GaodeMap } from '@antv/l7-maps';
- import { GaodeMap } from '@antv/l7-maps';
-
- import { Mapbox } from '@antv/l7-maps';
+import { Mapbox } from '@antv/l7-maps';
```
### 实例化
diff --git a/docs/api/map.zh.md b/docs/api/map.zh.md
index 3adce0ca4b..84c557bf2d 100644
--- a/docs/api/map.zh.md
+++ b/docs/api/map.zh.md
@@ -12,11 +12,10 @@ L7 在内部解决了不同地图底图之间差异,同时 L7 层面统一管
### 引入 Map
-```javascropt
+```javascript
+import { GaodeMap } from '@antv/l7-maps';
- import { GaodeMap } from '@antv/l7-maps';
-
- import { Mapbox } from '@antv/l7-maps';
+import { Mapbox } from '@antv/l7-maps';
```
### 实例化
diff --git a/docs/tutorial/map/blankmap.en.md b/docs/tutorial/map/blankmap.en.md
index b462e81e7d..e2a31f584c 100644
--- a/docs/tutorial/map/blankmap.en.md
+++ b/docs/tutorial/map/blankmap.en.md
@@ -26,11 +26,3 @@ const scene = new Scene({
离线,无token使用
-
-
diff --git a/docs/tutorial/map/blankmap.zh.md b/docs/tutorial/map/blankmap.zh.md
index 2c645844b1..3da2d6e9f7 100644
--- a/docs/tutorial/map/blankmap.zh.md
+++ b/docs/tutorial/map/blankmap.zh.md
@@ -24,12 +24,4 @@ const scene = new Scene({
```
如果你只是需要做个中国地图,世界地图这样填充图,建议你采用这样的模式
-离线,无token使用
-
-
+离线,无token使用
\ No newline at end of file
diff --git a/examples/district/basic/API.en.md b/examples/district/basic/API.en.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/examples/district/basic/API.zh.md b/examples/district/basic/API.zh.md
new file mode 100644
index 0000000000..d1da667202
--- /dev/null
+++ b/examples/district/basic/API.zh.md
@@ -0,0 +1,8 @@
+---
+title: API
+---
+地图行政区划组件,支持世界地图,中国地图省市县三级,支持中国地图省市县上钻下取。
+
+## 配置项
+
+## 方法
diff --git a/examples/district/basic/demo/china_map.js b/examples/district/basic/demo/china_map.js
new file mode 100644
index 0000000000..0c14e62874
--- /dev/null
+++ b/examples/district/basic/demo/china_map.js
@@ -0,0 +1,215 @@
+import { Scene } from '@antv/l7';
+import { CountryLayer } from '@antv/l7-district';
+import { Mapbox } from '@antv/l7-maps';
+const ProvinceData = [
+ {
+ name: '云南省',
+ code: 530000,
+ value: 17881.12
+ },
+ {
+ name: '黑龙江省',
+ code: 230000,
+ value: 16361.62
+ },
+ {
+ name: '贵州省',
+ code: 520000,
+ value: 14806.45
+ },
+ {
+ name: '北京市',
+ code: 110000,
+ value: 30319.98
+ },
+ {
+ name: '河北省',
+ code: 130000,
+ value: 36010.27
+ },
+ {
+ name: '山西省',
+ code: 140000,
+ value: 16818.11
+ },
+ {
+ name: '吉林省',
+ code: 220000,
+ value: 15074
+ },
+ {
+ name: '宁夏回族自治区',
+ code: 640000,
+ value: 3705.18
+ },
+ {
+ name: '辽宁省',
+ code: 210000,
+ value: 25315.35
+ },
+ {
+ name: '海南省',
+ code: 460000,
+ value: 4832.05
+ },
+ {
+ name: '内蒙古自治区',
+ code: 150000,
+ value: 17289.22
+ },
+ {
+ name: '天津市',
+ code: 120000,
+ value: 18809.64
+ },
+ {
+ name: '新疆维吾尔自治区',
+ code: 650000,
+ value: 12199.08
+ },
+ {
+ name: '上海市',
+ code: 310000,
+ value: 32679.87
+ },
+ {
+ name: '陕西省',
+ code: 610000,
+ value: 24438.32
+ },
+ {
+ name: '甘肃省',
+ code: 620000,
+ value: 8246.07
+ },
+ {
+ name: '安徽省',
+ code: 340000,
+ value: 30006.82
+ },
+ {
+ name: '香港特别行政区',
+ code: 810000,
+ value: 0
+ },
+ {
+ name: '广东省',
+ code: 440000,
+ value: 97277.77
+ },
+ {
+ name: '河南省',
+ code: 410000,
+ value: 48055.86
+ },
+ {
+ name: '湖南省',
+ code: 430000,
+ value: 36425.78
+ },
+ {
+ name: '江西省',
+ code: 360000,
+ value: 21984.78
+ },
+ {
+ name: '四川省',
+ code: 510000,
+ value: 40678.13
+ },
+ {
+ name: '广西壮族自治区',
+ code: 450000,
+ value: 20353.51
+ },
+ {
+ name: '江苏省',
+ code: 320000,
+ value: 92595.4
+ },
+ {
+ name: '澳门特别行政区',
+ code: 820000,
+ value: null
+ },
+ {
+ name: '浙江省',
+ code: 330000,
+ value: 56197.15
+ },
+ {
+ name: '山东省',
+ code: 370000,
+ value: 76469.67
+ },
+ {
+ name: '青海省',
+ code: 630000,
+ value: 2865.23
+ },
+ {
+ name: '重庆市',
+ code: 500000,
+ value: 20363.19
+ },
+ {
+ name: '福建省',
+ code: 350000,
+ value: 35804.04
+ },
+ {
+ name: '湖北省',
+ code: 420000,
+ value: 39366.55
+ },
+ {
+ name: '西藏自治区',
+ code: 540000,
+ value: 1477.63
+ },
+ {
+ name: '台湾省',
+ code: 710000,
+ value: null
+ }
+];
+const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [ 116.2825, 39.9 ],
+ pitch: 0,
+ style: 'blank',
+ zoom: 3,
+ minZoom: 0,
+ maxZoom: 10
+ })
+});
+
+scene.on('loaded', () => {
+ new CountryLayer(scene, {
+ data: ProvinceData,
+ joinBy: [ 'NAME_CHN', 'name' ],
+ // label: {
+ // field: 'NAME_CHN',
+ // textAllowOverlap: true,
+ // },
+ depth: 1,
+ fill: {
+ field: 'value',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603'
+ ]
+ },
+ popup: {
+ enable: true,
+ Html: props => {
+ return `${props.NAME_CHN}:${props.value}`;
+ }
+ }
+ });
+});
diff --git a/examples/district/basic/demo/city.js b/examples/district/basic/demo/city.js
new file mode 100644
index 0000000000..9ddffa8f9e
--- /dev/null
+++ b/examples/district/basic/demo/city.js
@@ -0,0 +1,61 @@
+import { Scene } from '@antv/l7';
+import { CityLayer } from '@antv/l7-district';
+import { Mapbox } from '@antv/l7-maps';
+
+async function initMap() {
+ const response = await fetch(
+ 'https://gw.alipayobjects.com/os/bmw-prod/149b599d-21ef-4c24-812c-20deaee90e20.json'
+ );
+ const provinceData = await response.json();
+ const data = Object.keys(provinceData).map(key => {
+ return {
+ code: key,
+ name: provinceData[key][0],
+ pop: provinceData[key][2] * 1
+ };
+ });
+
+ const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [ 116.2825, 39.9 ],
+ pitch: 0,
+ style: 'blank',
+ zoom: 3,
+ minZoom: 3,
+ maxZoom: 10
+ })
+ });
+ scene.on('loaded', () => {
+ new CityLayer(scene, {
+ data,
+ joinBy: [ 'adcode', 'code' ],
+ adcode: [ '330000', '330100' ],
+ depth: 3,
+ label: {
+ field: 'NAME_CHN',
+ textAllowOverlap: false
+ },
+ fill: {
+ field: 'pop',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603'
+ ]
+ },
+ popup: {
+ enable: true,
+ Html: props => {
+ return `${props.NAME_CHN}:${props.pop}`;
+ }
+ }
+ });
+ });
+
+}
+
+initMap();
diff --git a/examples/district/basic/demo/county.js b/examples/district/basic/demo/county.js
new file mode 100644
index 0000000000..84fda95326
--- /dev/null
+++ b/examples/district/basic/demo/county.js
@@ -0,0 +1,41 @@
+import { Scene } from '@antv/l7';
+import { CountyLayer } from '@antv/l7-district';
+import { Mapbox } from '@antv/l7-maps';
+const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [ 116.2825, 39.9 ],
+ pitch: 0,
+ style: 'blank',
+ zoom: 3,
+ minZoom: 3,
+ maxZoom: 10
+ })
+});
+scene.on('loaded', () => {
+ new CountyLayer(scene, {
+ data: [],
+ adcode: [ '110101', '110102', '110106' ],
+ depth: 3,
+ label: {
+ field: 'NAME_CHN'
+ },
+ fill: {
+ field: 'NAME_CHN',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603'
+ ]
+ },
+ popup: {
+ enable: true,
+ Html: props => {
+ return `${props.NAME_CHN}`;
+ }
+ }
+ });
+});
diff --git a/examples/district/basic/demo/drill_down.js b/examples/district/basic/demo/drill_down.js
new file mode 100644
index 0000000000..982e9e893c
--- /dev/null
+++ b/examples/district/basic/demo/drill_down.js
@@ -0,0 +1,37 @@
+import { Scene } from '@antv/l7';
+import { DrillDownLayer } from '@antv/l7-district';
+import { Mapbox } from '@antv/l7-maps';
+const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [ 116.2825, 39.9 ],
+ pitch: 0,
+ style: 'blank',
+ zoom: 3,
+ minZoom: 3,
+ maxZoom: 10
+ })
+});
+scene.on('loaded', () => {
+ new DrillDownLayer(scene, {
+ data: [],
+ depth: 1,
+ fill: {
+ field: 'NAME_CHN',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603'
+ ]
+ },
+ popup: {
+ enable: true,
+ Html: props => {
+ return `${props.NAME_CHN}`;
+ }
+ }
+ });
+});
diff --git a/examples/district/basic/demo/meta.json b/examples/district/basic/demo/meta.json
new file mode 100644
index 0000000000..2e190fdffc
--- /dev/null
+++ b/examples/district/basic/demo/meta.json
@@ -0,0 +1,39 @@
+{
+ "title": {
+ "zh": "行政区划",
+ "en": "District"
+ },
+ "demos": [
+
+ {
+ "filename": "china_map.js",
+ "title": "中国地图",
+ "screenshot": "https://gw.alipayobjects.com/mdn/rms_8e1672/afts/img/A*tClNQoAo5isAAAAAAAAAAABkARQnAQ"
+ },
+ {
+ "filename": "world_map.js",
+ "title": "世界地图",
+ "screenshot": "https://gw.alipayobjects.com/mdn/rms_8e1672/afts/img/A*EtRFRYyGs98AAAAAAAAAAABkARQnAQ"
+ },
+ {
+ "filename": "province.js",
+ "title": "中国省级地图",
+ "screenshot": "https://gw.alipayobjects.com/mdn/rms_8e1672/afts/img/A*eVVcRaCBkdYAAAAAAAAAAABkARQnAQ"
+ },
+ {
+ "filename": "city.js",
+ "title": "中国市地图",
+ "screenshot": "https://gw.alipayobjects.com/mdn/rms_8e1672/afts/img/A*C_y8Tr0V8GIAAAAAAAAAAABkARQnAQ"
+ },
+ {
+ "filename": "county.js",
+ "title": "中国县地图",
+ "screenshot": "https://gw.alipayobjects.com/mdn/rms_8e1672/afts/img/A*iVwLSpIf_ckAAAAAAAAAAABkARQnAQ"
+ },
+ {
+ "filename": "drill_down.js",
+ "title": "中国地图上钻下取",
+ "screenshot": "https://gw.alipayobjects.com/mdn/rms_8e1672/afts/img/A*xjjARqU70xoAAAAAAAAAAABkARQnAQ"
+ }
+ ]
+}
diff --git a/examples/district/basic/demo/province.js b/examples/district/basic/demo/province.js
new file mode 100644
index 0000000000..05b5542977
--- /dev/null
+++ b/examples/district/basic/demo/province.js
@@ -0,0 +1,59 @@
+import { Scene } from '@antv/l7';
+import { ProvinceLayer } from '@antv/l7-district';
+import { Mapbox } from '@antv/l7-maps';
+async function initMap() {
+ const response = await fetch(
+ 'https://gw.alipayobjects.com/os/bmw-prod/149b599d-21ef-4c24-812c-20deaee90e20.json'
+ );
+ const provinceData = await response.json();
+ const data = Object.keys(provinceData).map(key => {
+ return {
+ code: key,
+ name: provinceData[key][0],
+ pop: provinceData[key][2] * 1
+ };
+ });
+
+ const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [ 116.2825, 39.9 ],
+ pitch: 0,
+ style: 'blank',
+ zoom: 3,
+ minZoom: 3,
+ maxZoom: 10
+ })
+ });
+
+ scene.on('loaded', () => {
+ new ProvinceLayer(scene, {
+ data,
+ joinBy: [ 'adcode', 'code' ],
+ adcode: [ '330000' ],
+ depth: 3,
+ label: {
+ field: 'NAME_CHN',
+ textAllowOverlap: false
+ },
+ fill: {
+ field: 'pop',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603'
+ ]
+ },
+ popup: {
+ enable: true,
+ Html: props => {
+ return `${props.NAME_CHN}:${props.pop}`;
+ }
+ }
+ });
+ });
+}
+initMap();
diff --git a/examples/district/basic/demo/world_map.js b/examples/district/basic/demo/world_map.js
new file mode 100644
index 0000000000..6f16dd7855
--- /dev/null
+++ b/examples/district/basic/demo/world_map.js
@@ -0,0 +1,42 @@
+import { Scene } from '@antv/l7';
+import { WorldLayer } from '@antv/l7-district';
+import { Mapbox } from '@antv/l7-maps';
+const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [ 116.2825, 39.9 ],
+ pitch: 0,
+ style: 'blank',
+ zoom: 0,
+ minZoom: 0,
+ maxZoom: 10
+ })
+});
+scene.on('loaded', () => {
+ new WorldLayer(scene, {
+ data: [],
+ fill: {
+ field: 'NAME_CHN',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603'
+ ]
+ },
+ stroke: '#ccc',
+ label: {
+ enable: true,
+ textAllowOverlap: false,
+ field: 'Short_Name_ZH'
+ },
+ popup: {
+ enable: false,
+ Html: props => {
+ return `${props.Short_Name_ZH}`;
+ }
+ }
+ });
+});
diff --git a/examples/district/basic/index.en.md b/examples/district/basic/index.en.md
new file mode 100644
index 0000000000..1040d80f83
--- /dev/null
+++ b/examples/district/basic/index.en.md
@@ -0,0 +1,4 @@
+---
+title: L7 District
+order: 3
+---
diff --git a/examples/district/basic/index.zh.md b/examples/district/basic/index.zh.md
new file mode 100644
index 0000000000..e2595f8e7f
--- /dev/null
+++ b/examples/district/basic/index.zh.md
@@ -0,0 +1,4 @@
+---
+title: 基础组件
+order: 3
+---
diff --git a/examples/district/react/demo/city.tsx b/examples/district/react/demo/city.tsx
new file mode 100644
index 0000000000..81a5126c59
--- /dev/null
+++ b/examples/district/react/demo/city.tsx
@@ -0,0 +1,115 @@
+import { Scene } from '@antv/l7';
+import { CityLayer } from '@antv/l7-district';
+import { GaodeMap, Mapbox } from '@antv/l7-maps';
+import { Cascader } from 'antd';
+import * as React from 'react';
+import ReactDOM from 'react-dom';
+
+class City extends React.Component {
+ public state = {
+ options: [],
+ };
+ // @ts-ignore
+ private scene: Scene;
+ private cityLayer: CityLayer;
+
+ public componentWillUnmount() {
+ this.scene.destroy();
+ }
+
+ public async componentDidMount() {
+ const res = await fetch(
+ 'https://gw.alipayobjects.com/os/bmw-prod/551e3ca6-6dad-421b-a8b4-b225e47f73ca.json',
+ );
+ const options = await res.json();
+ this.setState({
+ options,
+ });
+ const response = await fetch(
+ 'https://gw.alipayobjects.com/os/bmw-prod/149b599d-21ef-4c24-812c-20deaee90e20.json',
+ );
+ const provinceData = await response.json();
+ const data = Object.keys(provinceData).map((key: string) => {
+ return {
+ code: key,
+ name: provinceData[key][0],
+ pop: provinceData[key][2] * 1,
+ };
+ });
+ const scene = new Scene({
+ id: 'map',
+ map: new Mapbox({
+ center: [116.2825, 39.9],
+ pitch: 0,
+ style: 'blank',
+ zoom: 3,
+ minZoom: 3,
+ maxZoom: 10,
+ }),
+ });
+ scene.on('loaded', () => {
+ this.cityLayer = new CityLayer(scene, {
+ data,
+ joinBy: ['adcode', 'code'],
+ adcode: ['330000', '330100'],
+ depth: 3,
+ label: {
+ field: 'NAME_CHN',
+ textAllowOverlap: false,
+ },
+ fill: {
+ field: 'NAME_CHN',
+ values: [
+ '#feedde',
+ '#fdd0a2',
+ '#fdae6b',
+ '#fd8d3c',
+ '#e6550d',
+ '#a63603',
+ ],
+ },
+ popup: {
+ enable: true,
+ Html: (props) => {
+ return `${props.NAME_CHN}:`;
+ },
+ },
+ });
+ });
+ this.scene = scene;
+ }
+
+ public render() {
+ return (
+ <>
+