summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Bronn <jbronn@gmail.com>2011-03-16 02:58:35 +0000
committerJustin Bronn <jbronn@gmail.com>2011-03-16 02:58:35 +0000
commitebd5682989f5929bdfc645bcbd36f57d182be233 (patch)
tree82b599d5bd54ffc0aa82f62f79c7cbc4fc563a04
parent10e1f5d1d29cb9561bdf6cdd90863048e2ed7973 (diff)
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.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15845 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/gis/admin/options.py9
-rw-r--r--django/contrib/gis/templates/gis/admin/openlayers.js1
2 files changed, 9 insertions, 1 deletions
diff --git a/django/contrib/gis/admin/options.py b/django/contrib/gis/admin/options.py
index ae8fda5a29..8e1faf2374 100644
--- a/django/contrib/gis/admin/options.py
+++ b/django/contrib/gis/admin/options.py
@@ -113,11 +113,18 @@ class GeoModelAdmin(ModelAdmin):
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://www.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
diff --git a/django/contrib/gis/templates/gis/admin/openlayers.js b/django/contrib/gis/templates/gis/admin/openlayers.js
index 4324693c78..c455bffd58 100644
--- a/django/contrib/gis/templates/gis/admin/openlayers.js
+++ b/django/contrib/gis/templates/gis/admin/openlayers.js
@@ -1,4 +1,5 @@
{# 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" }};