diff --git a/src/main/java/org/openmaptiles/layers/Place.java b/src/main/java/org/openmaptiles/layers/Place.java index f3545a93..f764d15f 100644 --- a/src/main/java/org/openmaptiles/layers/Place.java +++ b/src/main/java/org/openmaptiles/layers/Place.java @@ -378,7 +378,7 @@ public void process(Tables.OsmBoundaryPolygon element, FeatureCollector features int rank = AREA_RANKS.ceilingEntry(element.source().area()).getValue(); int minzoom = rank <= 4 ? rank + 5 : 10; - features.centroid(LAYER_NAME).setBufferPixels(BUFFER_SIZE) + features.pointOnSurface(LAYER_NAME).setBufferPixels(BUFFER_SIZE) .putAttrs(OmtLanguageUtils.getNames(element.source().tags(), translations)) .setAttr(OpenMapTilesSchema.Boundary.Fields.CLASS, element.boundary()) .setAttr(Fields.RANK, rank) diff --git a/src/main/java/org/openmaptiles/layers/TransportationName.java b/src/main/java/org/openmaptiles/layers/TransportationName.java index 1d78469d..714ce776 100644 --- a/src/main/java/org/openmaptiles/layers/TransportationName.java +++ b/src/main/java/org/openmaptiles/layers/TransportationName.java @@ -275,9 +275,13 @@ public void process(Tables.OsmHighwayLinestring element, FeatureCollector featur .setMinZoom(minzoom); // populate route_1_, route_2_, ... route_n_ tags and remove duplicates - Set routes = new HashSet<>(); + Set routes = new HashSet<>(); for (var route : relations) { - if (routes.add(route.id())) { + String routeString = route.network() + "=" + + coalesce(route.ref(), "") + "=" + + coalesce(route.name(), "") + "=" + + coalesce(route.colour(), ""); + if (routes.add(routeString)) { String keyPrefix = "route_" + routes.size() + "_"; feature.setAttr(keyPrefix + "network", route.network()); diff --git a/src/main/java/org/openmaptiles/layers/WaterName.java b/src/main/java/org/openmaptiles/layers/WaterName.java index 9bbd0127..cd3a1a8b 100644 --- a/src/main/java/org/openmaptiles/layers/WaterName.java +++ b/src/main/java/org/openmaptiles/layers/WaterName.java @@ -89,7 +89,7 @@ public class WaterName implements // need to synchronize updates from multiple threads private final LongObjectMap lakeCenterlines = Hppc.newLongObjectHashMap(); // may be updated concurrently by multiple threads - private ConcurrentSkipListMap importantMarinePoints = new ConcurrentSkipListMap<>(); + private final ConcurrentSkipListMap importantMarinePoints = new ConcurrentSkipListMap<>(); private final Stats stats; public WaterName(Translations translations, PlanetilerConfig config, Stats stats) { @@ -100,7 +100,7 @@ public WaterName(Translations translations, PlanetilerConfig config, Stats stats @Override public void release() { lakeCenterlines.release(); - importantMarinePoints = null; + importantMarinePoints.clear(); } @Override