diff src/djol/IdentificationTool.js @ 34:27e8e9e38e07 default tip

Слияние
author nickolay
date Wed, 05 Jun 2019 20:44:15 +0300
parents 8af8e840dd49 1dc2fd263b90
children
line wrap: on
line diff
--- a/src/djol/IdentificationTool.js	Wed Jun 05 17:44:17 2019 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-define([
-        "dijit/layout/ContentPane",
-        "dojo/_base/declare",
-        "dojo/Deferred",
-        "dojo/dom-construct",
-        "dojo/dom-class",
-        "dojo/on",
-        "dojo/promise/all",
-        "dojo/when",
-        "implab/safe",
-        "ol",
-        "./listen",
-        "./IdentifyGroup",
-        "./_ToolBase",
-        "./PopupContainer"
-    ],
-
-    function (
-        ContentPane,
-        declare,
-        Deffered,
-        domConstruct,
-        domClass,
-        on,
-        promiseAll,
-        when,
-        safe,
-        ol,
-        listen,
-        IdentifyGroup,
-        _ToolBase,
-        PopupContainer) {
-        return declare([_ToolBase], {
-            /**
-             * массив обработчиков openLayers, которые необходимо удалить при
-             * деактивации
-             */
-            _handlers: null,
-            /**
-             * widget карты
-             */
-            _map: null,
-            /**
-             * openLayers map
-             */
-            _olMap: null,
-            /**
-             * Массив overlays содержащих popupContainers
-             */
-            _popupOverlays: null,
-            /**
-             * Массив popups контейнеров
-             */
-            _popupContainers: null,
-            /**
-             * Режим работы инструмента идентификации
-             * 
-             * @value {String} "single"||"multiple"
-             */
-            mode: null,
-            /**
-             * Режимы
-             */
-            appManager: null,
-
-            constructor: function (options) {
-                safe.argumentNotNull(options, "options");
-                safe.argumentNotNull(options.map, "options.map");
-                safe.argumentNotNull(options.appManager, "options.appManager");
-
-                this._map = options.map;
-                this._olMap = options.map.olMap;
-                this._popupContainers = [];
-                this._popupOverlays = [];
-                this._handlers = [];
-
-                this.appManager = options.appManager;
-                this.mode = options.mode || "single";
-            },
-            /** 
-             */
-            createPopupContent: function (groupWidgets) {
-                var contentWidget = new ContentPane();
-                groupWidgets.forEach(function (groupWidget) {
-                    if (groupWidget && !groupWidget.isEmpty()) {
-                        contentWidget.addChild(groupWidget);
-                    }
-                });
-                return contentWidget;
-            },
-
-            /**
-             * Возвращает обещание на получение объекта с результатом идентификации
-             * по всем видимым режимам и информационным слоям @ options {Object} @ pixel
-             * {Object} - информация о точке идентификации @ coordinate {Array} -
-             * координаты точки иденификации
-             */
-            getGroupsFromVisibleModules: function (options) {
-                var promises = [];
-                var modules = this.appManager.getVisibleModules();
-                modules.forEach(function (module) {
-                    promises.push.apply(promises, module
-                        .getIdentifyResult(options));
-                });
-
-                return promiseAll(promises).then(
-                    function (results) {
-                        console.log("promise all groups = ", results);
-                        return results;
-                    });
-            },
-
-            identifyPosition: function (position) {
-                var me = this, i;
-                var popupContainer = null,
-                    popupOverlay = null;
-                if (me.mode == "multiple") {
-                    // TODO: создать popupContainer и popupOverlay
-                    popupContainer = new PopupContainer({
-                        map: me._olMap
-                    });
-                    on(popupContainer, "close", function () {
-                        var index = me._popupContainers.indexOf(me);
-                        me._popupContainers.splice(index, 1);
-
-                    });
-                    me._popupContainers.push(popupContainer);
-
-                    popupOverlay = new ol.Overlay({
-                        element: popupContainer.domNode,
-                        autoPan: true,
-                        autoPanAnimation: {
-                            duration: 250
-                        }
-                    });
-                    me._popupOverlays.push(popupOverlay);
-                    me._olMap.addOverlay(popupOverlay);
-
-                } else {
-                    if (me._popupContainers.length > 0) {
-                        // Берем первый
-                        popupContainer = me._popupContainers[0];
-                        // Все остальные удалить
-                        if (me._popupContainers.length > 1) {
-                            for (i = 1; i < me._popupContainers.length; i++) {
-                                me._popupContainers[i].destroyRecursive();
-                            }
-                            me._popupContainers.splice(
-                                1,
-                                me._popupContainers.length - 1);
-                        }
-                    } else {
-                        // Создаем новый
-                        popupContainer = new PopupContainer({
-                            map: me._olMap
-                        });
-                        on(popupContainer, "close", function () {
-                            var index = me._popupContainers.indexOf(me);
-                            me._popupContainers.splice(index, 1);
-
-                        });
-                        me._popupContainers.push(popupContainer);
-                    }
-                    if (me._popupOverlays.length > 0) {
-                        // Берем первый и помещаем в него popup
-                        popupOverlay = me._popupOverlays[0];
-                        popupOverlay.setElement(popupContainer.domNode);
-                        // Все остальные удалить
-                        if (me._popupOverlays.length > 1) {
-                            for (i = 1; i < me._popupOverlays.length; i++) {
-                                me._olMap.removeOverlay(me._popupOverlays[i]);
-                            }
-                            me._popupOverlays.splice(
-                                1,
-                                me._popupOverlays.length - 1)
-                        }
-                    } else {
-                        // Создаем новый и помещаем в него popup
-                        popupOverlay = new ol.Overlay({
-                            element: popupContainer.domNode,
-                            autoPan: true,
-                            autoPanAnimation: {
-                                duration: 250
-                            }
-                        });
-                        me._popupOverlays.push(popupOverlay);
-                        me._olMap.addOverlay(popupOverlay);
-                    }
-                }
-
-                popupContainer.destroyDescendants();
-
-                popupOverlay.setPosition(position.coordinate);
-
-                popupContainer.showOverlay();
-
-                when(me.getGroupsFromVisibleModules(position), function (data) {
-                    var contentWidget = me.createPopupContent(data);
-                    popupContainer.show(contentWidget, "only");
-                    popupContainer.hideOverlay();
-                });
-            },
-            /**
-             * Скрыть все popups
-             */
-            hideAllPopups: function () {
-                var me = this, i;
-                for (i = 0; i < this._popupContainers.length; i++) {
-                    this._popupContainers[i].destroyRecursive();
-                }
-                this._popupContainers.splice(0, this._popupContainers.length);
-
-                for (i = 0; i < this._popupOverlays.length; i++) {
-                    this._olMap.removeOverlay(this._popupOverlays[i]);
-                }
-                this._popupOverlays.splice(0, this._popupOverlays.length)
-            },
-
-            onActivating: function () {
-                var me = this;
-                // Обработчик для события "singleclick" по карте
-                var handler = listen(this._olMap, 'singleclick', function (evt) {
-                    if (evt.originalEvent.ctrlKey) {
-                        me.mode = "multiple";
-                    } else {
-                        me.mode = "single";
-                    }
-                    me.identifyPosition({
-                        pixel: evt.pixel,
-                        coordinate: evt.coordinate
-                    });
-                });
-                this._handlers.push(handler);
-            },
-
-            onDeactivating: function () {
-                var me = this;
-                me._handlers.forEach(function (handler) {
-                    if (handler.remove)
-                        handler.remove();
-
-                });
-                this.hideAllPopups();
-            },
-        })
-    });
\ No newline at end of file