in src/main/java/com/uber/h3core/H3Core.java [540:576]
public List<Long> polygonToCellsExperimental(
List<LatLng> points, List<List<LatLng>> holes, int res, PolygonToCellsFlags flags) {
checkResolution(res);
// pack the data for use by the polyfill JNI call
double[] verts = new double[points.size() * 2];
packGeofenceVertices(verts, points, 0);
int[] holeSizes = new int[0];
double[] holeVerts = new double[0];
if (holes != null) {
int holesSize = holes.size();
holeSizes = new int[holesSize];
int totalSize = 0;
for (int i = 0; i < holesSize; i++) {
int holeSize = holes.get(i).size() * 2;
totalSize += holeSize;
// Note we are storing the number of doubles
holeSizes[i] = holeSize;
}
holeVerts = new double[totalSize];
int offset = 0;
for (int i = 0; i < holesSize; i++) {
offset = packGeofenceVertices(holeVerts, holes.get(i), offset);
}
}
int flagsInt = flags.toInt();
int sz =
longToIntSize(
h3Api.maxPolygonToCellsSizeExperimental(verts, holeSizes, holeVerts, res, flagsInt));
long[] results = new long[sz];
h3Api.polygonToCellsExperimental(verts, holeSizes, holeVerts, res, flagsInt, results);
return nonZeroLongArrayToList(results);
}