Skip to content

VDrawControl

VDrawControl 组件用于绘制和编辑地图要素。基于 mapbox-gl-draw 扩展了以下模式:

扩展的绘制模式如下:所有的要素属性都是实时更新的。

  • 内置模式 : simple_select, direct_select, draw_point, draw_line_string, draw_polygon, draw_trash, draw_combine, draw_uncombine
  • 静态 : static
  • 绘制矩形 : draw_rectangle
  • 绘制圆形 : draw_circle
  • 绘制涂鸦 : draw_paint
  • 测距 : draw_line_measurement
  • 测面 : draw_area_measurement

完整示例

自定义绘制 UI

controls 的值设置为 [],通过改变 mode 值来切换绘制模式。

自定义绘制样式

通过 drawStyles 属性来覆盖默认样式。

API

drawControlProps

属性名说明类型默认值
modelValue绘制的所有要素object-
mode绘制模式stringsimple_select
controls显示的控件Array-
extraModes自定义控件object-
displayControlsDefault显示默认控件booleantrue
midpoints是否创建中点booleanfalse
keybindings是否启用键盘交互绘图booleantrue
touchEnabled是否启用触摸交互绘图booleantrue
boxSelect是否启用 shift+ click 拖动框选特征booleantrue
clickBuffer点击缓冲区number2
touchBuffer触摸缓冲区number25
userProperties是否启用用户样式属性booleantrue
suppressAPIEvents是否启用 API 事件booleantrue
drawStyles用于覆盖默认样式Array-
drawUnits绘制单位(测距、测面、圆形stringkilometers
defaultOptions配置项 (覆盖同名属性)object-

drawControlEmits

事件名说明回调参数
update:modelValue更新绘制要素Function
update:mode更新绘制模式Function
add控件添加完成后触发Function
remove控件移除完成后触发Function
drawCreate绘制要素创建后触发Function
drawDelete绘制要素删除后触发Function
drawUpdate绘制要素更新后触发Function
drawSelectionchange绘制选择变更后触发Function
drawRender绘制渲染后触发Function
drawCombine克隆要素合并后触发Function
drawUncombine克隆要素拆分后触发Function
drawModechange模式变更后触发Function
drawActionable动作状态更新后触发Function

Inject

hooks/symbol.ts
typescript
export const drawKey: InjectionKey<ShallowRef<MapboxDraw | undefined>> = Symbol('Draw')
hooks/useDraw.ts
ts
export function useDraw() {
  const draw = inject(drawKey)
  if (!draw) {
    consola.warn('No Draw provided')
  }
  return unref(draw)
}

类型定义

DrawControlLoadEvent

typescript
export interface DrawControlLoadEvent {
  type: 'draw'
  control: MapboxDraw
  map: Map
}

基于 MIT 许可发布