in lib/h3core.js [572:604]
function readMultiPolygon(polygon, formatAsGeoJson) {
const output = [];
const readCoord = formatAsGeoJson ? readLatLngGeoJson : readLatLng;
let loops;
let loop;
let coords;
let coord;
// Loop through the linked structure, building the output
while (polygon) {
output.push((loops = []));
// Follow ->first pointer
loop = C.getValue(polygon, 'i8*');
while (loop) {
loops.push((coords = []));
// Follow ->first pointer
coord = C.getValue(loop, 'i8*');
while (coord) {
coords.push(readCoord(coord));
// Follow ->next pointer
coord = C.getValue(coord + SZ_DBL * 2, 'i8*');
}
if (formatAsGeoJson) {
// Close loop if GeoJSON is requested
coords.push(coords[0]);
}
// Follow ->next pointer
loop = C.getValue(loop + SZ_PTR * 2, 'i8*');
}
// Follow ->next pointer
polygon = C.getValue(polygon + SZ_PTR * 2, 'i8*');
}
return output;
}