Skip to content

Commit 230676d

Browse files
committed
fix(maps): Fix vector maps render
1 parent 73f76ce commit 230676d

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

lib/maps/src/maps.cpp

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,7 +1499,7 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
14991499
break;
15001500
const size_t cmdStartOffset = offset;
15011501
const uint32_t cmdType = readVarint(data, offset, dataSize);
1502-
1502+
15031503
// Since commands are pre-sorted by layer but we can't detect layer changes,
15041504
// we'll be more conservative and flush batches more frequently to ensure
15051505
// proper layer ordering. Flush every 50 commands to maintain layer integrity.
@@ -1511,6 +1511,10 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
15111511

15121512
switch (cmdType)
15131513
{
1514+
case SET_LAYER:
1515+
// Ignore SET_LAYER command as tiles are already sorted by layers
1516+
readVarint(data, offset, dataSize);
1517+
break;
15141518
case SET_COLOR:
15151519
flushCurrentBatch();
15161520
if (offset < dataSize)
@@ -1574,11 +1578,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
15741578
if (!px || !py)
15751579
{
15761580
// Skip this command if allocation failed
1577-
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1578-
{
1579-
readZigzag(data, offset, dataSize);
1580-
readZigzag(data, offset, dataSize);
1581-
}
1581+
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1582+
{
1583+
readZigzag(data, offset, dataSize);
1584+
readZigzag(data, offset, dataSize);
1585+
}
15821586
continue;
15831587
}
15841588
int32_t prevX = readZigzag(data, offset, dataSize);
@@ -1608,11 +1612,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16081612
}
16091613
else
16101614
{
1611-
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1612-
{
1613-
readZigzag(data, offset, dataSize);
1614-
readZigzag(data, offset, dataSize);
1615-
}
1615+
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1616+
{
1617+
readZigzag(data, offset, dataSize);
1618+
readZigzag(data, offset, dataSize);
1619+
}
16161620
}
16171621
}
16181622
break;
@@ -1631,11 +1635,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16311635
int* py = pyGuard.get();
16321636
if (!px || !py)
16331637
{
1634-
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1635-
{
1636-
readZigzag(data, offset, dataSize);
1637-
readZigzag(data, offset, dataSize);
1638-
}
1638+
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1639+
{
1640+
readZigzag(data, offset, dataSize);
1641+
readZigzag(data, offset, dataSize);
1642+
}
16391643
break;
16401644
}
16411645
if (!unifiedPolygonLogged)
@@ -1666,11 +1670,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16661670
}
16671671
else
16681672
{
1669-
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1670-
{
1671-
readZigzag(data, offset, dataSize);
1672-
readZigzag(data, offset, dataSize);
1673-
}
1673+
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1674+
{
1675+
readZigzag(data, offset, dataSize);
1676+
readZigzag(data, offset, dataSize);
1677+
}
16741678
}
16751679
}
16761680
break;
@@ -1688,11 +1692,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16881692
int* py = pyGuard.get();
16891693
if (!px || !py)
16901694
{
1691-
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1692-
{
1693-
readZigzag(data, offset, dataSize);
1694-
readZigzag(data, offset, dataSize);
1695-
}
1695+
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1696+
{
1697+
readZigzag(data, offset, dataSize);
1698+
readZigzag(data, offset, dataSize);
1699+
}
16961700
break;
16971701
}
16981702
if (!unifiedPolygonsLogged)
@@ -1727,11 +1731,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
17271731
}
17281732
else
17291733
{
1730-
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1731-
{
1732-
readZigzag(data, offset, dataSize);
1733-
readZigzag(data, offset, dataSize);
1734-
}
1734+
for (uint32_t i = 0; i < numPoints && offset < dataSize; ++i)
1735+
{
1736+
readZigzag(data, offset, dataSize);
1737+
readZigzag(data, offset, dataSize);
1738+
}
17351739
}
17361740
}
17371741
break;

0 commit comments

Comments
 (0)