diff --git a/include/graphics/map/GeoPoint.h b/include/graphics/map/GeoPoint.h index 9ca6e95..6e42d65 100644 --- a/include/graphics/map/GeoPoint.h +++ b/include/graphics/map/GeoPoint.h @@ -100,6 +100,7 @@ class GeoPoint // level 0 (course) .. 18 (detail) uint8_t zoomLevel; bool isFiltered = false; + bool isVisible = false; }; #ifdef UNIT_TEST diff --git a/source/graphics/map/MapPanel.cpp b/source/graphics/map/MapPanel.cpp index 7bd11ea..62598fc 100644 --- a/source/graphics/map/MapPanel.cpp +++ b/source/graphics/map/MapPanel.cpp @@ -147,12 +147,14 @@ void MapPanel::drawObject(MapObject &obj, bool count) if (count) objectsOnMap++; obj.draw(obj.id, tile.getX() + obj.point.xPos, tile.getY() + obj.point.yPos, MapTileSettings::getZoomLevel()); + obj.point.isVisible = true; return; } } } obj.draw(obj.id, 0, 0, 0); // hide object } + obj.point.isVisible = false; } /** @@ -446,8 +448,13 @@ void MapPanel::update(uint32_t id, bool filtered) void MapPanel::remove(uint32_t id) { + auto it = mapObjects.find(id); + if (it != mapObjects.end()) { + if (it->second->point.isVisible) { + objectsOnMap--; + } + } mapObjects.erase(id); - objectsOnMap--; } void MapPanel::setHomeLocationImage(lv_obj_t *img)