export function polygonToCellsExperimental()

in lib/h3core.js [1088:1127]


export function polygonToCellsExperimental(coordinates, res, flags, isGeoJson) {
    validateRes(res);
    isGeoJson = Boolean(isGeoJson);
    const flagsInt = polygonToCellsFlagsToNumber(flags);
    // Guard against empty input
    if (coordinates.length === 0 || coordinates[0].length === 0) {
        return [];
    }
    // Wrap to expected format if a single loop is provided
    const polygon = typeof coordinates[0][0] === 'number' ? [coordinates] : coordinates;
    const geoPolygon = coordinatesToGeoPolygon(
        // @ts-expect-error - There's no way to convince TS that polygon is now number[][][]
        polygon,
        isGeoJson
    );
    const countPtr = C._malloc(SZ_INT64);
    try {
        throwIfError(H3.maxPolygonToCellsSizeExperimental(geoPolygon, res, flagsInt, countPtr));
        const count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));
        const hexagons = C._calloc(count, SZ_H3INDEX);
        try {
            throwIfError(
                H3.polygonToCellsExperimental(
                    geoPolygon,
                    res,
                    flagsInt,
                    count,
                    UNUSED_UPPER_32_BITS,
                    hexagons
                )
            );
            return readArrayOfH3Indexes(hexagons, count);
        } finally {
            C._free(hexagons);
        }
    } finally {
        C._free(countPtr);
        destroyGeoPolygon(geoPolygon);
    }
}