private FeatureIndexResults fineFilterResults(FeatureIndexResults results, double tolerance, LatLng clickLocation) {

        FeatureIndexResults filteredResults = null;
        if (ignoreGeometryTypes.contains(geometryType)) {
            filteredResults = new FeatureIndexListResults();
        } else if (clickLocation == null && ignoreGeometryTypes.isEmpty()) {
            filteredResults = results;
        } else {

            FeatureIndexListResults filteredListResults = new FeatureIndexListResults();

            GoogleMapShapeConverter converter = new GoogleMapShapeConverter(
                    featureDao.getProjection());

            for (FeatureRow featureRow : results) {

                GeoPackageGeometryData geomData = featureRow.getGeometry();
                if (geomData != null) {
                    Geometry geometry = geomData.getGeometry();
                    if (geometry != null) {

                        if (!ignoreGeometryTypes.contains(geometry.getGeometryType())) {

                            if (clickLocation != null) {

                                GoogleMapShape mapShape = converter.toShape(geometry);
                                if (MapUtils.isPointOnShape(clickLocation, mapShape, geodesic, tolerance)) {

                                    filteredListResults.addRow(featureRow);

                                }
                            } else {
                                filteredListResults.addRow(featureRow);
                            }

                        }
                    }
                }

            }

            filteredResults = filteredListResults;
        }

        return filteredResults;
    }
private FeatureIndexResults fineFilterResults ( FeatureIndexResults results , double tolerance , LatLng clickLocation ) { FeatureIndexResults filteredResults = null ; if ( ignoreGeometryTypes . contains ( geometryType ) ) { filteredResults = new FeatureIndexListResults ( ) ; } else if ( clickLocation == null && ignoreGeometryTypes . isEmpty ( ) ) { filteredResults = results ; } else { FeatureIndexListResults filteredListResults = new FeatureIndexListResults ( ) ; GoogleMapShapeConverter converter = new GoogleMapShapeConverter ( featureDao . getProjection ( ) ) ; for ( FeatureRow featureRow : results ) { GeoPackageGeometryData geomData = featureRow . getGeometry ( ) ; if ( geomData != null ) { Geometry geometry = geomData . getGeometry ( ) ; if ( geometry != null ) { if ( ! ignoreGeometryTypes . contains ( geometry . getGeometryType ( ) ) ) { if ( clickLocation != null ) { GoogleMapShape mapShape = converter . toShape ( geometry ) ; if ( MapUtils . isPointOnShape ( clickLocation , mapShape , geodesic , tolerance ) ) { filteredListResults . addRow ( featureRow ) ; } } else { filteredListResults . addRow ( featureRow ) ; } } } } } filteredResults = filteredListResults ; } return filteredResults ; }
Fine filter the index results verifying the click location is within the tolerance of each feature row

@param results       feature index results
@param tolerance     distance tolerance
@param clickLocation click location
@return filtered feature index results