交互总览
本文回答:右键菜单 / 绘图 / 测量 / 选择 / 控件 / 键鼠输入 —— vjmap 的交互能力总览。
分类
| 类别 | 目的 | 子文件 |
|---|---|---|
| 右键菜单 | 地图 / 图层 / Marker 右键弹菜单 | context-menu |
| 测量工具 | 距离 / 面积 / 角度 / 坐标 | measure |
| 绘图工具 | 点 / 线 / 面 / 圆 / 矩形,含夹点编辑 | draw-tools / draw-action |
| 选择工具 | 框选 / 点选 / 多边形选 | select-feature |
| 地图控件 | Navigation / Scale / MiniMap 等 | controls |
| 鼠标键盘事件 | mouseover / click / keydown | mouse-keyboard |
| 拖拽 / 旋转 / 缩放控制 | 启用禁用交互 | drag-rotate-zoom |
| 捕捉 / 正交 / 快捷键 | 绘制辅助 | snap-ortho |
两套绘图 API
vjmap.Draw 既有 全局控件模式 又有 一次性 action 模式:
new vjmap.Draw.Tool({...})+map.addControl(draw):显示工具栏,点按钮切换模式。await vjmap.Draw.actionDrawLineSting(map, {...}):Promise 风格,无按钮,业务代码里直接等用户画完一条线 → 继续下一步。
测量、选择、修改文字等业务场景都用 action 模式,因为它天然是"绘制一次 → 得到结果 → 继续下一步"的流程。
控件位置
map.addControl(control, position):position = top-left | top-right | bottom-left | bottom-right。
主题级 Top 3 陷阱
- Marker 的右键不走 map.setMenu:Marker 是独立 DOM,需要
marker.getElement().addEventListener("mousedown", ...)。 - 内存模式选择能力受限:
MapOpenWay.Memory下pointQueryFeature/rectQueryFeature/exprQueryFeature可用(点查询恒只返回 1 条,返回几何是实体外包范围而非真实轮廓),但conditionQueryFeature(SQL 条件)返回{error:"not support query type!"};需要真实几何或 SQL 选择请用MapOpenWay.GeomRender打开。 - 绘制时"Alt 取消捕捉 / Ctrl 正交 / Backspace 删点" 都是内置快捷键;触摸端不可用。