annotate src/djol/IdentificationTool.js @ 20:9718e8de0cb2

Слияние
author nickolay
date Fri, 06 Oct 2017 09:17:41 +0300
parents f0035923ff3e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
1 define([
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
2 "dijit/layout/ContentPane",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
3 "dojo/_base/declare",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
4 "dojo/Deferred",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
5 "dojo/dom-construct",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
6 "dojo/dom-class",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
7 "dojo/on",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
8 "dojo/promise/all",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
9 "dojo/when",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
10 "implab/safe",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
11 "ol",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
12 "./listen",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
13 "./IdentifyGroup",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
14 "./_ToolBase",
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
15 "./PopupContainer"
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
16 ],
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
17
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
18 function (
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
19 ContentPane,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
20 declare,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
21 Deffered,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
22 domConstruct,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
23 domClass,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
24 on,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
25 promiseAll,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
26 when,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
27 safe,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
28 ol,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
29 listen,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
30 IdentifyGroup,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
31 _ToolBase,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
32 PopupContainer) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
33 return declare([_ToolBase], {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
34 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
35 * массив обработчиков openLayers, которые необходимо удалить при
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
36 * деактивации
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
37 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
38 _handlers: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
39 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
40 * widget карты
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
41 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
42 _map: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
43 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
44 * openLayers map
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
45 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
46 _olMap: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
47 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
48 * Массив overlays содержащих popupContainers
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
49 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
50 _popupOverlays: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
51 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
52 * Массив popups контейнеров
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
53 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
54 _popupContainers: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
55 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
56 * Режим работы инструмента идентификации
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
57 *
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
58 * @value {String} "single"||"multiple"
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
59 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
60 mode: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
61 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
62 * Режимы
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
63 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
64 appManager: null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
65
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
66 constructor: function (options) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
67 safe.argumentNotNull(options, "options");
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
68 safe.argumentNotNull(options.map, "options.map");
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
69 safe.argumentNotNull(options.appManager, "options.appManager");
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
70
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
71 this._map = options.map;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
72 this._olMap = options.map.olMap;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
73 this._popupContainers = [];
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
74 this._popupOverlays = [];
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
75 this._handlers = [];
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
76
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
77 this.appManager = options.appManager;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
78 this.mode = options.mode || "single";
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
79 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
80 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
81 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
82 createPopupContent: function (groupWidgets) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
83 var contentWidget = new ContentPane();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
84 groupWidgets.forEach(function (groupWidget) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
85 if (groupWidget && !groupWidget.isEmpty()) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
86 contentWidget.addChild(groupWidget);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
87 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
88 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
89 return contentWidget;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
90 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
91
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
92 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
93 * Возвращает обещание на получение объекта с результатом идентификации
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
94 * по всем видимым режимам и информационным слоям @ options {Object} @ pixel
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
95 * {Object} - информация о точке идентификации @ coordinate {Array} -
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
96 * координаты точки иденификации
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
97 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
98 getGroupsFromVisibleModules: function (options) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
99 var promises = [];
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
100 var modules = this.appManager.getVisibleModules();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
101 modules.forEach(function (module) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
102 promises.push.apply(promises, module
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
103 .getIdentifyResult(options));
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
104 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
105
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
106 return promiseAll(promises).then(
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
107 function (results) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
108 console.log("promise all groups = ", results);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
109 return results;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
110 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
111 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
112
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
113 identifyPosition: function (position) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
114 var me = this, i;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
115 var popupContainer = null,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
116 popupOverlay = null;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
117 if (me.mode == "multiple") {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
118 // TODO: создать popupContainer и popupOverlay
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
119 popupContainer = new PopupContainer({
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
120 map: me._olMap
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
121 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
122 on(popupContainer, "close", function () {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
123 var index = me._popupContainers.indexOf(me);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
124 me._popupContainers.splice(index, 1);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
125
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
126 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
127 me._popupContainers.push(popupContainer);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
128
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
129 popupOverlay = new ol.Overlay({
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
130 element: popupContainer.domNode,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
131 autoPan: true,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
132 autoPanAnimation: {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
133 duration: 250
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
134 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
135 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
136 me._popupOverlays.push(popupOverlay);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
137 me._olMap.addOverlay(popupOverlay);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
138
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
139 } else {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
140 if (me._popupContainers.length > 0) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
141 // Берем первый
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
142 popupContainer = me._popupContainers[0];
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
143 // Все остальные удалить
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
144 if (me._popupContainers.length > 1) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
145 for (i = 1; i < me._popupContainers.length; i++) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
146 me._popupContainers[i].destroyRecursive();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
147 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
148 me._popupContainers.splice(
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
149 1,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
150 me._popupContainers.length - 1);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
151 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
152 } else {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
153 // Создаем новый
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
154 popupContainer = new PopupContainer({
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
155 map: me._olMap
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
156 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
157 on(popupContainer, "close", function () {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
158 var index = me._popupContainers.indexOf(me);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
159 me._popupContainers.splice(index, 1);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
160
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
161 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
162 me._popupContainers.push(popupContainer);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
163 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
164 if (me._popupOverlays.length > 0) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
165 // Берем первый и помещаем в него popup
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
166 popupOverlay = me._popupOverlays[0];
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
167 popupOverlay.setElement(popupContainer.domNode);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
168 // Все остальные удалить
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
169 if (me._popupOverlays.length > 1) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
170 for (i = 1; i < me._popupOverlays.length; i++) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
171 me._olMap.removeOverlay(me._popupOverlays[i]);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
172 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
173 me._popupOverlays.splice(
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
174 1,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
175 me._popupOverlays.length - 1)
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
176 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
177 } else {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
178 // Создаем новый и помещаем в него popup
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
179 popupOverlay = new ol.Overlay({
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
180 element: popupContainer.domNode,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
181 autoPan: true,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
182 autoPanAnimation: {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
183 duration: 250
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
184 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
185 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
186 me._popupOverlays.push(popupOverlay);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
187 me._olMap.addOverlay(popupOverlay);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
188 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
189 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
190
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
191 popupContainer.destroyDescendants();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
192
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
193 popupOverlay.setPosition(position.coordinate);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
194
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
195 popupContainer.showOverlay();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
196
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
197 when(me.getGroupsFromVisibleModules(position), function (data) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
198 var contentWidget = me.createPopupContent(data);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
199 popupContainer.show(contentWidget, "only");
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
200 popupContainer.hideOverlay();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
201 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
202 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
203 /**
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
204 * Скрыть все popups
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
205 */
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
206 hideAllPopups: function () {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
207 var me = this, i;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
208 for (i = 0; i < this._popupContainers.length; i++) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
209 this._popupContainers[i].destroyRecursive();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
210 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
211 this._popupContainers.splice(0, this._popupContainers.length);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
212
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
213 for (i = 0; i < this._popupOverlays.length; i++) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
214 this._olMap.removeOverlay(this._popupOverlays[i]);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
215 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
216 this._popupOverlays.splice(0, this._popupOverlays.length)
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
217 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
218
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
219 onActivating: function () {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
220 var me = this;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
221 // Обработчик для события "singleclick" по карте
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
222 var handler = listen(this._olMap, 'singleclick', function (evt) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
223 if (evt.originalEvent.ctrlKey) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
224 me.mode = "multiple";
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
225 } else {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
226 me.mode = "single";
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
227 }
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
228 me.identifyPosition({
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
229 pixel: evt.pixel,
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
230 coordinate: evt.coordinate
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
231 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
232 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
233 this._handlers.push(handler);
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
234 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
235
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
236 onDeactivating: function () {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
237 var me = this;
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
238 me._handlers.forEach(function (handler) {
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
239 if (handler.remove)
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
240 handler.remove();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
241
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
242 });
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
243 this.hideAllPopups();
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
244 },
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
245 })
f0035923ff3e добавлена библиотека для работы с openlayers 3+
cin
parents:
diff changeset
246 });