diff src/djol/VectorLayer.js @ 10:8705103f074f

Слияние
author cin
date Mon, 21 Aug 2017 18:03:00 +0300
parents f0035923ff3e
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/djol/VectorLayer.js	Mon Aug 21 18:03:00 2017 +0300
@@ -0,0 +1,68 @@
+define([
+    "implab/guard",
+    "implab/text/template-compile",
+    "dojo/_base/declare",
+    "dojo/_base/lang",
+    "dojo/Deferred",
+    "ol"],
+    function (guard, compile, declare, lang, Deferred, ol) {
+        return declare([ol.layer.Vector], {
+
+            map: null,
+
+            _olMap: null,
+
+            name: null,
+
+            displayName: null,
+
+            identifyResultTemplate: null,
+
+            identifyCompiledTemplate:null,
+
+            searchResultTemplate: null,
+
+            searchCompiledTemplate: null,
+
+            constructor: function () {
+                lang.mixin(this, arguments[0]);
+                this._olMap = this.map.olMap;
+                var identifyCompiledTemplate = null, searchCompiledTemplate = null;
+                if (this.identifyResultTemplate) {
+                    this.identifyCompiledTemplate = compile(this.identifyResultTemplate);
+                }
+                if (this.searchResultTemplate) {
+                    this.searchCompiledTemplate = compile(this.searchResultTemplate);
+                }
+            },
+
+            /** Возвращает массив строк, каждая строка - результат поиска  приведенный к шаблонному виду
+                @options {Object}
+                    @str {String} поисковая строка
+                    @bbox {Object} bound box, в рамках которого осуществлять поиск
+            */
+            getSearchResult: function (options) {
+                return null;
+            },
+
+            _getIdentifyResult: function (options) {
+                var me = this;
+                var features = [];
+                //TODO: добавить фильтр по layer равный ему самому
+                this._olMap.forEachFeatureAtPixel(options.pixel, function (feature, layer) {
+                    features.push({ feature: feature, layer: layer });
+                }, null, function (layer) {
+                    return layer == me;
+                });
+                console.log(features);
+                return features;
+            },
+            /** Возвращает массив строк, каждая строка - результат идентификации приведенный к шаблонному виду
+                @options {Object}
+                    @coordinates {Array} массив описывающий координаты точки идентификации                    
+            */
+            getIdentifyResult: function (coordinates) {
+                return guard(this, "_getIdentifyResult", [coordinates]);
+            }
+        });
+    })
\ No newline at end of file