diff --git a/docs/.vitepress/configs/sidebar.config.zh.ts b/docs/.vitepress/configs/sidebar.config.zh.ts
index 6527dc96..6fc2792d 100644
--- a/docs/.vitepress/configs/sidebar.config.zh.ts
+++ b/docs/.vitepress/configs/sidebar.config.zh.ts
@@ -131,6 +131,10 @@ export const sidebarConfigZh = {
{
text: 'PanoramaCoverageLayer 全景图层',
link: '/zh-CN/components/layer/panorama-coverage'
+ },
+ {
+ text: 'DistrictLayer 行政区图层',
+ link: '/zh-CN/components/layer/district-layer'
}
]
},
diff --git a/docs/examples/layer/districtLayer.vue b/docs/examples/layer/districtLayer.vue
new file mode 100644
index 00000000..72f3d189
--- /dev/null
+++ b/docs/examples/layer/districtLayer.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/docs/zh-CN/components/layer/district-layer.md b/docs/zh-CN/components/layer/district-layer.md
new file mode 100644
index 00000000..e30b6a1b
--- /dev/null
+++ b/docs/zh-CN/components/layer/district-layer.md
@@ -0,0 +1,41 @@
+# DistrictLayer 行政区图层
+
+在地图上显示行政区划分
+
+```ts
+import { DistrictLayer } from 'vue3-baidu-map-gl'
+```
+
+## 组件示例
+
+:::demo 渲染北京市行政区划分,绑定鼠标事件
+layer/districtLayer
+:::
+
+## 静态组件 Props
+
+| 属性 | 说明 | 类型 | 可选值 | 默认值 |
+| ----------- | ---------------- | ------------------------------- | ------ | ---------------------- |
+| name | 行政区名字 | `string` | - | `required` |
+| kind | 行政区类型 | [`DistrictType`](#districttype) | - | `DistrictType['AREA']` |
+| fillColor | 填充颜色 | `string` | - | `#fdfd27` |
+| fillOpacity | 填充透明度 | `number` | - | `1` |
+| strokeColor | 线条颜色 | `string` | - | `#231cf8` |
+| viewport | 自动聚焦地图中心 | `boolean` | - | `false` |
+
+## DistrictType
+
+| 值 | 说明 |
+| -------- | ------- |
+| PROVINCE | 省级 |
+| CITY | 市级 |
+| AREA | 县/区级 |
+
+## 组件事件
+
+| 事件名 | 说明 | 类型 |
+| --------- | ------------------------------------------ | --------------------------- |
+| initd | 组件初始化后,调用的方法,返回一个地图实例 | `{ map, BmapGL, instance }` |
+| unload | 组件卸载时会调用此方法 | - |
+| mouseover | 鼠标移入行政区域时触发此事件 | `{type, target}` |
+| mouseout | 鼠标移出行政区域时触发此事件 | `{type, target}` |
diff --git a/packages/components.ts b/packages/components.ts
index 7e223877..f35ad606 100644
--- a/packages/components.ts
+++ b/packages/components.ts
@@ -19,6 +19,7 @@ import { Circle } from './components/overlay/circle/index'
import { Prism } from './components/overlay/prism/index'
import { GroundOverlay } from './components/overlay/ground-overlay/index'
import { ContextMenu } from './components/contextMenu/index'
+import { DistrictLayer } from './components/layer/district-layer/index'
export default [
Map,
@@ -41,5 +42,6 @@ export default [
ContextMenu,
PanoramaControl,
PanoramaCoverageLayer,
- GroundOverlay
+ GroundOverlay,
+ DistrictLayer
]
diff --git a/packages/components/index.ts b/packages/components/index.ts
index e9f05686..9badf8f8 100644
--- a/packages/components/index.ts
+++ b/packages/components/index.ts
@@ -19,3 +19,4 @@ export * from './overlay/circle/index'
export * from './overlay/prism/index'
export * from './overlay/ground-overlay/index'
export * from './contextMenu/index'
+export * from './layer/district-layer/index'
diff --git a/packages/components/layer/district-layer/index.ts b/packages/components/layer/district-layer/index.ts
new file mode 100644
index 00000000..dc8f1016
--- /dev/null
+++ b/packages/components/layer/district-layer/index.ts
@@ -0,0 +1,2 @@
+export { default as DistrictLayer } from './index.vue'
+export * from './index.vue'
diff --git a/packages/components/layer/district-layer/index.vue b/packages/components/layer/district-layer/index.vue
new file mode 100644
index 00000000..6567814a
--- /dev/null
+++ b/packages/components/layer/district-layer/index.vue
@@ -0,0 +1,78 @@
+
+
+
+
diff --git a/packages/utils/typescript.ts b/packages/utils/typescript.ts
index 9c12e818..32e02462 100644
--- a/packages/utils/typescript.ts
+++ b/packages/utils/typescript.ts
@@ -11,3 +11,8 @@ export interface _Point {
export type Point = _Point | BMapGL.Point
export type ControlAnchor = _ControlAnchor
export type StrokeStyle = 'solid' | 'dashed' | 'dotted'
+export enum DistrictType {
+ 'PROVINCE' = 0,
+ 'CITY' = 1,
+ 'AREA' = 2
+}
diff --git a/types/BMapGL/core.d.ts b/types/BMapGL/core.d.ts
index b54a41cf..d71d216e 100644
--- a/types/BMapGL/core.d.ts
+++ b/types/BMapGL/core.d.ts
@@ -249,6 +249,8 @@ declare namespace BMapGL {
addTileLayer(tileLayer: TileLayer): void
removeTileLayer(tilelayer: TileLayer): void
getTileLayer(mapType: string): TileLayer
+ removeDistrictLayer(districtLayer: BMapGL.DistrictLayer): void
+ addDistrictLayer(districtLayer: BMapGL.DistrictLayer): void
/**
* 启动视角动画
*/
diff --git a/types/BMapGL/layer.d.ts b/types/BMapGL/layer.d.ts
index 116f92f4..e2723896 100644
--- a/types/BMapGL/layer.d.ts
+++ b/types/BMapGL/layer.d.ts
@@ -58,6 +58,18 @@ declare namespace BMapGL {
pointDensityType?: PointDensityType
}
type PointDensityType = number
+
+ interface DistrictLayerOptions {
+ name: string
+ kind: number
+ fillColor: string
+ fillOpacity: number
+ strokeColor: string
+ viewport: boolean
+ }
+ class DistrictLayer extends TileLayer {
+ constructor(opts: DistrictLayerOptions)
+ }
}
declare const BMAP_POINT_DENSITY_HIGH: BMapGL.PointDensityType