124124import mil .nga .geopackage .map .geom .ShapeWithChildrenMarkers ;
125125import mil .nga .geopackage .map .tiles .TileBoundingBoxMapUtils ;
126126import mil .nga .geopackage .map .tiles .overlay .BoundedOverlay ;
127+ import mil .nga .geopackage .map .tiles .overlay .CompositeOverlay ;
127128import mil .nga .geopackage .map .tiles .overlay .FeatureOverlay ;
128129import mil .nga .geopackage .map .tiles .overlay .FeatureOverlayQuery ;
129130import mil .nga .geopackage .map .tiles .overlay .GeoPackageOverlayFactory ;
@@ -2907,14 +2908,28 @@ private void displayFeatureTiles(GeoPackageFeatureOverlayTable featureOverlayTab
29072908
29082909 featureTiles .calculateDrawOverlap ();
29092910
2910- FeatureOverlay overlay = new FeatureOverlay (featureTiles );
2911- overlay .setBoundingBox (boundingBox , ProjectionFactory .getProjection (ProjectionConstants .EPSG_WORLD_GEODETIC_SYSTEM ));
2912- overlay .setMinZoom (featureOverlayTable .getMinZoom ());
2913- overlay .setMaxZoom (featureOverlayTable .getMaxZoom ());
2911+ FeatureOverlay featureOverlay = new FeatureOverlay (featureTiles );
2912+ featureOverlay .setBoundingBox (boundingBox , ProjectionFactory .getProjection (ProjectionConstants .EPSG_WORLD_GEODETIC_SYSTEM ));
2913+ featureOverlay .setMinZoom (featureOverlayTable .getMinZoom ());
2914+ featureOverlay .setMaxZoom (featureOverlayTable .getMaxZoom ());
29142915
2916+ // Get the linked tile daos
29152917 FeatureTileTableLinker linker = new FeatureTileTableLinker (geoPackage );
29162918 List <TileDao > tileDaos = linker .getTileDaosForFeatureTable (featureDao .getTableName ());
2917- overlay .ignoreTileDaos (tileDaos );
2919+
2920+ BoundedOverlay overlay ;
2921+ if (!tileDaos .isEmpty ()){
2922+ // Create a composite overlay to search for existing tiles before drawing from features
2923+ CompositeOverlay compositeOverlay = new CompositeOverlay ();
2924+ for (TileDao tileDao : tileDaos ){
2925+ BoundedOverlay boundedOverlay = GeoPackageOverlayFactory .getBoundedOverlay (tileDao );
2926+ compositeOverlay .addOverlay (boundedOverlay );
2927+ }
2928+ compositeOverlay .addOverlay (featureOverlay );
2929+ overlay = compositeOverlay ;
2930+ }else {
2931+ overlay = featureOverlay ;
2932+ }
29182933
29192934 GeometryColumns geometryColumns = featureDao .getGeometryColumns ();
29202935 Contents contents = geometryColumns .getContents ();
@@ -2923,7 +2938,7 @@ private void displayFeatureTiles(GeoPackageFeatureOverlayTable featureOverlayTab
29232938
29242939 featureOverlayTiles = true ;
29252940
2926- FeatureOverlayQuery featureOverlayQuery = new FeatureOverlayQuery (getActivity (), overlay );
2941+ FeatureOverlayQuery featureOverlayQuery = new FeatureOverlayQuery (getActivity (), overlay , featureTiles );
29272942 featureOverlayQueries .add (featureOverlayQuery );
29282943
29292944 displayTiles (overlay , contents .getBoundingBox (), contents .getSrs (), -1 , boundingBox );
0 commit comments