diff --git a/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProvider.java b/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProvider.java index f62d10beb72..d1847f96a7b 100644 --- a/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProvider.java +++ b/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProvider.java @@ -12,6 +12,7 @@ public interface ExplorePlacesProvider { + public final int MAX_LEVEL_ZOOM_CACHE = 13; @NotNull List getDataCollection(QuadRect mapRect); @NotNull List getDataCollection(QuadRect mapRect, int limit); diff --git a/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProviderJava.java b/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProviderJava.java index 4ba085e16fe..86df37668f4 100644 --- a/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProviderJava.java +++ b/OsmAnd/src/net/osmand/plus/exploreplaces/ExplorePlacesProviderJava.java @@ -38,7 +38,7 @@ public class ExplorePlacesProviderJava implements ExplorePlacesProvider { private static final int DEFAULT_LIMIT_POINTS = 200; private static final int NEARBY_MIN_RADIUS = 50; - private final int MAX_LEVEL_ZOOM_CACHE = 13; + private static final int MAX_TILES_PER_QUAD_RECT = 12; private static final double LOAD_ALL_TINY_RECT = 0.5; diff --git a/OsmAnd/src/net/osmand/plus/views/layers/ExploreTopPlacesLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/ExploreTopPlacesLayer.java index 722f2643e16..bdda7a57292 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/ExploreTopPlacesLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/ExploreTopPlacesLayer.java @@ -50,6 +50,7 @@ public class ExploreTopPlacesLayer extends OsmandMapLayer implements IContextMen private Bitmap cachedSmallIconBitmap; private QuadRect requestQuadRect = null; // null means disabled + private int requestZoom = 0; // null means disabled private ExploreTopPlacesTileProvider topPlacesMapLayerProvider; @@ -113,16 +114,18 @@ public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSett boolean nightMode = settings != null && settings.isNightMode(); boolean nightModeChanged = this.nightMode != nightMode; this.nightMode = nightMode; - QuadRect cachedRect = requestQuadRect; boolean placesUpdated = false; if (requestQuadRect != null) { int exploreDataVersion = explorePlacesProvider.getDataVersion(); - if (!cachedRect.contains(tileBox.getLatLonBounds()) || cachedExploreDataVersion < exploreDataVersion || - places == null) { + if (!requestQuadRect.contains(tileBox.getLatLonBounds()) || + cachedExploreDataVersion < exploreDataVersion || places == null || + (requestZoom < tileBox.getZoom() && requestZoom < ExplorePlacesProvider.MAX_LEVEL_ZOOM_CACHE)) { placesUpdated = true; RotatedTileBox extended = tileBox.copy(); extended.increasePixelDimensions(tileBox.getPixWidth() / 2, tileBox.getPixHeight() / 2); requestQuadRect = extended.getLatLonBounds(); + requestZoom = tileBox.getZoom(); + cachedExploreDataVersion = explorePlacesProvider.getDataVersion(); places = explorePlacesProvider.getDataCollection(requestQuadRect); scheduleImageRefreshes(places); @@ -353,7 +356,8 @@ public void onPrepareLoad(Drawable placeHolderDrawable) { } public void enableLayer(boolean enable) { - requestQuadRect = enable ? new QuadRect() : null; + requestQuadRect = enable ? + new QuadRect() : null; } @Override