8
|
1 define([
|
|
2 "implab/guard",
|
|
3 "implab/text/template-compile",
|
|
4 "dojo/_base/declare",
|
|
5 "dojo/_base/lang",
|
|
6 "dojo/Deferred",
|
|
7 "ol"],
|
|
8 function (guard, compile, declare, lang, Deferred, ol) {
|
|
9 return declare([ol.layer.Vector], {
|
|
10
|
|
11 map: null,
|
|
12
|
|
13 _olMap: null,
|
|
14
|
|
15 name: null,
|
|
16
|
|
17 displayName: null,
|
|
18
|
|
19 identifyResultTemplate: null,
|
|
20
|
|
21 identifyCompiledTemplate:null,
|
|
22
|
|
23 searchResultTemplate: null,
|
|
24
|
|
25 searchCompiledTemplate: null,
|
|
26
|
|
27 constructor: function () {
|
|
28 lang.mixin(this, arguments[0]);
|
|
29 this._olMap = this.map.olMap;
|
|
30 var identifyCompiledTemplate = null, searchCompiledTemplate = null;
|
|
31 if (this.identifyResultTemplate) {
|
|
32 this.identifyCompiledTemplate = compile(this.identifyResultTemplate);
|
|
33 }
|
|
34 if (this.searchResultTemplate) {
|
|
35 this.searchCompiledTemplate = compile(this.searchResultTemplate);
|
|
36 }
|
|
37 },
|
|
38
|
|
39 /** Возвращает массив строк, каждая строка - результат поиска приведенный к шаблонному виду
|
|
40 @options {Object}
|
|
41 @str {String} поисковая строка
|
|
42 @bbox {Object} bound box, в рамках которого осуществлять поиск
|
|
43 */
|
|
44 getSearchResult: function (options) {
|
|
45 return null;
|
|
46 },
|
|
47
|
|
48 _getIdentifyResult: function (options) {
|
|
49 var me = this;
|
|
50 var features = [];
|
|
51 //TODO: добавить фильтр по layer равный ему самому
|
|
52 this._olMap.forEachFeatureAtPixel(options.pixel, function (feature, layer) {
|
|
53 features.push({ feature: feature, layer: layer });
|
|
54 }, null, function (layer) {
|
|
55 return layer == me;
|
|
56 });
|
|
57 console.log(features);
|
|
58 return features;
|
|
59 },
|
|
60 /** Возвращает массив строк, каждая строка - результат идентификации приведенный к шаблонному виду
|
|
61 @options {Object}
|
|
62 @coordinates {Array} массив описывающий координаты точки идентификации
|
|
63 */
|
|
64 getIdentifyResult: function (coordinates) {
|
|
65 return guard(this, "_getIdentifyResult", [coordinates]);
|
|
66 }
|
|
67 });
|
|
68 }) |