JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css">
<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<script src="http://cdn-geoweb.s3.amazonaws.com/esri-leaflet/1.0.0-rc.5/esri-leaflet.js"></script>
<div id="map"></div>

CSS

body {
            margin: 0;
            padding: 0;
        }
        #map {
            position: absolute;
            top: 0;
            bottom: 0;
            right: 0;
            left: 0;
        }

JavaScript

var map = L.map('map').setView([50.937980, 6.952989], 13);

var basemap = L.esri.basemapLayer('Streets').addTo(map);

//references leading origin of icons
var icontrain1 = L.icon({
    iconUrl: 'http://files.softicons.com/download/system-icons/web0.2ama-icons-by-chrfb/png/48x48/Maps%20-%20U-Tube.png',
    iconSize: [48, 48],
    iconAnchor: [20, 20]
});

var icontrain2 = L.icon({
    iconUrl: 'http://files.softicons.com/download/system-icons/web0.2ama-icons-by-chrfb/png/48x48/Maps%20-%20U-Tube.png',
    iconSize: [25, 25],
    iconAnchor: [10, 10]
});

//combining the train layer into a group to handle them as one in the code (url is the same, only icons vary)
var train1 = L.esri.featureLayer('http://geoportal1.stadt-koeln.de/ArcGIS/rest/services/WebVerkehr_Data/MapServer/8', {
    useCors: false,
    pointToLayer: function (feature, latlng) {
        return L.marker(latlng, {
            icon: icontrain1
        });
    }
}),

    train2 = L.esri.featureLayer('http://geoportal1.stadt-koeln.de/ArcGIS/rest/services/WebVerkehr_Data/MapServer/8', {
        useCors: false,
        pointToLayer: function (feature, latlng) {
            return L.marker(latlng, {
                icon: icontrain2
            });
        }
    });

//using a LayerGroup class to have a layer called train
var train = L.layerGroup([train1, train2]);

//getZoom function to load layer depending on zoom level
map.on('zoomend', function () {
    var currentZoom = map.getZoom();
    if (currentZoom > 15) {
        map.removeLayer(train1);
        map.addLayer(train2);
    }
    if (currentZoom <= 15) {
        map.removeLayer(train2);
        map.addLayer(train1);
    }
})

//definition for layers and names for LayerControl
var basemap = {
    "Basemap": basemap,
};

var train = {
    "Train": train
};

//adding LayerControl to map
L.control.layers(basemap, train).addTo(map);