geometryEditor.Polygon
Расширяет IGeometryEditor.
Редактор геометрии "Многоугольник".
Конструктор
geometryEditor.Polygon(geometry[, options])
Параметры:
|
Параметр |
Значение по умолчанию |
Описание |
|
|
— |
Тип: IPolygonGeometry Геометрия "Многоугольник". |
|
|
— |
Тип: Object Опции редактора геометрии. Через опции редактора геометрии можно задавать как опции самого редактора, так и опции его составных частей: |
|
|
— |
Тип: Function Обработчик двойного щелчка по вершине. Принимает ссылку на модель редактируемой вершины. По умолчанию, обработчик определен функцией, удаляющей соответствующую вершину. |
|
|
"arrow" |
Тип: Boolean Курсор мыши в режиме добавления новых вершин. |
|
|
true |
Тип: Boolean Разрешает ставить точки поверх объектов карты в режиме добавления новых вершин. |
|
|
— |
Тип: Function Класс макета для промежуточных меток. |
|
|
Infinity |
Тип: Number Максимально допустимое число вершин в многоугольнике. |
|
|
— |
Тип: Function Диспетчер контекстного меню, открывающегося при щелчке по вершине. Принимает два аргумента: • ссылку на модель редактируемой вершины. |
|
|
— |
Тип: Function Класс макета для меток на вершинах многоугольника. |
* Обязательный параметр/опция.
Поля
|
Имя |
Тип |
Описание |
|
Менеджер событий. Унаследовано от IEventEmitter. |
||
|
Редактируемая геометрия. Унаследовано от IGeometryEditor. |
||
|
Менеджер опций. Унаследовано от ICustomizable. |
||
|
Менеджер состояния редактора геометрии. Поля данных, доступные посредством методов get и set: • editing - определяет включен ли редактор. Тип - Boolean. Значение по умолчанию - false. • drawing - определяет включен ли режим рисования. Тип - Boolean. Значение по умолчанию - false. • drawingFrom - определяет то, как добавляются новые точки в режиме добавления. Может принимать одно из двух строковых значений: "begin" - точки добавляются в начало многоугольника, "end"- точки добавляются в конец. • drawingFromIndex - индекс вершины многоугольника, после которой будут добавляться новые точки в режиме добавления. Данное поле доступно только на запись, т.к. факт записи приводит к изменению порядка вершин в многоугольнике, так чтобы точка с заданным индексом стала последней по счету. Тип - целое число. • drawingPath - индекс контура многоугольника, в который добавляются новые точки в режиме добавления. Тип - целое число. Значение по умолчанию - 0. |
События
|
Имя |
Описание |
|
Событие, предшествующее событию edgedrag. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге. Имена методов, доступных через метод Event.callMethod: • setPixelOffset - метод, позволяющий скорректировать значение пиксельного сдвига, который будет фактически применен. В качестве аргумента принимает новый пиксельный сдвиг в виде массива из двух чисел. Если у данного события вызвать метод Event.preventDefault, то последующее событие edgedrag будет отменено. |
|
|
Событие, предшествующее событию edgedragstart. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется. Если у данного события вызвать метод Event.preventDefault, то последующее перетаскивание, как и событие edgedragstart, будет отменено. |
|
|
Событие, предшествующее событию vertexadd. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • parentModel - ссылка на родительскую, для добавляемой вершины, модель данных; • vertexIndex - индекс добавляемой вершины; • globalPixels - координаты добавляемой вершины в глобальных пиксельных координатах. Имена методов, доступных через метод Event.callMethod: • setGlobalPixels - метод позволяет скорректировать значения координат добавляемой вершины. В качестве аргумента принимает новые глобальные пиксельные координаты вершины в виде массива из двух чисел. Если у данного события вызвать метод Event.preventDefault, то последующее событие vertexadd будет отменено. |
|
|
Событие, предшествующее событию vertexdrag. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге. Имена методов, доступных через метод Event.callMethod: • setPixelOffset - метод, позволяющий скорректировать значение пиксельного сдвига, который будет фактически применен. В качестве аргумента принимает новый пиксельный сдвиг в виде массива из двух чисел. Если у данного события вызвать метод Event.preventDefault, то последующее событие vertexdrag будет отменено. |
|
|
Событие, предшествующее событию vertexdragstart. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется. Если у данного события вызвать метод Event.preventDefault, то последующее перетаскивание, как и событие vertexdragstart, будет отменено. |
|
|
Событие, предшествующее событию vertexdraw. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • parentModel - ссылка на родительскую, для добавляемой вершины, модель данных; • vertexIndex - индекс добавляемой вершины; • globalPixels - координаты добавляемой вершины в глобальных пиксельных координатах. Имена методов, доступных через метод Event.callMethod: • setGlobalPixels - метод позволяет скорректировать значения координат добавляемой вершины. В качестве аргумента принимает новые глобальные пиксельные координаты вершины в виде массива из двух чисел. Если у данного события вызвать метод Event.preventDefault, то последующее событие vertexdraw будет отменено. |
|
|
Перетаскивание промежуточной метки. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге. |
|
|
Завершение перетаскивания промежуточной метки. Экземпляр класса Event. |
|
|
Начало перетаскивания промежуточной метки. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется. |
|
|
Изменение в опциях объекта. Унаследовано от ICustomizable. |
|
|
Изменение состояния редактора геометрии. Экземпляр класса Event. Унаследовано от IGeometryEditor. |
|
|
Добавление новой вершины. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • parentModel - ссылка на родительскую, для добавленной вершины, модель данных; • vertexIndex - индекс добавленной вершины; • globalPixels - координаты добавленной вершины в глобальных пиксельных координатах. |
|
|
Перетаскивание вершины. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге. |
|
|
Завершение перетаскивания вершины. Экземпляр класса Event. |
|
|
Начало перетаскивания вершины. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется. |
|
|
Рисование новой вершины. Данное событие, как правило, предшествует событию добавления вершины и возникает в момент движения мышью при включенном режиме добавления новых вершин. На основе данных, передаваемых в данном событии, отображаются направляющие линии в режиме добавления новых вершин. Экземпляр класса Event. Имена полей, доступных через метод Event.get: • parentModel - ссылка на родительскую, для добавляемой вершины, модель данных; • vertexIndex - индекс добавляемой вершины; • globalPixels - координаты добавляемой вершины в глобальных пиксельных координатах. |
Методы
|
Имя |
Возвращает |
Описание |
|
getModel() |
Returns ссылку на модель данных редактора. |
|
|
getView() |
Returns ссылку на объект отображения редактора. |
|
|
Включает режим добавления новых вершин в многоугольник. |
||
|
Включает режим редактирования. Унаследован от IGeometryEditor. |
||
|
Отключает режим добавления новых вершин в многоугольник. |
||
|
Отключает режим редактирования. Унаследован от IGeometryEditor. |
Описание полей
state
{IDataManager} state
Менеджер состояния редактора геометрии.
Поля данных, доступные посредством методов get и set:
• editing - определяет включен ли редактор. Тип - Boolean. Значение по умолчанию - false.
• drawing - определяет включен ли режим добавления новых вершин. Тип - Boolean. Значение по умолчанию - false.
• drawingFrom - определяет то, как добавляются новые точки в режиме добавления. Может принимать одно из двух строковых значений: "begin" - точки добавляются в начало многоугольника, "end"- точки добавляются в конец.
• drawingFromIndex - индекс вершины многоугольника, после которой будут добавляться новые точки в режиме добавления. Данное поле доступно только на запись, т.к. факт записи приводит к изменению порядка вершин в многоугольнике, так чтобы точка с заданным индексом стала последней по счету. Тип - целое число.
• drawingPath - индекс контура многоугольника, в который добавляются новые точки в режиме добавления. Тип - целое число. Значение по умолчанию - 0.
Описание событий
beforeedgedrag
Событие, предшествующее событию edgedrag. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге.
Имена методов, доступных через метод Event.callMethod:
• setPixelOffset - метод, позволяющий скорректировать значение пиксельного сдвига, который будет фактически применен. В качестве аргумента принимает новый пиксельный сдвиг в виде массива из двух чисел.
Если у данного события вызвать метод Event.preventDefault, то последующее событие edgedrag будет отменено.
beforeedgedragstart
Событие, предшествующее событию edgedragstart. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется.
Если у данного события вызвать метод Event.preventDefault, то последующее перетаскивание, как и событие edgedragstart, будет отменено.
beforevertexadd
Событие, предшествующее событию vertexadd. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• parentModel - ссылка на родительскую, для добавляемой вершины, модель данных;
• vertexIndex - индекс добавляемой вершины;
• globalPixels - координаты добавляемой вершины в глобальных пиксельных координатах.
Имена методов, доступных через метод Event.callMethod:
• setGlobalPixels - метод позволяет скорректировать значения координат добавляемой вершины. В качестве аргумента принимает новые глобальные пиксельные координаты вершины в виде массива из двух чисел.
Если у данного события вызвать метод Event.preventDefault, то последующее событие vertexadd будет отменено.
Примеры:
1.
// Запрещаем добавлять новые вершины на расстоянии более 100 пикселей от центра карты.
polygon.editor.events.add("beforevertexadd", function (event) {
var mapGlobalPixelCenter = geoMap.getGlobalPixelCenter(),
globalPixels = event.get("globalPixels"),
vector = [mapGlobalPixelCenter[0] - globalPixels[0], mapGlobalPixelCenter[1] - globalPixels[1]],
vectorLength = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);
if (vectorLength > 100) {
event.preventDefault();
}
});
2.
// Корректируем координаты событий добавления вершин так, чтобы они не выходили за границы квадрата со стороной
// 100 пикселей и центром, совпадающим с центром карты.
polygon.editor.events.add(["beforevertexdraw", "beforevertexadd"], function (event) {
var mapGlobalPixelCenter = geoMap.getGlobalPixelCenter(),
globalPixels = event.get("globalPixels"),
pixelBounds = [
[mapGlobalPixelCenter[0] - 100, mapGlobalPixelCenter[1] - 100],
[mapGlobalPixelCenter[0] + 100, mapGlobalPixelCenter[1] + 100]
];
event.callMethod("setGlobalPixels", [
Math.max(Math.min(globalPixels[0], pixelBounds[1][0]), pixelBounds[0][0]),
Math.max(Math.min(globalPixels[1], pixelBounds[1][1]), pixelBounds[0][1])
]);
});
beforevertexdrag
Событие, предшествующее событию vertexdrag. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге.
Имена методов, доступных через метод Event.callMethod:
• setPixelOffset - метод, позволяющий скорректировать значение пиксельного сдвига, который будет фактически применен. В качестве аргумента принимает новый пиксельный сдвиг в виде массива из двух чисел.
Если у данного события вызвать метод Event.preventDefault, то последующее событие vertexdrag будет отменено.
beforevertexdragstart
Событие, предшествующее событию vertexdragstart. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется.
Если у данного события вызвать метод Event.preventDefault, то последующее перетаскивание, как и событие vertexdragstart, будет отменено.
Пример:
// Запрещаем перетаскивание вершины с индексом 0 в контуре с тем же индексом.
polygon.editor.events.add("beforevertexdragstart", function (event) {
var vertexModel = event.get("target").properties.get("vertexModel"),
pathModel = vertexModel.getParent();
if (pathModel.getIndex() == 0 && vertexModel.getIndex() == 0) {
event.preventDefault();
}
});
beforevertexdraw
Событие, предшествующее событию vertexdraw. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• parentModel - ссылка на родительскую, для добавляемой вершины, модель данных;
• vertexIndex - индекс добавляемой вершины;
• globalPixels - координаты добавляемой вершины в глобальных пиксельных координатах.
Имена методов, доступных через метод Event.callMethod:
• setGlobalPixels - метод позволяет скорректировать значения координат добавляемой вершины. В качестве аргумента принимает новые глобальные пиксельные координаты вершины в виде массива из двух чисел.
Если у данного события вызвать метод Event.preventDefault, то последующее событие vertexdraw будет отменено.
edgedrag
Перетаскивание промежуточной метки. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге.
edgedragend
Завершение перетаскивания промежуточной метки. Экземпляр класса Event.
edgedragstart
Начало перетаскивания промежуточной метки. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется.
vertexadd
Добавление новой вершины. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• parentModel - ссылка на родительскую, для добавленной вершины, модель данных;
• vertexIndex - индекс добавленной вершины;
• globalPixels - координаты добавленной вершины в глобальных пиксельных координатах.
vertexdrag
Перетаскивание вершины. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• pixelOffset - массив из двух чисел, описывающий пиксельный сдвиг на данном шаге.
vertexdragend
Завершение перетаскивания вершины. Экземпляр класса Event.
vertexdragstart
Начало перетаскивания вершины. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• domEvent - исходное DOM-событие (в виде объекта DomEvent), если оно имеется.
vertexdraw
Рисование новой вершины. Данное событие, как правило, предшествует событию добавления вершины и возникает в момент движения мышью при включенном режиме добавления новых вершин. На основе данных, передаваемых в данном событии, отображаются направляющие линии в режиме добавления новых вершин. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
• parentModel - ссылка на родительскую, для добавляемой вершины, модель данных;
• vertexIndex - индекс добавляемой вершины;
• globalPixels - координаты добавляемой вершины в глобальных пиксельных координатах.
Описание методов
getModel
{geometryEditor.model.RootPolygon} getModel()
Returns ссылку на модель данных редактора.
getView
{geometryEditor.view.MultiPath} getView()
Returns ссылку на объект отображения редактора.
startDrawing
{} startDrawing()
Включает режим добавления новых вершин в многоугольник.
stopDrawing
{} stopDrawing()
Отключает режим добавления новых вершин в многоугольник.