summaryrefslogtreecommitdiff
path: root/chimere
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-01 17:36:19 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-01 17:36:19 +0200
commit7ddf224de3f1f751f00ebc883404f1424f018c3e (patch)
treef26138d1be9bc793e3ded53b569edc2d1192354f /chimere
parent9cd091b6a77953c83f5dc9a09682c758b9667300 (diff)
downloadChimère-7ddf224de3f1f751f00ebc883404f1424f018c3e.tar.bz2
Chimère-7ddf224de3f1f751f00ebc883404f1424f018c3e.zip
JS: load only visible (+cache) items - reload on move
Diffstat (limited to 'chimere')
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index e180682..2fd94a4 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -159,6 +159,7 @@ function transform(obj) {
map_layers: null,
selected_map_layer: null,
dynamic_categories: false,
+ reload_on_move: true,
display_submited: false,
display_feature: null,
display_route: null,
@@ -831,6 +832,35 @@ function transform(obj) {
$("#permalink a").attr("disabled", "disabled");
}
},
+ register_reload_on_move: function(){
+ var reload_on_move = function(evnt){
+ var map = settings.map;
+ var current_extent = ol.proj.transformExtent(
+ map.getView().calculateExtent(map.getSize()),
+ EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION
+ );
+
+ var init;
+ if (!settings._cache_boundingbox) init = true;
+
+ if (init ||
+ !ol.extent.containsCoordinate(settings._cache_boundingbox,
+ current_extent)){
+ // enlarge current extent to cache values
+ x_extent = Math.abs(current_extent[2] - current_extent[0]);
+ y_extent = Math.abs(current_extent[3] - current_extent[1]);
+ current_extent[0] = current_extent[0] - x_extent;
+ current_extent[1] = current_extent[1] - y_extent;
+ current_extent[2] = current_extent[2] + x_extent;
+ current_extent[3] = current_extent[3] + y_extent;
+ settings._cache_boundingbox = current_extent;
+
+ if(!init) methods.loadGeoObjects();
+ }
+ };
+ settings.map.on('moveend', reload_on_move);
+ reload_on_move();
+ },
/* Preload icons */
preload_images: function(){
if (typeof extra_url == 'undefined') return;
@@ -1006,8 +1036,23 @@ function transform(obj) {
if (!ids) ids = '0';
var uri = extra_url + "getGeoObjects/" + ids;
if (settings.display_submited) uri += "/A_S";
+
+ if (settings.reload_on_move && !settings._cache_boundingbox){
+ methods.register_reload_on_move();
+ }
+
+ var data = {};
+ if (settings._cache_boundingbox){
+ data = {
+ 'min_lon': settings._cache_boundingbox[0],
+ 'min_lat': settings._cache_boundingbox[1],
+ 'max_lon': settings._cache_boundingbox[2],
+ 'max_lat': settings._cache_boundingbox[3],
+ };
+ }
$.ajax({url: uri,
dataType: "json",
+ data: data,
success: function (data) {
//var start = new Date().getTime();
settings.dbFeatures.clear();