diff options
-rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 66 |
1 files changed, 31 insertions, 35 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index a8e4df8..1e6daf0 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -285,7 +285,8 @@ jQuery.expr[":"].hovering = function(elem) { icon_step: null, icon_end: null, mobile: false, - input_id: 'id_point' + input_id: 'id_point', + animation_duration: 250 }; var settings = {}; /* @@ -556,16 +557,8 @@ jQuery.expr[":"].hovering = function(elem) { var popup_options = { element: settings.popup_item, positioning: 'bottom-left', - stopEvent: false/*, - autoPan: true, - autoPanAnimation: { - duration: 250 - }*/ + stopEvent: false } - /*if (settings.popupContentFull){ - popup_options['autoPan'] = true; - popup_options['autoPanAnimation'] = 250; - }*/ settings.popup = new ol.Overlay(popup_options); settings.map.addOverlay(settings.popup); @@ -918,26 +911,6 @@ jQuery.expr[":"].hovering = function(elem) { methods.preload_images(); }, // end of init - /* - _panAndZoom: function(map, zoom_in, coordinates){ - var view = map.getView(); - var currentResolution = view.getResolution(); - var delta = zoom_in ? 1 : -1; - var pan = ol.animation.pan({ - duration: 500, - source: view.getCenter(), - easing: ol.easing.easeOut - }); - var zoom = ol.animation.zoom({ - resolution: currentResolution, - duration: 500, - easing: ol.easing.easeOut - }); - map.beforeRender(pan,zoom); - var newResolution = view.constrainResolution(currentResolution, delta); - view.setResolution(newResolution); - view.setCenter(coordinates); - },*/ register_reload_on_move: function(){ var reload_on_move = function(evnt){ settings._revision += 1; @@ -1057,7 +1030,10 @@ jQuery.expr[":"].hovering = function(elem) { }, clickOnCluster: function(feature, zoom_level, duration, nb_zoom, current_nb_items){ - if (!duration) duration = 500; + if (!duration){ + // zoom animation must be slower + duration = settings.animation_duration * 2; + } if (!nb_zoom) nb_zoom = 0; var props = feature.getProperties(); @@ -2445,6 +2421,8 @@ jQuery.expr[":"].hovering = function(elem) { if (settings.area_id) uri += settings.area_id + "/" uri += "getDetail/"; if (settings.popupContentFull){ + // only display when fully loaded + $(".popover").addClass('transparent'); uri += "popup/"; } uri += key; @@ -2467,8 +2445,6 @@ jQuery.expr[":"].hovering = function(elem) { var w = $('.popover').width(); var h = $('.popover').height(); $(".popover").addClass('inside-popup'); - // firts display is not user visible - $(".popover").addClass('transparent'); $(".popover-title").html(name); $(".popover-title").show(); $(".popover-content").html(data); @@ -2477,10 +2453,30 @@ jQuery.expr[":"].hovering = function(elem) { offset[1] = offset[1] - $('.popover').height() + h; settings.popup.setOffset(offset); settings.popup.dispatchEvent('change:offset'); - $(".popover").removeClass('transparent'); - register_hovering('.popover-content', + // pan toward the popup + margin to display pop height + var center_position = settings.popup.getPosition(); + var doc_height = $(document).height(); + if (doc_height / 2 < - offset[1]*2){ + var pixel = settings.map.getPixelFromCoordinate(center_position); + pixel[1] += offset[1] + doc_height / 4; + center_position = settings.map.getCoordinateFromPixel(pixel); + } + var pan = ol.animation.pan( + {duration: settings.animation_duration, + source: settings.view.getCenter()}) + settings.map.beforeRender(pan); + settings.view.setCenter(center_position); + + // waiting for the pan to finish + setTimeout(function(){ + // to trigger autopan + settings.popup.dispatchEvent('change:position'); + $(".popover").removeClass('transparent'); + register_hovering('.popover-content', [settings.MouseWheelZoom, settings.DragPan]); + }, settings.animation_duration + 10 + ); } } } |