in modules/edit-modes/src/lib/draw-line-string-mode.ts [20:68]
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
const { picks } = event;
const clickedEditHandle = getPickedEditHandle(picks);
let positionAdded = false;
if (!clickedEditHandle) {
// Don't add another point right next to an existing one
this.addClickSequence(event);
positionAdded = true;
}
const clickSequence = this.getClickSequence();
// check if the pointer is on editable state calculate the distance of new point
if (!clickedEditHandle) {
this.calculateInfoDraw(clickSequence);
}
if (
clickSequence.length > 1 &&
clickedEditHandle &&
Array.isArray(clickedEditHandle.properties.positionIndexes) &&
clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1
) {
// They clicked the last point (or double-clicked), so add the LineString
// reset distance to new calculate
this.dist = 0;
const lineStringToAdd: LineString = {
type: 'LineString',
coordinates: [...clickSequence],
};
this.resetClickSequence();
const editAction = this.getAddFeatureAction(lineStringToAdd, props.data);
if (editAction) {
props.onEdit(editAction);
}
} else if (positionAdded) {
// new tentative point
props.onEdit({
// data is the same
updatedData: props.data,
editType: 'addTentativePosition',
editContext: {
position: event.mapCoords,
},
});
}
}