summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit1ffe63b5ab64a51dd7f3c3ddcb98e770b32b74d3 (patch)
treec479f213ce49c20984d74bf816a00d22b101c2fc
parent2bfbae53d5f59cb38388070cc31ca12dbfe40487 (diff)
downloadChimè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.js18
-rw-r--r--chimere/urls.py4
-rw-r--r--chimere/views.py4
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