diff --git a/CHANGELOG.md b/CHANGELOG.md index 7eebcb77a..33f5109e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ For a complete change history, see the git log. ## Future +- Changed scale_denominator C++ interface to take scale as first argument rather than map. + - Added support for `background-image` in cairo_renderer (#1724) - Added Layer `buffer-size` that can be used to override Map `buffer-size` to avoid diff --git a/bindings/python/mapnik_python.cpp b/bindings/python/mapnik_python.cpp index 20c719861..7ed80d58d 100644 --- a/bindings/python/mapnik_python.cpp +++ b/bindings/python/mapnik_python.cpp @@ -329,7 +329,7 @@ void render_to_file3(const mapnik::Map& map, double scale_denominator(mapnik::Map const &map, bool geographic) { - return mapnik::scale_denominator(map, geographic); + return mapnik::scale_denominator(map.scale(), geographic); } // http://docs.python.org/c-api/exceptions.html#standard-exceptions @@ -691,6 +691,7 @@ BOOST_PYTHON_MODULE(_mapnik) #endif def("scale_denominator", &scale_denominator, + (arg("map"),arg("is_geographic")), "\n" "Return the Map Scale Denominator.\n" "Also available as Map.scale_denominator()\n" diff --git a/include/mapnik/feature_style_processor_impl.hpp b/include/mapnik/feature_style_processor_impl.hpp index be4c132f6..6a003ebf0 100644 --- a/include/mapnik/feature_style_processor_impl.hpp +++ b/include/mapnik/feature_style_processor_impl.hpp @@ -157,7 +157,7 @@ void feature_style_processor::apply() try { projection proj(m_.srs(),true); - double scale_denom = mapnik::scale_denominator(m_,proj.is_geographic()); + double scale_denom = mapnik::scale_denominator(m_.scale(),proj.is_geographic()); scale_denom *= scale_factor_; BOOST_FOREACH ( layer const& lyr, m_.layers() ) @@ -191,7 +191,7 @@ void feature_style_processor::apply(mapnik::layer const& lyr, std::se try { projection proj(m_.srs(),true); - double scale_denom = mapnik::scale_denominator(m_,proj.is_geographic()); + double scale_denom = mapnik::scale_denominator(m_.scale(),proj.is_geographic()); scale_denom *= scale_factor_; if (lyr.visible(scale_denom)) diff --git a/include/mapnik/scale_denominator.hpp b/include/mapnik/scale_denominator.hpp index 85c313b5f..5ba5c4dac 100644 --- a/include/mapnik/scale_denominator.hpp +++ b/include/mapnik/scale_denominator.hpp @@ -29,7 +29,7 @@ namespace mapnik { class Map; -MAPNIK_DECL double scale_denominator(Map const& map, bool geographic); +MAPNIK_DECL double scale_denominator(double map_scale, bool geographic); } #endif // MAPNIK_SCALE_DENOMINATOR_HPP diff --git a/src/map.cpp b/src/map.cpp index 0cacb1725..a051b32ee 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -530,7 +530,7 @@ double Map::scale() const double Map::scale_denominator() const { projection map_proj(srs_); - return mapnik::scale_denominator( *this, map_proj.is_geographic()); + return mapnik::scale_denominator( scale(), map_proj.is_geographic()); } CoordTransform Map::view_transform() const diff --git a/src/scale_denominator.cpp b/src/scale_denominator.cpp index 01d1f773b..35e8f94d7 100644 --- a/src/scale_denominator.cpp +++ b/src/scale_denominator.cpp @@ -22,19 +22,18 @@ // mapnik #include -#include +#include // stl #include namespace mapnik { -static const double pi = 3.14159265359; -static const double meters_per_degree = 6378137 * 2 * pi/ 360; +static const double meters_per_degree = 6378137 * 2 * M_PI / 360; -double scale_denominator(Map const& map, bool geographic) +double scale_denominator(double map_scale, bool geographic) { - double denom = map.scale() / 0.00028; + double denom = map_scale / 0.00028; if (geographic) denom *= meters_per_degree; return denom; }