diff --git a/src/main/java/org/transitopia/layers/Cycling.java b/src/main/java/org/transitopia/layers/Cycling.java index 32b41c4..43e8a11 100644 --- a/src/main/java/org/transitopia/layers/Cycling.java +++ b/src/main/java/org/transitopia/layers/Cycling.java @@ -22,6 +22,8 @@ public class Cycling implements private double BUFFER_SIZE = 4.0; // When zoomed out more than this, don't encode details of the cycling paths (makes tiles too big) private int MIN_ZOOM_ATTR = 13; + // Hide things like bike parking areas below this zoom level. + private int MIN_ZOOM_DETAILS = 12; private static final String LAYER_NAME = "transitopia_cycling"; // Minimum lengths for coalescing paths together at specific zoom levels private static final ZoomFunction.MeterToPixelThresholds MIN_LENGTH = ZoomFunction.meterThresholds() @@ -207,6 +209,26 @@ else if (feature.hasTag("highway") && !feature.hasTag("oneway", "yes") && newLine.setAttrWithMinzoom("routes", routeIdsString, MIN_ZOOM_ATTR); } } + } else if (feature.isPoint()) { + // Find bike rack/parking nodes + if (feature.hasTag("amenity", "bicycle_parking")) { + features.point(LAYER_NAME) + .setAttr("amenity", "bicycle_parking") + .setAttr("name", feature.getTag("name")) + .setAttr("osmNodeId", feature.id()) + .setMinZoom(MIN_ZOOM_DETAILS); + } + } + + if (feature.canBePolygon()) { + // Find bike rack/parking areas, e.g. https://www.openstreetmap.org/way/697625710 + if (feature.hasTag("amenity", "bicycle_parking")) { + features.centroid(LAYER_NAME) + .setAttr("amenity", "bicycle_parking") + .setAttr("name", feature.getTag("name")) + .setAttr("osmWayId", feature.id()) + .setMinZoom(MIN_ZOOM_DETAILS); + } } }