code: function getGeoBounds({face, ij, level}) {
    const result = [];
    const offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];
  
    // The S2 cell edge is curved: http://s2geometry.io/
    // This is more prominent at lower levels
    // resolution is the number of segments to generate per edge.
    // We exponentially reduce resolution as level increases so it doesn't affect perf
    // when there are a large number of cells
    const resolution = Math.max(1, MAX_RESOLUTION * Math.pow(2, -level));
  
    for (let i = 0; i < 4; i++) {
      const offset = offsets[i].slice(0);
      const nextOffset = offsets[i + 1];
      const stepI = (nextOffset[0] - offset[0]) / resolution;
      const stepJ = (nextOffset[1] - offset[1]) / resolution;
  
      for (let j = 0; j < resolution; j++) {
        offset[0] += stepI;
        offset[1] += stepJ;
        // Cell can be represented by coordinates IJ, ST, UV, XYZ
        // http://s2geometry.io/devguide/s2cell_hierarchy#coordinate-systems
        const st = S2.IJToST(ij, level, offset);
        const uv = S2.STToUV(st);
        const xyz = S2.FaceUVToXYZ(face, uv);
  
        result.push(XYZToLngLat(xyz));
      }
    }
    return result;
  }
docs: /* Adapted from s2-geometry's S2Cell.getCornerLatLngs