@ -25,8 +25,11 @@ export class LeafletControlLayers extends WithProps(HTMLElement, PROPS) {
if ( ! checked ) uncheckedLayers . push ( layer ) ;
if ( ! checked ) uncheckedLayers . push ( layer ) ;
}
}
const map = this . # map ;
for ( const layer of uncheckedLayers ) {
for ( const layer of uncheckedLayers ) map ? . removeLayer ( layer ) ;
this . dispatchEvent (
new CustomEvent ( 'leaflet-remove-layer' , { bubbles : true , detail : { layer } } ) ,
) ;
}
this . # obj = new Control . Layers ( baseLayers , overlays , {
this . # obj = new Control . Layers ( baseLayers , overlays , {
position : this.getAttribute ( 'position' ) as ControlPosition | undefined ,
position : this.getAttribute ( 'position' ) as ControlPosition | undefined ,
@ -57,24 +60,6 @@ export class LeafletControlLayers extends WithProps(HTMLElement, PROPS) {
return this . # obj ;
return this . # obj ;
}
}
get # map ( ) :
| {
removeLayer ( l : Layer ) : unknown ;
addLayer ( l : Layer ) : unknown ;
}
| undefined {
const mapEl = this . closest ( 'leaflet-map' ) ;
if ( ! mapEl ) return undefined ;
return (
mapEl as unknown as {
leafletObject ? : {
removeLayer ( l : Layer ) : unknown ;
addLayer ( l : Layer ) : unknown ;
} ;
}
) . leafletObject ;
}
# onChildRegister = ( e : LeafletRegisterEvent ) = > {
# onChildRegister = ( e : LeafletRegisterEvent ) = > {
e . stopPropagation ( ) ;
e . stopPropagation ( ) ;
const el = e . detail . element ;
const el = e . detail . element ;
@ -85,7 +70,11 @@ export class LeafletControlLayers extends WithProps(HTMLElement, PROPS) {
const checked = el . hasAttribute ( 'checked' ) ;
const checked = el . hasAttribute ( 'checked' ) ;
if ( base ) this . # obj ! . addBaseLayer ( layer , name ) ;
if ( base ) this . # obj ! . addBaseLayer ( layer , name ) ;
else this . # obj ! . addOverlay ( layer , name ) ;
else this . # obj ! . addOverlay ( layer , name ) ;
if ( checked ) this . # map ? . addLayer ( layer ) ;
if ( checked ) {
this . dispatchEvent (
new CustomEvent ( 'leaflet-add-layer' , { bubbles : true , detail : { layer } } ) ,
) ;
}
} ;
} ;
}
}