[core] Respect minzoom and maxzoom properties

Fixes #5811
This commit is contained in:
Thiago Marcos P. Santos
2016-07-29 15:18:21 +03:00
parent de0cb554d6
commit 045a644a7d
3 changed files with 7 additions and 4 deletions

View File

@@ -21,8 +21,11 @@ bool Layer::Impl::hasRenderPass(RenderPass pass) const {
return bool(passes & pass);
}
bool Layer::Impl::needsRendering() const {
return passes != RenderPass::None && visibility != VisibilityType::None;
bool Layer::Impl::needsRendering(float zoom) const {
return passes != RenderPass::None
&& visibility != VisibilityType::None
&& minZoom <= zoom
&& maxZoom >= zoom;
}
} // namespace style

View File

@@ -64,7 +64,7 @@ public:
bool hasRenderPass(RenderPass) const;
// Checks whether this layer can be rendered.
bool needsRendering() const;
bool needsRendering(float zoom) const;
virtual float getQueryRadius() const { return 0; }
virtual bool queryIntersectsGeometry(

View File

@@ -223,7 +223,7 @@ void Style::recalculate(float z, const TimePoint& timePoint, MapMode mode) {
hasPendingTransitions |= layer->baseImpl->recalculate(parameters);
Source* source = getSource(layer->baseImpl->source);
if (source && layer->baseImpl->needsRendering()) {
if (source && layer->baseImpl->needsRendering(z)) {
source->baseImpl->enabled = true;
if (!source->baseImpl->loaded) {
source->baseImpl->load(fileSource);