1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-24 03:35:53 +01:00

Limit area labels to one per tile

This commit is contained in:
Martin Tůma 2024-10-28 13:00:56 +01:00
parent 77f51098f6
commit 86b85e5afc

View File

@ -153,6 +153,7 @@ void RasterTile::processAreaLabels(const QVector<PainterPath> &paths,
QList<const Style::TextRender*> labels(_style->areaLabels(_zoom)); QList<const Style::TextRender*> labels(_style->areaLabels(_zoom));
QList<const Style::Symbol*> symbols(_style->areaSymbols(_zoom)); QList<const Style::Symbol*> symbols(_style->areaSymbols(_zoom));
QList<PathText> items; QList<PathText> items;
QSet<QByteArray> set;
for (int i = 0; i < paths.size(); i++) { for (int i = 0; i < paths.size(); i++) {
const PainterPath &path = paths.at(i); const PainterPath &path = paths.at(i);
@ -199,12 +200,16 @@ void RasterTile::processAreaLabels(const QVector<PainterPath> &paths,
QPointF pos = p.p->path->labelPos.isNull() QPointF pos = p.p->path->labelPos.isNull()
? centroid(p.p->pp) : ll2xy(p.p->path->labelPos); ? centroid(p.p->pp) : ll2xy(p.p->path->labelPos);
if (p.ti && set.contains(*p.lbl))
continue;
PointItem *item = new PointItem(pos.toPoint(), p.lbl, font, img, color, PointItem *item = new PointItem(pos.toPoint(), p.lbl, font, img, color,
hColor); hColor);
if (item->isValid() && _rect.contains(item->boundingRect().toRect()) if (item->isValid() && _rect.contains(item->boundingRect().toRect())
&& !item->collides(textItems)) && !item->collides(textItems)) {
textItems.append(item); textItems.append(item);
else set.insert(*p.lbl);
} else
delete item; delete item;
} }
} }