summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js8
-rw-r--r--chimere/templates/chimere/blocks/map_params.html3
-rw-r--r--chimere/templatetags/chimere_tags.py5
-rw-r--r--chimere/widgets.py23
4 files changed, 33 insertions, 6 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 2d3d450..b2de3de 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -41,6 +41,7 @@ See the file COPYING for details.
permalink_div: null,
permalink: null, // OL Control, could be overrided
map_layers: null,
+ selected_map_layer: null,
dynamic_categories: false,
display_submited: false,
display_feature: null,
@@ -146,6 +147,12 @@ See the file COPYING for details.
settings.map.addControl(new OpenLayers.Control.LayerSwitcher(
{roundedCorner:false}));
}
+ /* select the default map layer */
+ if (!settings.selected_map_layer){
+ settings.selected_map_layer = 0;
+ }
+ settings.map.setBaseLayer(
+ settings.map_layers[settings.selected_map_layer]);
/* Vectors layer */
settings.layerVectors = new OpenLayers.Layer.Vector("Vector Layer");
settings.map.addLayer(settings.layerVectors);
@@ -183,6 +190,7 @@ See the file COPYING for details.
settings.map.setCenter(CENTER_LONLAT, DEFAULT_ZOOM);
}
}
+
if (!settings.edition){
methods.loadCategories();
methods.loadGeoObjects();
diff --git a/chimere/templates/chimere/blocks/map_params.html b/chimere/templates/chimere/blocks/map_params.html
index 6deeb0d..f05485d 100644
--- a/chimere/templates/chimere/blocks/map_params.html
+++ b/chimere/templates/chimere/blocks/map_params.html
@@ -24,6 +24,9 @@
{% if restricted_extent %}{{ restricted_extent }}
chimere_init_options["restricted_extent"] = bounds;
{% endif %}
+ {% if selected_map_layer %}
+ chimere_init_options["selected_map_layer"] = {{selected_map_layer}};
+ {% endif %}
$("#main-map").chimere(chimere_init_options);
{% if zoom %}
$('#maps').chimere('zoom', {'area':{{zoom}} });
diff --git a/chimere/templatetags/chimere_tags.py b/chimere/templatetags/chimere_tags.py
index 6785c57..bf7d97c 100644
--- a/chimere/templatetags/chimere_tags.py
+++ b/chimere/templatetags/chimere_tags.py
@@ -113,7 +113,10 @@ def map_params(context):
context_data['icon_width'] = settings.CHIMERE_ICON_WIDTH
context_data['icon_height'] = settings.CHIMERE_ICON_HEIGHT
area_name = context['area_name'] if 'area_name' in context else 'area_name'
- context_data['map_layers'] = ", ".join(get_map_layers(area_name))
+ map_layers, default_area = get_map_layers(area_name)
+ context_data['map_layers'] = ", ".join(map_layers)
+ if default_area:
+ context_data['selected_map_layer'] = default_area
context_data['p_checked_categories'] = "[]"
area = None
if area_name:
diff --git a/chimere/widgets.py b/chimere/widgets.py
index 7209102..ab827d8 100644
--- a/chimere/widgets.py
+++ b/chimere/widgets.py
@@ -65,14 +65,21 @@ def get_map_layers(area_name=''):
area = Area.objects.get(default=True)
except ObjectDoesNotExist:
pass
- map_layers = []
+ map_layers, default = [], None
if area and area.layers.count():
- map_layers = [layer.layer_code for layer in area.layers.all()]
+ map_layers = [layer.layer_code
+ for layer in area.layers.order_by('arealayers__order').all()]
+ def_layer = area.layers.filter(arealayers__default=True)
+ if def_layer.count():
+ def_layer = def_layer.all()[0]
+ for order, map_layer in enumerate(map_layers):
+ if map_layer == def_layer.layer_code:
+ default = order
elif settings.CHIMERE_DEFAULT_MAP_LAYER:
map_layers = [settings.CHIMERE_DEFAULT_MAP_LAYER]
else:
map_layers = ["new OpenLayers.Layer.OSM.Mapnik('Mapnik')"]
- return map_layers
+ return map_layers, default
class ChosenSelectWidget(forms.Select):
"""
@@ -144,7 +151,7 @@ class PointChooserWidget(forms.TextInput):
value = None
else:
value = None
- map_layers = get_map_layers(area_name)
+ map_layers, default_area = get_map_layers(area_name)
js = """
OpenLayers.ImgPath = '%schimere/img/';
var EPSG_DISPLAY_PROJECTION = epsg_display_projection = new OpenLayers.Projection('EPSG:%s');
@@ -161,6 +168,9 @@ class PointChooserWidget(forms.TextInput):
settings.CHIMERE_EPSG_PROJECTION, settings.CHIMERE_DEFAULT_CENTER,
settings.CHIMERE_DEFAULT_ZOOM, settings.STATIC_URL,
", ".join(map_layers))
+ if default_area:
+ js += "chimere_init_options['selected_map_layer'] = %d;\n" % \
+ default_area
#TODO: manage area
tpl = u"<script type='text/javascript'><!--\n"\
u"%s// !--></script>\n" % js
@@ -220,7 +230,7 @@ class RouteChooserWidget(forms.TextInput):
Render a map and latitude, longitude information field
'''
tpl = getMapJS(area_name)
- map_layers = get_map_layers(area_name)
+ map_layers, default_area = get_map_layers(area_name)
js = """
OpenLayers.ImgPath = '%schimere/img/';
var EPSG_DISPLAY_PROJECTION = epsg_display_projection = new OpenLayers.Projection('EPSG:%s');
@@ -236,6 +246,9 @@ class RouteChooserWidget(forms.TextInput):
""" % (settings.STATIC_URL, settings.CHIMERE_EPSG_DISPLAY_PROJECTION,
settings.CHIMERE_EPSG_PROJECTION, settings.CHIMERE_DEFAULT_CENTER,
settings.CHIMERE_DEFAULT_ZOOM, ", ".join(map_layers))
+ if default_area:
+ js += "chimere_init_options['selected_map_layer'] = %d;\n" % \
+ default_area
tpl = u"<script type='text/javascript'><!--\n"\
u"%s// !--></script>\n" % js
#TODO: manage area