background.updateImagery = function()

in modules/renderer/background.js [135:212]


    background.updateImagery = function() {
        var b = baseLayer.source();
        if (context.inIntro() || !b) return;

        var o = _overlayLayers
            .filter(function (d) { return !d.source().isLocatorOverlay() && !d.source().isHidden(); })
            .map(function (d) { return d.source().id; })
            .join(',');

        var meters = geoOffsetToMeters(b.offset());
        var epsilon = 0.01;
        var x = +meters[0].toFixed(2);
        var y = +meters[1].toFixed(2);
        var q = utilStringQs(window.location.hash.substring(1));

        var id = b.id;
        if (id === 'custom') {
            id = 'custom:' + b.template();
        }

        if (id) {
            q.background = id;
        } else {
            delete q.background;
        }

        if (o) {
            q.overlays = o;
        } else {
            delete q.overlays;
        }

        if (Math.abs(x) > epsilon || Math.abs(y) > epsilon) {
            q.offset = x + ',' + y;
        } else {
            delete q.offset;
        }

        if (!window.mocha) {
            window.location.replace('#' + utilQsString(q, true));
        }

        var imageryUsed = [];
        var photoOverlaysUsed = [];

        var current = b.imageryUsed();
        if (current && _isValid) {
            imageryUsed.push(current);
        }

        _overlayLayers
            .filter(function (d) { return !d.source().isLocatorOverlay() && !d.source().isHidden(); })
            .forEach(function (d) { imageryUsed.push(d.source().imageryUsed()); });

        var data = context.layers().layer('data');
        if (data && data.enabled() && data.hasData()) {
            imageryUsed.push(data.getSrc());
        }

        var photoOverlayLayers = {
            streetside: 'Bing Streetside',
            mapillary: 'Mapillary Images',
            'mapillary-map-features': 'Mapillary Map Features',
            'mapillary-signs': 'Mapillary Signs',
            openstreetcam: 'OpenStreetCam Images'
        };

        for (var layerID in photoOverlayLayers) {
            var layer = context.layers().layer(layerID);
            if (layer && layer.enabled()) {
                photoOverlaysUsed.push(layerID);
                imageryUsed.push(photoOverlayLayers[layerID]);
            }
        }

        context.history().photoOverlaysUsed(photoOverlaysUsed);
        context.history().imageryUsed(imageryUsed);
    };