Why do we need this library?

目前监控的图形元素均使用 leaflet 原生图形库,无业务性封装。

而地图编辑器有所封装,但是所采取的 rewrite prototype 的 mixin 机制带来 2 个问题:

  1. 潜在的命名冲突风险
  2. TS 类型声明混乱

另外设计方面,编辑器存在的缺陷在于:

  1. 没有独立的业务模型
  2. 行为模式设计不合理
  3. 缺乏基于栈的图形状态管理

而对于监控来说,业务模型与视图的响应机制纯粹基于事件,导致代码逻辑不够清晰(到处是绑定 on 和解绑 off)。

当然也有可取的地方,监控的可取之处是:

  1. 有独立的业务模型

编辑器的可取之处是:

  1. 基于 React 组件的 SVGOverlay
  2. 基于状态的视图更新机制

因此,仓库图形库想要解决这些问题并采纳其中可取的地方。并且,它要封装公司的业务,以使可开箱即用,同时争取将两个端的图形部分的代码统一。