Search code examples
javaleafletlistenervaadin8

Adding a Listener to the LayersControl in a leaflet addon map in Vaadin (Java)


I am using a leaflet map (vaadin addon in Java). I would like to add a listener the the control panel of the map. The method provided by leaflet is:

addListener(Class<?> eventType, Object target, Method method)

The control panel contains several checkboxes, one checkbox for each map layer. I would like to find out which layers checkbox was clicked.

map with control panel

"Method" is from reflection and I am new to reflection. I don't know how to write this Listener. Maybe someone could help. I tried:

Method m = Class.forName(LMTBLayer.class.getName()).getDeclaredMethod("receiveClick");
field.getMap().getLayersControl().addListener(MouseEvents.ClickEvent.class,layers.getMtbLayer(), m);

"LMTBLayer" is a map layer. "field.getMap().getLayersControl()" returns the control panel. "layers.getMtbLayer()" returns the actual layer object. But the method "receiveClick" is never invoked.


Solution

  • A college pointed me into the right direction. The listeners have to be added to the vaadin leaflet map.

    map.addBaseLayerChangeListener( );
    map.addOverlayAddListener( );
    map.addOverlayRemoveListener( );