diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-23 17:47:23 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-04-23 17:47:23 +0200 |
commit | 1ffe63b5ab64a51dd7f3c3ddcb98e770b32b74d3 (patch) | |
tree | c479f213ce49c20984d74bf816a00d22b101c2fc | |
parent | 2bfbae53d5f59cb38388070cc31ca12dbfe40487 (diff) | |
download | Chimère-1ffe63b5ab64a51dd7f3c3ddcb98e770b32b74d3.tar.bz2 Chimère-1ffe63b5ab64a51dd7f3c3ddcb98e770b32b74d3.zip |
Allow to load static JSON overlay layers
-rw-r--r-- | chimere/static/chimere/js/jquery.chimere-leaflet.js | 18 | ||||
-rw-r--r-- | chimere/urls.py | 4 | ||||
-rw-r--r-- | chimere/views.py | 4 |
3 files changed, 23 insertions, 3 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere-leaflet.js b/chimere/static/chimere/js/jquery.chimere-leaflet.js index b48a54e..f0ae75f 100644 --- a/chimere/static/chimere/js/jquery.chimere-leaflet.js +++ b/chimere/static/chimere/js/jquery.chimere-leaflet.js @@ -105,7 +105,8 @@ See the file COPYING for details. 'marker-cluster-large', 'marker-cluster-xlarge', 'marker-cluster-xxlarge' - ) + ), + extra_json_data: null }; var settings = {}; /* @@ -126,12 +127,13 @@ See the file COPYING for details. for (idx=0 ; idx < settings.map_layers.length ; idx++){ map_layers[settings.map_layer_names[idx]] = settings.map_layers[idx]; } - L.control.layers(map_layers).addTo(map); + settings.layer_control = L.control.layers(map_layers).addTo(map); if(settings.zoom && settings.lat && settings.lon){ map.setView([settings.lat, settings.lon], settings.zoom); } else { map.fitWorld(); } + settings.icons = new Object(); if (settings.enable_clustering){ settings.NumberedDivIcon = L.Icon.extend({ @@ -246,6 +248,18 @@ See the file COPYING for details. methods.loadCategories(); methods.loadGeoObjects(); + if (settings.extra_json_data){ + for (idx=0;idx<settings.extra_json_data.length;idx++){ + var json_data = settings.extra_json_data[idx]; + $.getJSON(json_data['url'], function(data) { + var geojsonLayer = new L.GeoJSON(data,{ + style:json_data['style'] + }); + settings.layer_control.addOverlay(geojsonLayer, + json_data['name']); + }); + } + } }, hidePopup: function (evt) { settings.map.closePopup(); diff --git a/chimere/urls.py b/chimere/urls.py index 164ef68..b0c01d7 100644 --- a/chimere/urls.py +++ b/chimere/urls.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as @@ -103,6 +103,8 @@ urlpatterns += patterns('chimere.views', 'processRouteFile', name='process_route_file'), url(r'^(?P<area_name>[a-zA-Z0-9_-]+/)?dyn/(?P<page_id>\w+)/$', 'extraPage', name='extra_page'), + url(r'^(?P<area_name>[a-zA-Z0-9_-]+/)?json/(?P<app_name>[a-zA-Z0-9_-]+)/(?P<filename>[a-zA-Z0-9_-]+).json$', 'get_json', + name='get-json'), # At the end, because it catches large url(r'^(?P<area_name>[a-zA-Z0-9_-]+)?', 'index', name="index"), ) diff --git a/chimere/views.py b/chimere/views.py index 136f34a..f58b7ec 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -828,6 +828,10 @@ def route(request, area_name, lon1, lat1, lonlat_steps, lon2, lat2, message) return HttpResponse(data) +def get_json(request, area_name='', app_name='', filename=''): + return HttpResponse(open(settings.STATIC_ROOT+app_name+'/json/'+filename+'.json'), + 'application/javascript', status=200) + def rss(request, area_name=''): ''' Redirect to RSS subscription page |