in lib/h3core.js [1041:1070]
export function polygonToCells(coordinates, res, isGeoJson) {
validateRes(res);
isGeoJson = Boolean(isGeoJson);
// 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.maxPolygonToCellsSize(geoPolygon, res, 0, countPtr));
const count = validateArrayLength(readInt64AsDoubleFromPointer(countPtr));
const hexagons = C._calloc(count, SZ_H3INDEX);
try {
throwIfError(H3.polygonToCells(geoPolygon, res, 0, hexagons));
return readArrayOfH3Indexes(hexagons, count);
} finally {
C._free(hexagons);
}
} finally {
C._free(countPtr);
destroyGeoPolygon(geoPolygon);
}
}