geopackage-sdk/src/main/java/mil/nga/geopackage/features/index/FeatureIndexManager.java
public FeatureIndexResults query(BoundingBox boundingBox, Projection projection) {
        FeatureIndexResults results = null;
        switch (getIndexedType()) {
            case GEOPACKAGE:
                long count = featureTableIndex.count(boundingBox, projection);
                CloseableIterator<GeometryIndex> geometryIndices = featureTableIndex.query(boundingBox, projection);
                results = new FeatureIndexGeoPackageResults(featureTableIndex, count, geometryIndices);
                break;
            case METADATA:
                Cursor geometryMetadata = featureIndexer.query(boundingBox, projection);
                results = new FeatureIndexMetadataResults(featureIndexer, geometryMetadata);
                break;
            case RTREE:
                UserCustomCursor cursor = rTreeIndexTableDao.query(
                        boundingBox, projection);
                results = new FeatureIndexRTreeResults(rTreeIndexTableDao,
                        cursor);
                break;
            default:
                results = manualFeatureQuery.query(boundingBox, projection);
        }
        return results;
    }
public FeatureIndexResults query(BoundingBox boundingBox, Projection projection) {
        FeatureIndexResults results = null;
        switch (getIndexedType()) {
            case GEOPACKAGE:
                long count = featureTableIndex.count(boundingBox, projection);
                CloseableIterator<GeometryIndex> geometryIndices = featureTableIndex.query(boundingBox, projection);
                results = new FeatureIndexGeoPackageResults(featureTableIndex, count, geometryIndices);
                break;
            case METADATA:
                Cursor geometryMetadata = featureIndexer.query(boundingBox, projection);
                results = new FeatureIndexMetadataResults(featureIndexer, geometryMetadata);
                break;
            case RTREE:
                UserCustomCursor cursor = rTreeIndexTableDao.query(
                        boundingBox, projection);
                results = new FeatureIndexRTreeResults(rTreeIndexTableDao,
                        cursor);
                break;
            default:
                results = manualFeatureQuery.query(boundingBox, projection);
        }
        return results;
    }
Query for feature index results within the bounding box in
the provided projection

@param boundingBox bounding box
@param projection  projection
@return feature index results, close when done