@@ -92,6 +92,15 @@ var ControlStore = function () {
92
92
}
93
93
this . _map . addControl ( control ) ;
94
94
}
95
+ } , {
96
+ key : "get" ,
97
+ value : function get ( id ) {
98
+ var control = null ;
99
+ if ( this . _controlsById [ id ] ) {
100
+ control = this . _controlsById [ id ] ;
101
+ }
102
+ return control ;
103
+ }
95
104
} , {
96
105
key : "remove" ,
97
106
value : function remove ( id ) {
@@ -1753,11 +1762,17 @@ methods.removeControl = function (layerId) {
1753
1762
this . controls . remove ( layerId ) ;
1754
1763
} ;
1755
1764
1765
+ methods . getControl = function ( layerId ) {
1766
+ this . controls . get ( layerId ) ;
1767
+ } ;
1768
+
1756
1769
methods . clearControls = function ( ) {
1757
1770
this . controls . clear ( ) ;
1758
1771
} ;
1759
1772
1760
1773
methods . addLegend = function ( options ) {
1774
+ var _this5 = this ;
1775
+
1761
1776
var legend = _leaflet2 . default . control ( { position : options . position } ) ;
1762
1777
var gradSpan = void 0 ;
1763
1778
@@ -1856,35 +1871,66 @@ methods.addLegend = function (options) {
1856
1871
return div ;
1857
1872
} ;
1858
1873
1874
+ if ( options . group ) {
1875
+ ( function ( ) {
1876
+ // Auto generate a layerID if not provided
1877
+ if ( ! options . layerId ) {
1878
+ options . layerId = _leaflet2 . default . stamp ( legend ) ;
1879
+ }
1880
+
1881
+ var map = _this5 ;
1882
+ map . on ( "overlayadd" , function ( e ) {
1883
+ if ( e . name === options . group ) {
1884
+ map . controls . add ( legend , options . layerId ) ;
1885
+ }
1886
+ } ) ;
1887
+ map . on ( "overlayremove" , function ( e ) {
1888
+ if ( e . name === options . group ) {
1889
+ map . controls . remove ( options . layerId ) ;
1890
+ }
1891
+ } ) ;
1892
+ map . on ( "groupadd" , function ( e ) {
1893
+ if ( e . name === options . group ) {
1894
+ map . controls . add ( legend , options . layerId ) ;
1895
+ }
1896
+ } ) ;
1897
+ map . on ( "groupremove" , function ( e ) {
1898
+ if ( e . name === options . group ) {
1899
+ map . controls . remove ( options . layerId ) ;
1900
+ }
1901
+ } ) ;
1902
+ } ) ( ) ;
1903
+ }
1904
+
1859
1905
this . controls . add ( legend , options . layerId ) ;
1860
1906
} ;
1861
1907
1862
1908
methods . addLayersControl = function ( baseGroups , overlayGroups , options ) {
1863
- var _this5 = this ;
1909
+ var _this6 = this ;
1864
1910
1865
1911
// Only allow one layers control at a time
1866
1912
methods . removeLayersControl . call ( this ) ;
1867
1913
1868
1914
var firstLayer = true ;
1869
1915
var base = { } ;
1870
1916
_jquery2 . default . each ( ( 0 , _util . asArray ) ( baseGroups ) , function ( i , g ) {
1871
- var layer = _this5 . layerManager . getLayerGroup ( g , true ) ;
1917
+ var layer = _this6 . layerManager . getLayerGroup ( g , true ) ;
1872
1918
if ( layer ) {
1873
1919
base [ g ] = layer ;
1874
1920
1875
1921
// Check if >1 base layers are visible; if so, hide all but the first one
1876
- if ( _this5 . hasLayer ( layer ) ) {
1922
+ if ( _this6 . hasLayer ( layer ) ) {
1877
1923
if ( firstLayer ) {
1878
1924
firstLayer = false ;
1879
1925
} else {
1880
- _this5 . removeLayer ( layer ) ;
1926
+ _this6 . removeLayer ( layer ) ;
1881
1927
}
1882
1928
}
1883
1929
}
1884
1930
} ) ;
1885
1931
var overlay = { } ;
1886
1932
_jquery2 . default . each ( ( 0 , _util . asArray ) ( overlayGroups ) , function ( i , g ) {
1887
- var layer = _this5 . layerManager . getLayerGroup ( g , true ) ;
1933
+ var layer = _this6 . layerManager . getLayerGroup ( g , true ) ;
1888
1934
if ( layer ) {
1889
1935
overlay [ g ] = layer ;
1890
1936
}
@@ -1918,23 +1964,23 @@ methods.removeScaleBar = function () {
1918
1964
} ;
1919
1965
1920
1966
methods . hideGroup = function ( group ) {
1921
- var _this6 = this ;
1967
+ var _this7 = this ;
1922
1968
1923
1969
_jquery2 . default . each ( ( 0 , _util . asArray ) ( group ) , function ( i , g ) {
1924
- var layer = _this6 . layerManager . getLayerGroup ( g , true ) ;
1970
+ var layer = _this7 . layerManager . getLayerGroup ( g , true ) ;
1925
1971
if ( layer ) {
1926
- _this6 . removeLayer ( layer ) ;
1972
+ _this7 . removeLayer ( layer ) ;
1927
1973
}
1928
1974
} ) ;
1929
1975
} ;
1930
1976
1931
1977
methods . showGroup = function ( group ) {
1932
- var _this7 = this ;
1978
+ var _this8 = this ;
1933
1979
1934
1980
_jquery2 . default . each ( ( 0 , _util . asArray ) ( group ) , function ( i , g ) {
1935
- var layer = _this7 . layerManager . getLayerGroup ( g , true ) ;
1981
+ var layer = _this8 . layerManager . getLayerGroup ( g , true ) ;
1936
1982
if ( layer ) {
1937
- _this7 . addLayer ( layer ) ;
1983
+ _this8 . addLayer ( layer ) ;
1938
1984
}
1939
1985
} ) ;
1940
1986
} ;
@@ -1945,9 +1991,15 @@ function setupShowHideGroupsOnZoom(map) {
1945
1991
}
1946
1992
map . leafletr . _hasInitializedShowHideGroups = true ;
1947
1993
1948
- function setVisibility ( layer , visible ) {
1994
+ function setVisibility ( layer , visible , group ) {
1949
1995
if ( visible !== map . hasLayer ( layer ) ) {
1950
- if ( visible ) map . addLayer ( layer ) ; else map . removeLayer ( layer ) ;
1996
+ if ( visible ) {
1997
+ map . addLayer ( layer ) ;
1998
+ map . fire ( "groupadd" , { "name" : group , "layer" : layer } ) ;
1999
+ } else {
2000
+ map . removeLayer ( layer ) ;
2001
+ map . fire ( "groupremove" , { "name" : group , "layer" : layer } ) ;
2002
+ }
1951
2003
}
1952
2004
}
1953
2005
@@ -1958,7 +2010,7 @@ function setupShowHideGroupsOnZoom(map) {
1958
2010
map . layerManager . getAllGroupNames ( ) . forEach ( function ( group ) {
1959
2011
var layer = map . layerManager . getLayerGroup ( group , false ) ;
1960
2012
if ( layer && typeof layer . zoomLevels !== "undefined" ) {
1961
- setVisibility ( layer , layer . zoomLevels === true || layer . zoomLevels . indexOf ( zoom ) >= 0 ) ;
2013
+ setVisibility ( layer , layer . zoomLevels === true || layer . zoomLevels . indexOf ( zoom ) >= 0 , group ) ;
1962
2014
}
1963
2015
} ) ;
1964
2016
}
@@ -1968,10 +2020,10 @@ function setupShowHideGroupsOnZoom(map) {
1968
2020
}
1969
2021
1970
2022
methods . setGroupOptions = function ( group , options ) {
1971
- var _this8 = this ;
2023
+ var _this9 = this ;
1972
2024
1973
2025
_jquery2 . default . each ( ( 0 , _util . asArray ) ( group ) , function ( i , g ) {
1974
- var layer = _this8 . layerManager . getLayerGroup ( g , true ) ;
2026
+ var layer = _this9 . layerManager . getLayerGroup ( g , true ) ;
1975
2027
// This slightly tortured check is because 0 is a valid value for zoomLevels
1976
2028
if ( typeof options . zoomLevels !== "undefined" && options . zoomLevels !== null ) {
1977
2029
layer . zoomLevels = ( 0 , _util . asArray ) ( options . zoomLevels ) ;
@@ -2107,7 +2159,7 @@ methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, g
2107
2159
canvasTiles . drawTile = function ( canvas , tilePoint , zoom ) {
2108
2160
getImageData ( function ( imgData , w , h , mipmapper ) {
2109
2161
try {
2110
- var _ret7 = function ( ) {
2162
+ var _ret8 = function ( ) {
2111
2163
// The Context2D we'll being drawing onto. It's always 256x256.
2112
2164
var ctx = canvas . getContext ( "2d" ) ;
2113
2165
@@ -2231,7 +2283,7 @@ methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, g
2231
2283
}
2232
2284
} ( ) ;
2233
2285
2234
- if ( ( typeof _ret7 === "undefined" ? "undefined" : _typeof ( _ret7 ) ) === "object" ) return _ret7 . v ;
2286
+ if ( ( typeof _ret8 === "undefined" ? "undefined" : _typeof ( _ret8 ) ) === "object" ) return _ret8 . v ;
2235
2287
} finally {
2236
2288
canvasTiles . tileDrawn ( canvas ) ;
2237
2289
}
@@ -2265,7 +2317,7 @@ methods.removeMeasure = function () {
2265
2317
} ;
2266
2318
2267
2319
methods . addSelect = function ( ctGroup ) {
2268
- var _this9 = this ;
2320
+ var _this10 = this ;
2269
2321
2270
2322
methods . removeSelect . call ( this ) ;
2271
2323
@@ -2276,42 +2328,42 @@ methods.addSelect = function (ctGroup) {
2276
2328
title : "Make a selection" ,
2277
2329
onClick : function onClick ( btn , map ) {
2278
2330
btn . state ( "select-active" ) ;
2279
- _this9 . _locationFilter = new _leaflet2 . default . LocationFilter2 ( ) ;
2331
+ _this10 . _locationFilter = new _leaflet2 . default . LocationFilter2 ( ) ;
2280
2332
2281
2333
if ( ctGroup ) {
2282
2334
( function ( ) {
2283
2335
var selectionHandle = new global . crosstalk . SelectionHandle ( ctGroup ) ;
2284
2336
selectionHandle . on ( "change" , function ( e ) {
2285
2337
if ( e . sender !== selectionHandle ) {
2286
- if ( _this9 . _locationFilter ) {
2287
- _this9 . _locationFilter . disable ( ) ;
2338
+ if ( _this10 . _locationFilter ) {
2339
+ _this10 . _locationFilter . disable ( ) ;
2288
2340
btn . state ( "select-inactive" ) ;
2289
2341
}
2290
2342
}
2291
2343
} ) ;
2292
2344
var handler = function handler ( e ) {
2293
- _this9 . layerManager . brush ( _this9 . _locationFilter . getBounds ( ) , { sender : selectionHandle } ) ;
2345
+ _this10 . layerManager . brush ( _this10 . _locationFilter . getBounds ( ) , { sender : selectionHandle } ) ;
2294
2346
} ;
2295
- _this9 . _locationFilter . on ( "enabled" , handler ) ;
2296
- _this9 . _locationFilter . on ( "change" , handler ) ;
2297
- _this9 . _locationFilter . on ( "disabled" , function ( ) {
2347
+ _this10 . _locationFilter . on ( "enabled" , handler ) ;
2348
+ _this10 . _locationFilter . on ( "change" , handler ) ;
2349
+ _this10 . _locationFilter . on ( "disabled" , function ( ) {
2298
2350
selectionHandle . close ( ) ;
2299
- _this9 . _locationFilter = null ;
2351
+ _this10 . _locationFilter = null ;
2300
2352
} ) ;
2301
2353
} ) ( ) ;
2302
2354
}
2303
2355
2304
- _this9 . _locationFilter . addTo ( map ) ;
2356
+ _this10 . _locationFilter . addTo ( map ) ;
2305
2357
}
2306
2358
} , {
2307
2359
stateName : "select-active" ,
2308
2360
icon : "ion-close-round" ,
2309
2361
title : "Dismiss selection" ,
2310
2362
onClick : function onClick ( btn , map ) {
2311
2363
btn . state ( "select-inactive" ) ;
2312
- _this9 . _locationFilter . disable ( ) ;
2364
+ _this10 . _locationFilter . disable ( ) ;
2313
2365
// If explicitly dismissed, clear the crosstalk selections
2314
- _this9 . layerManager . unbrush ( ) ;
2366
+ _this10 . layerManager . unbrush ( ) ;
2315
2367
}
2316
2368
} ]
2317
2369
} ) ;
0 commit comments