diff options
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 8 | ||||
| -rw-r--r-- | chimere/templates/chimere/blocks/map_params.html | 3 | ||||
| -rw-r--r-- | chimere/templatetags/chimere_tags.py | 5 | ||||
| -rw-r--r-- | chimere/widgets.py | 23 |
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 |
