diff --git a/ocitysmap2/indexlib/commons.py b/ocitysmap2/indexlib/commons.py index f4c19bb..45a72eb 100644 --- a/ocitysmap2/indexlib/commons.py +++ b/ocitysmap2/indexlib/commons.py @@ -173,9 +173,11 @@ class IndexItem: baseline_x, baseline_y, self.label) - draw_utils.draw_dotted_line(ctx, max(fheight/12, 1), - line_start + fheight/4, baseline_y, - line_end - line_start - fheight/2) + # In case of empty label, we don't draw the dots + if self.label != '': + draw_utils.draw_dotted_line(ctx, max(fheight/12, 1), + line_start + fheight/4, baseline_y, + line_end - line_start - fheight/2) ctx.restore() def update_location_str(self, grid): diff --git a/ocitysmap2/layoutlib/multi_page_renderer.py b/ocitysmap2/layoutlib/multi_page_renderer.py index 75359fe..bec94d1 100644 --- a/ocitysmap2/layoutlib/multi_page_renderer.py +++ b/ocitysmap2/layoutlib/multi_page_renderer.py @@ -347,6 +347,8 @@ class MultiPageRenderer(Renderer): finally: locale.setlocale(locale.LC_COLLATE, prev_locale) + self._blank_duplicated_names(grouped_items_sorted) + # Rebuild a IndexCategory object with the list of merged # and sorted IndexItem categories_merged.append( @@ -354,6 +356,16 @@ class MultiPageRenderer(Renderer): return categories_merged + # We set the label to empty string in case of duplicated item. In + # multi-page renderer we won't draw the dots in that case + def _blank_duplicated_names(self, grouped_items_sorted): + prev_label = '' + for item in grouped_items_sorted: + if prev_label == item.label: + item.label = '' + else: + prev_label = item.label + def _project_envelope(self, bbox): """Project the given bounding box into the rendering projection.""" envelope = mapnik.Box2d(bbox.get_top_left()[1],