@@ -83,6 +83,41 @@ angular.module('ui-leaflet').directive('layers', function (leafletLogger, $q, le
83
83
isLayersControlVisible = updateLayersControl ( map , mapId , isLayersControlVisible , newBaseLayers , layers . overlays , leafletLayers ) ;
84
84
return true ;
85
85
}
86
+ _updateBaseLayer ( newBaseLayers ) ;
87
+ } ) ;
88
+
89
+ leafletScope . $watch ( function ( ) {
90
+ var doRefresh = false ;
91
+ angular . forEach ( layers . baselayers , function ( l ) {
92
+ doRefresh = l . doRefresh || doRefresh ;
93
+ } ) ;
94
+ return doRefresh ;
95
+ } , function ( doRefresh ) {
96
+ if ( ! doRefresh ) return ;
97
+ _updateOverlayLayers ( layers . baselayers ) ;
98
+ } ) ;
99
+
100
+ // Watch for the overlay layers
101
+ leafletScope . $watchCollection ( 'layers.overlays' , function ( newOverlayLayers , oldOverlayLayers ) {
102
+ if ( angular . equals ( newOverlayLayers , oldOverlayLayers ) ) {
103
+ isLayersControlVisible = updateLayersControl ( map , mapId , isLayersControlVisible , layers . baselayers , newOverlayLayers , leafletLayers ) ;
104
+ return true ;
105
+ }
106
+ _updateOverlayLayers ( newOverlayLayers ) ;
107
+ } ) ;
108
+
109
+ leafletScope . $watch ( function ( ) {
110
+ var doRefresh = false ;
111
+ angular . forEach ( layers . overlays , function ( l ) {
112
+ doRefresh = l . doRefresh || doRefresh ;
113
+ } ) ;
114
+ return doRefresh ;
115
+ } , function ( doRefresh ) {
116
+ if ( ! doRefresh ) return ;
117
+ _updateOverlayLayers ( layers . overlays ) ;
118
+ } ) ;
119
+
120
+ function _updateBaseLayer ( newBaseLayers ) {
86
121
// Delete layers from the array
87
122
for ( var name in leafletLayers . baselayers ) {
88
123
if ( ! isDefined ( newBaseLayers [ name ] ) || newBaseLayers [ name ] . doRefresh ) {
@@ -133,30 +168,19 @@ angular.module('ui-leaflet').directive('layers', function (leafletLogger, $q, le
133
168
134
169
// Only show the layers switch selector control if we have more than one baselayer + overlay
135
170
isLayersControlVisible = updateLayersControl ( map , mapId , isLayersControlVisible , newBaseLayers , layers . overlays , leafletLayers ) ;
136
- } ) ;
137
-
138
- // Watch for the overlay layers
139
- leafletScope . $watchCollection ( 'layers.overlays' , function ( newOverlayLayers , oldOverlayLayers ) {
140
- if ( angular . equals ( newOverlayLayers , oldOverlayLayers ) ) {
141
- isLayersControlVisible = updateLayersControl ( map , mapId , isLayersControlVisible , layers . baselayers , newOverlayLayers , leafletLayers ) ;
142
- return true ;
143
- }
171
+ }
144
172
173
+ function _updateOverlayLayers ( newOverlayLayers ) {
145
174
// Delete layers from the array
146
175
for ( var name in leafletLayers . overlays ) {
147
176
if ( ! isDefined ( newOverlayLayers [ name ] ) || newOverlayLayers [ name ] . doRefresh ) {
148
177
// Remove from the map if it's on it
149
178
if ( map . hasLayer ( leafletLayers . overlays [ name ] ) ) {
150
179
// Safe remove when ArcGIS layers is loading.
151
- var options = isDefined ( newOverlayLayers [ name ] ) ?
152
- newOverlayLayers [ name ] . layerOptions :null ;
180
+ var options = isDefined ( newOverlayLayers [ name ] ) ? newOverlayLayers [ name ] . layerOptions : null ;
153
181
safeRemoveLayer ( map , leafletLayers . overlays [ name ] , options ) ;
154
182
}
155
183
// TODO: Depending on the layer type we will have to delete what's included on it
156
- var oldLayer = oldOverlayLayers [ name ] ;
157
- if ( isDefined ( oldLayer ) && oldLayer . hasOwnProperty ( "cleanupAction" ) ) {
158
- oldLayer . cleanupAction ( leafletLayers . overlays [ name ] ) ;
159
- }
160
184
delete leafletLayers . overlays [ name ] ;
161
185
162
186
if ( newOverlayLayers [ name ] && newOverlayLayers [ name ] . doRefresh ) {
@@ -219,7 +243,7 @@ angular.module('ui-leaflet').directive('layers', function (leafletLogger, $q, le
219
243
220
244
// Only add the layers switch selector control if we have more than one baselayer + overlay
221
245
isLayersControlVisible = updateLayersControl ( map , mapId , isLayersControlVisible , layers . baselayers , newOverlayLayers , leafletLayers ) ;
222
- } ) ;
246
+ }
223
247
} ) ;
224
248
}
225
249
} ;
0 commit comments