aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2013-02-21 09:56:31 +0000
committerMatthew Somerville <matthew@mysociety.org>2013-02-21 09:56:31 +0000
commitdd559d8557ca1d33464cabb5cff205f7fe42561d (patch)
tree15fa52dbdcb9a45104fde76e8ea836557b0e72ed /web
parent8445467dfacebc3f4ce202bc7fe97bf3aa4e8399 (diff)
Treat link from report page to around page as permalink to maintain state better.
Diffstat (limited to 'web')
-rw-r--r--web/js/map-OpenLayers.js14
-rw-r--r--web/js/map-wmts-zurich.js5
2 files changed, 18 insertions, 1 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 88dc6d69e..e28a4d982 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -418,7 +418,19 @@ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink,
href = href.substring( 0, href.indexOf(separator) );
}
- href += separator + OpenLayers.Util.getParameterString(this.createParams(null, this.map.getZoom()+fixmystreet.zoomOffset));
+ var center = this.map.getCenter();
+ if ( center && fixmystreet.state_map && fixmystreet.state_map == 'full' ) {
+ // Translate the permalink co-ords so that 'centre' is accurate
+ var $content = $('.content'), mb = $('#map_box'),
+ q = ( $content.offset().left - mb.offset().left + $content.width() ) / 2;
+ if (q < 0) { q = 0; }
+ var p = this.map.getViewPortPxFromLonLat(center);
+ p.x += q;
+ p.y += 25;
+ center = this.map.getLonLatFromViewPortPx(p);
+ }
+
+ href += separator + OpenLayers.Util.getParameterString(this.createParams(center, this.map.getZoom()+fixmystreet.zoomOffset));
// Could use mlat/mlon here as well if we are on a page with a marker
if (this.anchor && !this.element) {
window.location.href = href;
diff --git a/web/js/map-wmts-zurich.js b/web/js/map-wmts-zurich.js
index eb7678c40..9fed68b8a 100644
--- a/web/js/map-wmts-zurich.js
+++ b/web/js/map-wmts-zurich.js
@@ -71,6 +71,11 @@ $(function(){
fixmystreet.controls.push( new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) );
}
+ /* Linking back to around from report page, keeping track of map moves */
+ if ( fixmystreet.page == 'report' ) {
+ fixmystreet.controls.push( new OpenLayers.Control.PermalinkFMS('key-tool-problems-nearby', '/around') );
+ }
+
fixmystreet.map_type = OpenLayers.Layer.WMTS;
// Set DPI - default is 72