@@ -64,28 +64,21 @@ var App = (function ($, publ) {
64
64
contents . layers . forEach ( function ( layer , idx ) {
65
65
var s = layer . type . split ( "." ) ;
66
66
var l = new ol . layer . Tile ( {
67
- index : idx ,
67
+ lid : layer . id ,
68
68
title : layer . name ,
69
69
baseLayer : true ,
70
70
visible : false ,
71
71
source : new ol [ s [ 1 ] ] [ s [ 2 ] ] ( layer . options )
72
72
} ) ;
73
73
l . on ( "change:visible" , function ( e ) {
74
74
if ( e . target . getVisible ( ) ) {
75
- document . cookie = "_redmine_gtt_basemap=" + e . target . get ( "index" ) + ";path=/" ;
75
+ document . cookie = "_redmine_gtt_basemap=" +
76
+ e . target . get ( "lid" ) + ";path=/" ;
76
77
}
77
78
} ) ;
78
79
layerArr . push ( l ) ;
79
80
} ) ;
80
-
81
- // Decide which baselayer to show
82
- var idx = getCookie ( "_redmine_gtt_basemap" ) || 0 ;
83
- if ( layerArr . length > idx ) {
84
- layerArr [ idx ] . setVisible ( true ) ;
85
- }
86
- else {
87
- layerArr [ 0 ] . setVisible ( true ) ;
88
- }
81
+ publ . setBasemap ( layerArr ) ;
89
82
90
83
// Layer for vector features
91
84
vector = new ol . layer . Vector ( {
@@ -202,6 +195,42 @@ var App = (function ($, publ) {
202
195
map . addControl ( new ol . control . LayerPopup ( ) ) ;
203
196
} ;
204
197
198
+ /**
199
+ * Decide which baselayer to show
200
+ */
201
+ publ . setBasemap = function ( layers ) {
202
+
203
+ if ( layers . length === 0 ) {
204
+ console . error ( "There is no baselayer availaable!" ) ;
205
+ return ;
206
+ }
207
+
208
+ var index = 0 ;
209
+ var cookie = parseInt (
210
+ getCookie ( "_redmine_gtt_basemap" )
211
+ ) ;
212
+
213
+ if ( cookie ) {
214
+ var lid = 0 ;
215
+ // Check if layer ID exists in available layers
216
+ layers . forEach ( function ( layer ) {
217
+ if ( cookie === layer . get ( "lid" ) ) {
218
+ lid = cookie ;
219
+ }
220
+ } ) ;
221
+
222
+ // Set selected layer visible
223
+ layers . forEach ( function ( layer , idx ) {
224
+ if ( lid === layer . get ( "lid" ) ) {
225
+ index = idx ;
226
+ }
227
+ } ) ;
228
+ }
229
+
230
+ // Set layer visible
231
+ layers [ index ] . setVisible ( true ) ;
232
+ } ;
233
+
205
234
publ . getColor = function ( feature ) {
206
235
// console.log(feature.get("tracker_id"));
207
236
color = "#f80" ;
0 commit comments