标绘时需要进行的操作,大多需要绑定事件,在事件中进行处理;
图层可绑定的事件在图上标绘示例 (opens new window)中都有演示,以及里面的参数;
# 绘制
# 绘制结束后想直接编辑绘制的矢量,不通过点击
可选择以下方式:
参数:对图层设置isAutoEditing 参数,为 true;
事件:绑定绘制完成事件,在事件中对矢量对象使用startEditing方法
# 绘制过程中如何实现“回退”的操作
记录每次点击点的位置,撤销就删除这个点,然后重新绘制一个图形, 为了保留绘制过程,可以有右键撤回功能,可以获取编辑中的矢量对象,对该对象执行 _onRightClickHandler 方法;
graphic._onRightClickHandler();
1
# 小模型绘制时,想点击三维模型上也想点击在地形上
问题描述:绘制的时候,有三维模型时,有时会点击加载在地形上,不太准确;
解决办法:可参考示例 - gLTF 模型标绘及编辑 (opens new window)设置drawShow参数
# 绘制的时候,想要自动吸附到已经加载过的矢量上
可开启顶点吸附功能,自动吸附其他矢量的尖角处;
map.onlyVertexPosition = true;
1
# 绘制的时候怎么加入一个已确定坐标
设置 positions 数组,里面加入已确定的坐标
graphicLayer.startDraw({
type: "polyline",
positions: [[117.358187, 31.838662, 12.23]],
...其他参数,
});
1
2
3
4
5
2
3
4
5
# 绘制结束后获取矢量的坐标
单坐标可通过 positionShow 获取;
多坐标则通过 positionsShow 获取
graphic.positionShow;
1
# 绘制过程中右键可以删除上一点,如何自定义触发该事件
以键盘事件为例
map.on(mars3d.EventType.keyup, function (e) {
console.log("按下了键盘", e);
if (e.keyCode === 27) {
graphicLayer._graphic_drawing._positions_draw.pop();
graphicLayer._graphic_drawing._editPointHandler();
}
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 编辑
# 编辑的时候,右键菜单只想要其中的某个选项
查看对应矢量的 api 文档,设置 hasEditContextMenu 为 false,即可使用外部自定义的右键菜单
内置的菜单无法进行增删,只能外部自定义;
# 某个矢量进入编辑模式后,其他的矢量的 tooltip 都会失效
为了提高效率所以关闭,若有所需求可以手动开启下;
graphicLayer.on(mars3d.EventType.editStart, function (event) {
map.mouseEvent.enabledMoveTarget = true;
});
1
2
3
2
3
# 编辑的时候怎么只修改高度或者只左右偏移
使用 MatrixMove ,构造后自行改下 xy 轴隐藏掉
matrixMove._graphic_move_x.show = false;
matrixMove._graphic_move_y.show = false;
// 样式可以matrixMove._graphic_move_z.setStyle(); //是PolylinePrimitive对象。
1
2
3
4
2
3
4
# 编辑时,小模型右键有个编辑方向,怎么不通过右键直接编辑
graphic.readyPromise.then(() => {
graphic.startEditing();
graphic.editing._hasEditHeading = true;
graphic.editing.updateDraggers();
});
1
2
3
4
5
2
3
4
5