Документация-вспомогательные

Методы

WFS – это протокол для работы с векторными слоями геосервера.

GetDescribe — метод, который предоставляет данные о структуре объекта слоя (названия и типы атрибутов, имя геометрии, тип объекта).

DescribeFeature GetDescribe(Layer layer);
public List GetFeature(Model.Layer layer,
int maxFeatures = 0,
string featureId = null,
double[] bbox = null,
string srs = null,
string sortBy = null,
string[] propertyName = null)
string[] Layer layer экземпляр слоя

GetCapabilities — метод, который возвращает список всех возможностей текущего геосервера данного слоя (список слоев, список поддерживаемых функций и логических операций).

GetCapabilitiesType GetCapabilities(int layserId);
int layserId идентификатор слоя

GetFeature — метод, который возвращает список объектов слоя.

 public List GetFeature(Model.Layer layer,
 int maxFeatures = 0,
 string featureId = null,
 double[] bbox = null,
 string srs = null,
 string sortBy = null,
 string[] propertyName = null)
string[] propertyName имена полей в выборке
Layer layer экземпляр слоя
int maxFeatures количество объектов в выборке
string featureId координаты описывающего прямоугольника
string srs идентификатор srs, например srs = «4326»
string sortBy имя поля для сортировки

WFS-T — это протокол редактирования объектов слоя геосервера через post-запросы.

Insert — метод для добавления нового объекта.

InsertObject(Feature feature)
Feature feature объект слоя; feature.Layer не должен быть null

Update — метод для обновления объекта слоя.

UpdateObject(Feature feature)
Feature feature объект слоя; feature.Layer не должен быть null

Delete — метод для удаления объекта.

 DeleteObject(Feature feature)
Feature feature объект слоя; feature.Layer не должен быть null

Transaction — транзакция; в данном случае это список операций в формате XML/GML.
Имеется класс Transaction, который может содержать от 0 до n элементов транзакции (с операциями обновления, удаления, добавления). Все операции, представленные выше, работают через класс Transaction с одним элементом внутри.

Transaction(Layer layer)  конструктор
Transaction.Elements.Add(ITransactionElement el)  заполнение транзакции
Transaction.Execute() выполнение транзакции

REST API помимо авторизации также поддерживает несколько методов, расширяющих интерфейс геосервера.

GetLayers — метод для возвращения списка слоев.

List< WfsLib.Model.Layer> GetLayers()

GetLayer — метод для возвращения экземпляра класса Layer.

Model.Layer GetLayer(int id))

GetAttributes — метод для получения атрибутов слоя и их сохранения в свойстве Layer.Attributes.

 List GetLayerAttributes(Model.Layer layer)

Схема классов

Схема классов

На рисунках ниже приведены схемы классов Layer, Geometry, REST, LayerAttribute, Transaction, ITransactionElements, Feature, WFSClient:

1-4_копия

Что такое token

Token – это ключ сессии, уникальный идентификатор, который передается в каждом запросе REST; имеет тип string.

Авторизация

Авторизация

Авторизация

Для авторизации в системе REST необходимо передать имя пользователя, пароль и адрес сервера REST в конструктор WfsClient:

WFSClient (Uri address, string username, string password, int defaultSrs) 

В конструкторе будет вызван метод REST.GetToken(), результат которого будет сохранен в объекте WfsClient:

WFSClient (Uri address, string username, string password, int defaultSrs, string token)

Также можно самостоятельно пройти авторизацию и передать вместе с данными пользователя полученный токен. В этом случае данные пользователя будут нужны для обновления просроченного токена в ходе работы.

Что такое REST

REST – это прослойка между интерфейсом геосервера и программным интерфейсом. Основные задачи REST – это авторизация пользователя, разграничение прав и безопасность. Также REST упрощает работу с некоторыми функциями геосервера и объединяет несколько геосерверов под одним общим интерфейсом.

mapSurfer — javascript-интерфейс — gp

Пример использования события

GP.on(
	"widgetCreate",
	function(data){		
		console.log(data.widget);
	},
	cotext
)

    // событие
    // функция, которая будет выполнена при срабатывании события
	// пример использования параметров
    // контекст выполнения фнкции

События вебсокетов

Событие Описание
«webSocket:created» Создался вебсокет
«webSocket:destroy» Вебсокет прекратил свою работу

События виджета затемнения экрана

Класс виджета GP.Widget.AjaxLoader

Событие Описание
«loader:show» Затемнился экран
«loader:close» Экран стал прежним, пользователь может продолжать работу

Общие события виджетов

Событие Описание параметры (относительно «data»)
«widgetCreate» Произошло создание виджета widget — созданный виджет
«widgetDestroy» Произошло удаление виджета widget — удаленный виджет

Общие события элементов управления

Событие Описание параметры (относительно «data»)
«controlCreate» Произошло создание элемента управления control — созданный контрол
«control:activate» Произошла активация контрола control — созданный контрол

События левой панели

Класс виджета GP.Widget.LeftPanel

Событие Описание параметры (относительно «data»)
«leftPanel:show» Показана левая панель leftPanel — виджет левой панели
«leftPanel:reload» Перезапещена левая панель leftPanel — виджет левой панели

События связанные с картой.

Событие Описание параметры (относительно «data»)
«offLayer» Выключен слой layer — слой карты
«turnLayer» Включен слой layer — слой карты

mapSurfer — javascript-интерфейс — features

Класс WFS features (объектов на карте).

События

Событие Описание
«eisLoaded» Медиа информация слоя загружена.

Класс WMS features (объектов на карте).

События

Событие Описание
«eisLoaded» Медиа информация слоя загружена.

mapSurfer — javascript-интерфейс — кнопки управления

Виджет кнопки управления. От этого класса наследуются классы всех кнопок управления.

Объект с опциями, который можно передавать при создании экземпляра класса:

options: {
	first - boolean, элемент должен быть первым в панели
	last - boolean, элемент должен быть последним панели
	bindClick - boolean, слушать ли событие клика по кнопке сразу при создании виджета
}

Объект с опциями, который необходимо определить внутри виджета, который наследуется от GP.Widget.DirectButton.

mainOptions:{
	buttonId: "",
	title: "",
	image: "",
	bindClick: true    - boolean, слушать ли событие клика по кнопке сразу при создании виджета. Значение по умолчанию.
}

Методы

Метод Описание
_activateControl() Активирование контрола.
_disableControl() Деактивирование контрола.

Виджет кнопки «Измерить расстояние».

Объект mainOptions, описанный в виджете

options: {
mainOptions: {
	popups: true,
	buttonId: "distanceButton",
	title: "Измерить расстояние",
	image: GP.imagesPath + "/icons/distance.png",
	bindClick: true
}

Методы

Метод Описание
getLine() Возвращает линию маршрута.

События

Событие Описание
«control:distance:enable» Виджет измерение дистанции включен.
«control:distance:disable» Виджет измерение дистанции выключен.

Виджет кнопки «Список объектов области».

Объект mainOptions, описанный в виджете

mainOptions: {
	buttonId: "featureBBoxButton",
	title: "Список объектов области",
	image: GP.imagesPath + "/icons/bbox-search.png",
	bindClick: true
}

Методы

Метод Описание
requestData() Возвращает список объектов области.

События

Событие Описание
«control:featureBBox:enable» Виджет «Список объектов области» включен.

Виджет кнопки «Фиксированная ссылка».

Объект mainOptions, описанный в виджете

mainOptions: {
	popups: true,
	buttonId: "fixedLinkButton",
	title: "Фиксированная ссылка",
	image: GP.imagesPath + "/icons/fixedLink.png",
	bindClick: true
}

Виджет кнопки «Печать карты».

Объект mainOptions, описанный в виджете

mainOptions: {
	buttonId: "print",
	title: "Печать карты",
	image: GP.imagesPath + "/icons/print.png",
	bindClick: true
}

Виджет кнопки «Отчеты».

Объект mainOptions, описанный в виджете

mainOptions: {
        buttonId: "reportsButton",
        title: "Отчеты",
        image: GP.imagesPath + "/icons/report.png",
        bindClick: false
}

Методы

Метод Описание
destroy() Отключает контрол.

Виджет контрола управления приближения карты.

Методы

Метод Описание
draw() Отрисовка контрола.

События

Событие Описание
«handClick» Событие срабатывает при нажатии на иконку руки.

Пример класса кнопки управления для модуля.

В данном классе описан контролл, который включает/выключает определенный слой

GP.Module.Widget.MyControlButton = GP.Widget.DirectButton.extend({
    mainOptions:{
        buttonId: "MyControl",                    
        title: "Кнопка управления",                              
        image: "/public/modules/myModule/images/controlIcon.png", 
        bindClick: true   
                        
    },
   _createWidget: function(){	
        GP.Widget.DirectButton.prototype._createWidget.call(this);	
        this._layer = this.options.layer; 
        this._active = false;
   },

   _activateControl: function(){ 
		if(!this._layer)
			return;
		GP.Widget.DirectButton.prototype._activateControl.call(this);	
        if (this._active){		
            this._disableControl();		
        } else {
            /* активация действия кнопки  */
            this._active = true;
            GP.mainMap.map.addLayer(this._layer);            
        }
    },

    _disableControl: function(){     
        GP.Widget.DirectButton.prototype._disableControl.call(this);
        /* деактивация действия кнопки */
        this._active = false;
        if (this._layer != null) {
            GP.mainMap.map.removeLayer(this._layer);
        }       
    },

    destroy: function() {
        this._disableControl(); 
		this._element.remove();
    }
});

		
// наследование от GP.Widget.DirectButton

// id кнопки
// заголовок кнопки
// картинка кнопки
// if false, то функция _activateControl
// не будет автоматически выполняться при клике на кнопку.

// конструктор
// вызов конструктора родителя




//активация контрола


// вызов активации родителя
// если контрол активен
// выключить







// деактивация  









// выключение контрола
// удаление контрола

Добавление контрола.

 GP.widgets.actions.add("myControlButton", new GP.Module.Widget.MyControlButton()); 
		

Удаление контрола.

if(typeof GP.widgets.actions != 'undefined' && GP.widgets.actions.containsKey("myControlButton")) {
	GP.widgets.actions.get("myControlButton").destroy();	
	GP.widgets.actions.removeByKey("myControlButton");		
}
		

// очистка контрола
// удаление

mapSurfer — javascript-интерфейс — widgetsJReports

Виджет кнопки создания отчета.

Методы

Метод Описание
display(bool)
bool:
	true: показать кнопку.
	false: скрыть кнопку.

События

Событие Описание Параметры
«buttonClick» Перерисовалась правая панель. button — объект кнопкиtype — тип выбранного отчета.

Виджет списка готовых отчетов.

Методы

Метод Описание
close() Прекратить ожидание готовых отчетов.
update(reportsArray) Обновить список отчетов. reportsArray — массив отчетов

События

Событие Описание
«reportList:update» Обновился список отчетов.
«reportList:allCreated» Все отчеты созданы.

mapSurfer — javascript-интерфейс — контроллеры

Класс, от которого наследуются все контроллеры.

Пример написания контроллера

GP.Controller.MyController = GP.Controller.extend({
	initialize: function() {
		GP.Controller.prototype.initialize.call(this,{});
		...
	}

});
		
// наследование от GP.Controller
// конструктор
// вызов конструктора родителя, обязательно для контроллеров
// действия контроллера

 

Класс контроллера приложения. Объект в системе GP.controllers.application.

События

Событие Описание Параметры
application:startLoad Начало загрузки приложения.
application:baseDataLoaded Загрузились основные данные приложения.
loadUser Получены данные пользователя.
loadUser Получены данные пользователя.
application:layersLoaded Загружены слои. groups — группы слоев:data.groups,
mapExtent
application:endCreate Загрузка приложения завершена.
application:startReload Начало перезагрузки приложения.
reloadUser Перезагрузка данных пользователя.
application:turnDefaultLayer Включение слоя, указанного в ссылке. layerId layerId — id слоя
application:defaultLayerTurned Включен слой, указанный в ссылке.