Цитата |
---|
Михаил написал: если нам нужно один раз нажать на область. А потом: |
Можем предложить другое решение. Все прежние правки отменить. Внести изменение в следующие два файла:
1) GIS WebToolKit SE/debug/source/systemActions/AppendPointAction.ts
onMouseDown(event: MouseDeviceEvent) {
if (event.pressedMouseButtonList[2]) {
this.dashedObject.removeAllPoints();
}
}
onMouseClick( event: MouseDeviceEvent ) {
if ( this.currentObject ) {
const objectNumber = (this.currentObject.getObjectSubObjectsCount() - 1) > 0 ? this.currentObject.getObjectSubObjectsCount() - 1 : 0;
const contourNumber = (this.currentObject.getObjectContoursCount(objectNumber) - 1) > 0 ? this.currentObject.getObjectContoursCount(objectNumber) - 1 : 0;
const selector = { objectNumber, contourNumber };. . .
if ( hoverPoint ) {
this.currentObject.addPoint( hoverPoint, selector );
this.dashedObject.updatePoint( hoverPoint, {
positionNumber: 0,
objectNumber: 0,
contourNumber: 0
} );
} else {
this.currentObject.addPixelPoint( event.mousePosition, selector );
. . .
this.updateWidgetParams();
}
}
1.1) добавили метод onMouseDown
1.2) в метод onMouseClick внесли следующие изменения:
- определили три константы (objectNumber, contourNumber, selector)
- в условии if (hoverPoint) заменили this.selector на selector
2) src/components/GwtkSearchArea/actions/SelectMapPolygonAction
.ts
onMouseDown(event: MouseDeviceEvent): void {
if (this.currentObject && event.pressedMouseButtonList[2]) {
const objectNumber = (this.currentObject.getObjectSubObjectsCount() - 1) > 0 ? this.currentObject.getObjectSubObjectsCount() - 1 : 0;
const contourNumber = (this.currentObject.getObjectContoursCount(objectNumber) - 1) > 0 ? this.currentObject.getObjectContoursCount(objectNumber) - 1 : 0;
if (this.currentObject.getContourPointsCount(objectNumber, contourNumber) >= 4) {
this.currentObject?.addEmptyContour(this.currentObject.getObjectSubObjectsCount() - 1);
super.onMouseDown(event);
}
}
}
2.1) добавили метод onMouseDown
Последовательность действий пользователя:
1. открыть компонент "Поиск по области";
2. нажать кнопку "Область";
3. левой кнопкой мыши задать область (минимум три точки);
4. правой кнопкой мыши завершить рисование текущей области;
5. левой кнопкой мыши задать следующую область;
6. правой кнопкой мыши завершить рисование текущей области;
7. повторить пункты 3 и 4 необходимое количество раз;
8. для завершения нанесения областей и запуска поиска нажать на кнопку "Завершить" (или сделать двойной клик левой кнопкой мыши).