Skip to content

Switch between basemap layers (Control.Layers)

Use Leaflet's Control.Layers control to switch between different base layers and to toggle overlays on or off.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
  <head>
    <meta charset="utf-8" />
    <title>Switch between basemap layers (Control.Layers)</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" crossorigin="" />
    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" crossorigin=""></script>

    <!-- Load Esri Leaflet from CDN -->
    <script src="https://unpkg.com/esri-leaflet@3.0.19/dist/esri-leaflet.js"></script>

    <!-- Load Esri Leaflet Vector from CDN -->
    <script src="https://unpkg.com/esri-leaflet-vector@4.3.1/dist/esri-leaflet-vector.js" crossorigin=""></script>
    <style>
      html,
      body,
      #map {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 14px;
        color: #323232;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      const accessToken = "YOUR_ACCESS_TOKEN";

      const gray = L.esri.Vector.vectorBasemapLayer("arcgis/light-gray", {
        token: accessToken
      });

      const states = L.esri.featureLayer({
        url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3",
        style: function (feature) {
          return { color: "#bada55", weight: 2 };
        }
      });

      const map = L.map("map", {
        center: [42.6852048,-80.8372464],
        zoom: 7,
        layers: [gray, states]
      });

      const baseLayers = {
        Grayscale: gray,
        Newspaper: L.esri.Vector.vectorBasemapLayer("arcgis/newspaper", {
          token: accessToken
        })
      };

      const overlays = {
        "U.S. States": states
      };

      // https://leafletjs.com/reference.html#control-layers
      L.control.layers(baseLayers, overlays).addTo(map);
    </script>
  </body>
</html>

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.