Search code examples
javascriptcssleaflet

Dynamic change font-size in Leaflet marker tooltip text on zoom change


I show some text on map, I did this by this example

Rotate Lealfet markers tooltip text

I need to see smaller text if zoom out and text should be larger when I zoom in.

mymap.on('zoomend', function () {
    var zoomLevel = mymap.getZoom();
    var tooltip = $('.leaflet-tooltip');

    switch (zoomLevel) {
        case -2:
            tooltip.css('font-size', 7);
            break;
        case -1:
            tooltip.css('font-size', 10);
            break;
        case 0:
            tooltip.css('font-size', 12);
            break;
        case 1:
            tooltip.css('font-size', 14);
            break;
        case 2:
            tooltip.css('font-size', 16);
            break;
        case 3:
            tooltip.css('font-size', 18);
            break;
        default:
            tooltip.css('font-size', 14);
    }
}

I guess this is not by the book solution and I want to ask for a better way for changing font size dynamically to follow map size on zoom in or zoom out.


Solution

  • So I just change event from zoomend to zoomstart and there is no more big time gap between zooming and font changing.

    mymap.on('zoomstart', function () {
        var zoomLevel = mymap.getZoom();
        var tooltip = $('.leaflet-tooltip');
    
        switch (zoomLevel) {
            case -2:
                tooltip.css('font-size', 7);
                break;
            case -1:
                tooltip.css('font-size', 10);
                break;
            case 0:
                tooltip.css('font-size', 12);
                break;
            case 1:
                tooltip.css('font-size', 14);
                break;
            case 2:
                tooltip.css('font-size', 16);
                break;
            case 3:
                tooltip.css('font-size', 18);
                break;
            default:
                tooltip.css('font-size', 14);
        }
    });