From 6317d82ec9dff205cd2de90d020433592009e807 Mon Sep 17 00:00:00 2001 From: Michael Barry Date: Fri, 14 Apr 2023 05:55:09 -0400 Subject: [PATCH] Fix error processing way (#87) --- .../openmaptiles/layers/Transportation.java | 6 +++- .../layers/TransportationName.java | 3 ++ .../layers/TransportationTest.java | 35 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/openmaptiles/layers/Transportation.java b/src/main/java/org/openmaptiles/layers/Transportation.java index 938b995..585b038 100644 --- a/src/main/java/org/openmaptiles/layers/Transportation.java +++ b/src/main/java/org/openmaptiles/layers/Transportation.java @@ -349,6 +349,10 @@ public class Transportation implements } int minzoom = getMinzoom(element, highwayClass); + if (minzoom > config.maxzoom()) { + return; + } + boolean highwayRamp = isLink(highway); Integer rampAboveZ12 = (highwayRamp || element.isRamp()) ? 1 : null; Integer rampBelowZ12 = highwayRamp ? 1 : null; @@ -409,7 +413,7 @@ public class Transportation implements case FieldValues.CLASS_SERVICE -> isDrivewayOrParkingAisle(service(element.service())) ? 14 : 13; case FieldValues.CLASS_TRACK, FieldValues.CLASS_PATH -> routeRank == 1 ? 12 : (z13Paths || !nullOrEmpty(element.name()) || routeRank <= 2 || !nullOrEmpty(element.sacScale())) ? 13 : 14; - default -> MINZOOMS.get(baseClass); + default -> MINZOOMS.getOrDefault(baseClass, Integer.MAX_VALUE); }; } diff --git a/src/main/java/org/openmaptiles/layers/TransportationName.java b/src/main/java/org/openmaptiles/layers/TransportationName.java index 8d0cb8b..86b5c65 100644 --- a/src/main/java/org/openmaptiles/layers/TransportationName.java +++ b/src/main/java/org/openmaptiles/layers/TransportationName.java @@ -253,6 +253,9 @@ public class TransportationName implements // inherit min zoom threshold from visible road, and ensure we never show a label on a road that's not visible yet. minzoom = Math.max(minzoom, transportation.getMinzoom(element, highwayClass)); + if (minzoom > config.maxzoom()) { + return; + } FeatureCollector.Feature feature = features.line(LAYER_NAME) .setBufferPixels(BUFFER_SIZE) diff --git a/src/test/java/org/openmaptiles/layers/TransportationTest.java b/src/test/java/org/openmaptiles/layers/TransportationTest.java index 8295824..5f1e663 100644 --- a/src/test/java/org/openmaptiles/layers/TransportationTest.java +++ b/src/test/java/org/openmaptiles/layers/TransportationTest.java @@ -1280,4 +1280,39 @@ class TransportationTest extends AbstractLayerTest { "class", "path" )), collector); } + + @Test + void testIssue86() { + assertFeatures(14, List.of(Map.of( + "_layer", "transportation", + "class", "bridge", + "_minzoom", 13, + "_type", "polygon" + )), process(closedWayFeature(Map.of( + "layer", "1", + "man_made", "bridge", + "service", "driveway" + )))); + assertFeatures(14, List.of(Map.of( + "_layer", "transportation", + "class", "bridge", + "_minzoom", 13, + "_type", "polygon" + )), process(closedWayFeature(Map.of( + "layer", "1", + "man_made", "bridge", + "service", "driveway", + "name", "name" + )))); + assertFeatures(14, List.of(Map.of( + "_layer", "transportation", + "class", "pier", + "_minzoom", 13, + "_type", "polygon" + )), process(closedWayFeature(Map.of( + "layer", "1", + "man_made", "pier", + "service", "driveway" + )))); + } }