From 1e2464a69200a0d48d64b2eb1f890cfb1af788e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E5=BC=80=E5=8D=8A=E4=BA=A9=E5=9C=B0?= <2572468699@qq.com> Date: Thu, 15 Dec 2022 17:48:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=A1=8C=E6=94=BF?= =?UTF-8?q?=E5=8C=BA=E5=9B=BE=E5=B1=82=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/.vitepress/configs/sidebar.config.zh.ts | 4 + docs/examples/layer/districtLayer.vue | 22 ++++++ docs/zh-CN/components/layer/district-layer.md | 41 ++++++++++ packages/components.ts | 4 +- packages/components/index.ts | 1 + .../components/layer/district-layer/index.ts | 2 + .../components/layer/district-layer/index.vue | 78 +++++++++++++++++++ packages/utils/typescript.ts | 5 ++ types/BMapGL/core.d.ts | 2 + types/BMapGL/layer.d.ts | 12 +++ 10 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 docs/examples/layer/districtLayer.vue create mode 100644 docs/zh-CN/components/layer/district-layer.md create mode 100644 packages/components/layer/district-layer/index.ts create mode 100644 packages/components/layer/district-layer/index.vue 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