code: function updateLayer(state, action) {
    // action.layer should be a new mix in for the layer.
    const new_layers = [];
    for (let i = 0, ii = state.layers.length; i < ii; i++) {
      // if the id matches, update the layer
      if (state.layers[i].id === action.layerId) {
        if (action.type === MAP.SET_LAYER_METADATA) {
          const meta_update = {};
          meta_update[action.key] = action.value;
          new_layers.push(Object.assign({}, state.layers[i], {
            metadata: Object.assign({}, state.layers[i].metadata, meta_update),
          }));
        } else {
          new_layers.push(Object.assign({}, state.layers[i], action.layerDef));
        }
      // otherwise leave it the same.
      } else {
        new_layers.push(state.layers[i]);
      }
    }
  
    return Object.assign({}, state, {
      layers: new_layers,
    }, incrementVersion(state.metadata, LAYER_VERSION_KEY));
  }
docs: Update a layer that's in the state already.
  @param {Object} state Current state.
  @param {Object} action Action to handle.
  
  @returns {Object} The new state.