Skip to content

Commit 46949ec

Browse files
committed
create feature overlays as composite overlays with linked tile tables
1 parent 9d65718 commit 46949ec

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

mapcache/src/main/java/mil/nga/mapcache/GeoPackageMapFragment.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
import mil.nga.geopackage.map.geom.ShapeWithChildrenMarkers;
125125
import mil.nga.geopackage.map.tiles.TileBoundingBoxMapUtils;
126126
import mil.nga.geopackage.map.tiles.overlay.BoundedOverlay;
127+
import mil.nga.geopackage.map.tiles.overlay.CompositeOverlay;
127128
import mil.nga.geopackage.map.tiles.overlay.FeatureOverlay;
128129
import mil.nga.geopackage.map.tiles.overlay.FeatureOverlayQuery;
129130
import 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

Comments
 (0)