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);
}
}