@@ -61,18 +61,31 @@ var App = (function ($, publ) {
61
61
// through the template causes encoding problems
62
62
publ . updateForm ( features ) ;
63
63
64
- contents . layers . forEach ( function ( layer ) {
64
+ contents . layers . forEach ( function ( layer , idx ) {
65
65
var s = layer . type . split ( "." ) ;
66
- layerArr . push (
67
- new ol . layer . Tile ( {
68
- title : layer . name ,
69
- baseLayer : true ,
70
- visible : false ,
71
- source : new ol [ s [ 1 ] ] [ s [ 2 ] ] ( layer . options )
72
- } )
73
- ) ;
66
+ var l = new ol . layer . Tile ( {
67
+ index : idx ,
68
+ title : layer . name ,
69
+ baseLayer : true ,
70
+ visible : false ,
71
+ source : new ol [ s [ 1 ] ] [ s [ 2 ] ] ( layer . options )
72
+ } ) ;
73
+ l . on ( "change:visible" , function ( e ) {
74
+ if ( e . target . getVisible ( ) ) {
75
+ document . cookie = "_redmine_gtt_basemap=" + e . target . get ( "index" ) + ";path=/" ;
76
+ }
77
+ } ) ;
78
+ layerArr . push ( l ) ;
74
79
} ) ;
75
- layerArr [ 0 ] . setVisible ( true ) ;
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
+ }
76
89
77
90
// Layer for vector features
78
91
vector = new ol . layer . Vector ( {
@@ -186,7 +199,7 @@ var App = (function ($, publ) {
186
199
} ) ;
187
200
188
201
// Add LayerSwitcher Image Toolbar
189
- map . addControl ( new ol . control . LayerPopup ( ) ) ;
202
+ map . addControl ( new ol . control . LayerPopup ( ) ) ;
190
203
} ;
191
204
192
205
publ . getColor = function ( feature ) {
@@ -584,6 +597,21 @@ var App = (function ($, publ) {
584
597
$ ( "#geom" ) . val ( JSON . stringify ( geojson . features [ 0 ] ) ) ;
585
598
} ;
586
599
600
+ function getCookie ( cname ) {
601
+ var name = cname + "=" ;
602
+ var ca = document . cookie . split ( ';' ) ;
603
+ for ( var i = 0 ; i < ca . length ; i ++ ) {
604
+ var c = ca [ i ] ;
605
+ while ( c . charAt ( 0 ) == ' ' ) {
606
+ c = c . substring ( 1 ) ;
607
+ }
608
+ if ( c . indexOf ( name ) == 0 ) {
609
+ return c . substring ( name . length , c . length ) ;
610
+ }
611
+ }
612
+ return "" ;
613
+ }
614
+
587
615
/**
588
616
* Return public objects
589
617
*/
0 commit comments