Visualize population density

Using a variable binding expression to calculate and display population density.

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8' />
    <title>Visualize population density</title>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
    <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.js'></script>
    <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.51.0/mapbox-gl.css' rel='stylesheet' />
    <style>
        body { margin:0; padding:0; }
        #map { position:absolute; top:0; bottom:0; width:100%; }
    </style>
</head>
<body>

<div id='map'></div>
<script>
mapboxgl.accessToken = '<your access token here>';
var map = new mapboxgl.Map({
    container: 'map', // container id
    style: 'mapbox://styles/mapbox/streets-v10', // stylesheet location
    center: [30.0222, -1.9596], // starting position [lng, lat]
    zoom: 7 // starting zoom
});

map.on('load', function () {

    map.addLayer({
        'id': 'rwanda-provinces',
        'type': 'fill',
        'source': {
            'type': 'geojson',
            'data': 'https://www.mapbox.com/mapbox-gl-js/assets/rwanda-provinces.geojson'
        },
        'layout': {},
        'paint': {
            'fill-color':
            ["let", "density", ["/", ["get", "population"], ["get", "sq-km"]],
                [
                    "interpolate",
                    ["linear"],
                    ["zoom"],
                    8,
                    [
                        "interpolate",
                        ["linear"],
                        ["var", "density"],
                        274,
                        ["to-color", "#edf8e9"],
                        1551,
                        ["to-color", "#006d2c"]
                    ],
                    10,
                    [
                        "interpolate",
                        ["linear"],
                        ["var", "density"],
                        274,
                        ["to-color", "#eff3ff"],
                        1551,
                        ["to-color", "#08519c"]
                    ]
                ]
            ],
            'fill-opacity': .7
        }
    });
});
</script>

</body>
</html>
Copy example