Skip to content

Commit 16c9259

Browse files
Take requested layer into account
1 parent c73689a commit 16c9259

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

application/src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.List;
1616
import java.util.Locale;
1717
import java.util.Objects;
18+
import java.util.Set;
1819
import java.util.function.Predicate;
1920
import org.glassfish.grizzly.http.server.Request;
2021
import org.opentripplanner.apis.support.TileJson;
@@ -96,12 +97,14 @@ public TileJson getTileJson(
9697
TileJson.urlWithDefaultPath(uri, headers, rLayers, ignoreRouterId, "vectorTiles")
9798
);
9899

100+
int minZoom = config.minZoom(Set.copyOf(rLayers));
101+
int maxZoom = config.maxZoom(Set.copyOf(rLayers));
99102
return config
100103
.attribution()
101-
.map(attr -> new TileJson(url, envelope, attr, config.minZoom(), config.maxZoom()))
104+
.map(attr -> new TileJson(url, envelope, attr, minZoom, maxZoom))
102105
.orElseGet(() -> {
103106
var feedInfos = getFeedInfos();
104-
return new TileJson(url, envelope, feedInfos, config.minZoom(), config.maxZoom());
107+
return new TileJson(url, envelope, feedInfos, minZoom, maxZoom);
105108
});
106109
}
107110

application/src/main/java/org/opentripplanner/standalone/config/routerconfig/VectorTileConfig.java

+12-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.util.Collection;
1212
import java.util.List;
1313
import java.util.Optional;
14+
import java.util.Set;
15+
import java.util.stream.Stream;
1416
import javax.annotation.Nullable;
1517
import org.opentripplanner.ext.vectortiles.VectorTilesResource;
1618
import org.opentripplanner.ext.vectortiles.VectorTilesResource.LayerType;
@@ -162,17 +164,21 @@ public static Layer mapLayer(NodeAdapter node) {
162164
}
163165

164166
/**
165-
* The lowest configured minZoom value of any layer or the fallback of {@link LayerParameters#MIN_ZOOM}
167+
* The lowest configured minZoom value of the requested layers or the fallback of {@link LayerParameters#MIN_ZOOM}
166168
*/
167-
public int minZoom() {
168-
return layers.stream().mapToInt(LayerParameters::minZoom).min().orElse(MIN_ZOOM);
169+
public int minZoom(Set<String> requestedLayers) {
170+
return selectLayers(requestedLayers).mapToInt(LayerParameters::minZoom).min().orElse(MIN_ZOOM);
169171
}
170172

171173
/**
172-
* The highest configured maxZoom value of any layer or the fallback of {@link LayerParameters#MAX_ZOOM}
174+
* The highest configured maxZoom value of the requested layers or the fallback of {@link LayerParameters#MAX_ZOOM}
173175
*/
174-
public int maxZoom() {
175-
return layers.stream().mapToInt(LayerParameters::maxZoom).max().orElse(MAX_ZOOM);
176+
public int maxZoom(Set<String> requestedLayers) {
177+
return selectLayers(requestedLayers).mapToInt(LayerParameters::maxZoom).max().orElse(MAX_ZOOM);
178+
}
179+
180+
private Stream<LayerParameters<LayerType>> selectLayers(Set<String> requestedLayers) {
181+
return layers.stream().filter(l -> requestedLayers.contains(l.name()));
176182
}
177183

178184
record Layer(

application/src/test/java/org/opentripplanner/standalone/config/routerconfig/VectorTileConfigTest.java

+17-7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.jupiter.api.Assertions.*;
44

55
import java.util.List;
6+
import java.util.Set;
67
import org.junit.jupiter.api.Test;
78
import org.opentripplanner.ext.vectortiles.VectorTilesResource;
89
import org.opentripplanner.ext.vectortiles.layers.LayerFilters;
@@ -12,26 +13,35 @@ class VectorTileConfigTest {
1213

1314
@Test
1415
void fallbackWhenEmpty() {
15-
assertEquals(LayerParameters.MIN_ZOOM, VectorTileConfig.DEFAULT.minZoom());
16-
assertEquals(LayerParameters.MAX_ZOOM, VectorTileConfig.DEFAULT.maxZoom());
16+
assertEquals(LayerParameters.MIN_ZOOM, VectorTileConfig.DEFAULT.minZoom(Set.of()));
17+
assertEquals(LayerParameters.MAX_ZOOM, VectorTileConfig.DEFAULT.maxZoom(Set.of()));
18+
}
19+
20+
@Test
21+
void fallbackWhenNotFound() {
22+
assertEquals(LayerParameters.MIN_ZOOM, VectorTileConfig.DEFAULT.minZoom(Set.of("x")));
23+
assertEquals(LayerParameters.MAX_ZOOM, VectorTileConfig.DEFAULT.maxZoom(Set.of("x")));
1724
}
1825

1926
@Test
2027
void computeZoomFromLayers() {
2128
final int maxZoom = 24;
2229
final int minZoom = 2;
2330
var config = new VectorTileConfig(
24-
List.of(layerConfig(maxZoom, minZoom), layerConfig(maxZoom - 1, minZoom + 1)),
31+
List.of(layerConfig("a", minZoom, maxZoom), layerConfig("b", minZoom + 1, maxZoom - 1)),
2532
null,
2633
null
2734
);
28-
assertEquals(minZoom, config.minZoom());
29-
assertEquals(maxZoom, config.maxZoom());
35+
assertEquals(minZoom, config.minZoom(Set.of("a", "b")));
36+
assertEquals(maxZoom, config.maxZoom(Set.of("a", "b")));
37+
38+
assertEquals(minZoom, config.minZoom(Set.of("a")));
39+
assertEquals(maxZoom, config.maxZoom(Set.of("a")));
3040
}
3141

32-
private static VectorTileConfig.Layer layerConfig(int maxZoom, int minZoom) {
42+
private static VectorTileConfig.Layer layerConfig(String name, int minZoom, int maxZoom) {
3343
return new VectorTileConfig.Layer(
34-
"aaa",
44+
name,
3545
VectorTilesResource.LayerType.Stop,
3646
"a-mapper",
3747
maxZoom,

0 commit comments

Comments
 (0)