Commits

Anonymous committed 01802fe

[1.2.X] Fixed #15533 -- Now use 3857 as spherical mercator projection instead of deprecated 900913 on platforms that support it. Thanks to cnorthwood for bug report and Christopher Schmidt for OpenLayers JavaScript workaround.

Backport of r15845 from trunk.

  • Participants
  • Parent commits 1a51f30
  • Branches releases/1.2.X

Comments (0)

Files changed (2)

django/contrib/gis/admin/options.py

 
 from django.contrib.gis import gdal
 if gdal.HAS_GDAL:
+    # Use the official spherical mercator projection SRID on versions
+    # of GDAL that support it; otherwise, fallback to 900913
+    if gdal.GDAL_VERSION >= (1, 7):
+        spherical_mercator_srid = 3857
+    else:
+        spherical_mercator_srid = 900913
+
     class OSMGeoAdmin(GeoModelAdmin):
         map_template = 'gis/admin/osm.html'
         extra_js = ['http://openstreetmap.org/openlayers/OpenStreetMap.js']
         num_zoom = 20
-        map_srid = 900913
+        map_srid = spherical_mercator_srid
         max_extent = '-20037508,-20037508,20037508,20037508'
         max_resolution = '156543.0339'
         point_zoom = num_zoom - 6

django/contrib/gis/templates/gis/admin/openlayers.js

 {# Author: Justin Bronn, Travis Pinney & Dane Springmeyer #}
+OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:3857", OpenLayers.Layer.SphericalMercator.projectForward);
 {% block vars %}var {{ module }} = {};
 {{ module }}.map = null; {{ module }}.controls = null; {{ module }}.panel = null; {{ module }}.re = new RegExp("^SRID=\d+;(.+)", "i"); {{ module }}.layers = {};
 {{ module }}.modifiable = {{ modifiable|yesno:"true,false" }};