diff --git a/include/mapnik/feature_style_processor.hpp b/include/mapnik/feature_style_processor.hpp index 1a5a7fc44..4ae60db43 100644 --- a/include/mapnik/feature_style_processor.hpp +++ b/include/mapnik/feature_style_processor.hpp @@ -57,12 +57,12 @@ public: /*! * \brief apply renderer to all map layers. */ - void apply(); + void apply(double scale_denom_override=0.0); /*! * \brief apply renderer to a single layer, providing pre-populated set of query attribute names. */ - void apply(mapnik::layer const& lyr, std::set& names); + void apply(mapnik::layer const& lyr, std::set& names,double scale_denom_override=0.0); /*! * \brief render a layer given a projection and scale. */ diff --git a/include/mapnik/feature_style_processor_impl.hpp b/include/mapnik/feature_style_processor_impl.hpp index 3660f8fa5..4ed3a507a 100644 --- a/include/mapnik/feature_style_processor_impl.hpp +++ b/include/mapnik/feature_style_processor_impl.hpp @@ -150,7 +150,7 @@ feature_style_processor::feature_style_processor(Map const& m, double } template -void feature_style_processor::apply() +void feature_style_processor::apply(double scale_denom) { #if defined(RENDERING_STATS) std::clog << "\n//-- starting rendering timer...\n"; @@ -163,7 +163,8 @@ void feature_style_processor::apply() try { projection proj(m_.srs(),true); - double scale_denom = mapnik::scale_denominator(m_.scale(),proj.is_geographic()); + if (scale_denom <= 0.0) + scale_denom = mapnik::scale_denominator(m_.scale(),proj.is_geographic()); scale_denom *= scale_factor_; BOOST_FOREACH ( layer const& lyr, m_.layers() ) @@ -200,14 +201,17 @@ void feature_style_processor::apply() } template -void feature_style_processor::apply(mapnik::layer const& lyr, std::set& names) +void feature_style_processor::apply(mapnik::layer const& lyr, + std::set& names, + double scale_denom) { Processor & p = static_cast(*this); p.start_map_processing(m_); try { projection proj(m_.srs(),true); - double scale_denom = mapnik::scale_denominator(m_.scale(),proj.is_geographic()); + if (scale_denom <= 0.0) + scale_denom = mapnik::scale_denominator(m_.scale(),proj.is_geographic()); scale_denom *= scale_factor_; if (lyr.visible(scale_denom))