diff options
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/assets.js | 7 | ||||
-rw-r--r-- | web/js/map-OpenLayers.js | 4 |
3 files changed, 10 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 51dcc36c4..330b578c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Add minimum password length and common password checking. - Nicer display of national phone numbers. - 'Report as another user' allows phone number without email. #1978 + - Display loading spinner on map when asset layers are loading. #1991 - Bugfixes: - Fix bug specifying category in URL on /around. #1950 - Fix bug with multiple select-multiples on a page. #1951 diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js index dd76a8e8f..e24e76495 100644 --- a/web/cobrands/fixmystreet/assets.js +++ b/web/cobrands/fixmystreet/assets.js @@ -306,6 +306,8 @@ fixmystreet.add_assets = function(options) { }; OpenLayers.Util.applyDefaults(lo, layer_options); asset_fault_layer = new OpenLayers.Layer.Vector("WFS", lo); + asset_fault_layer.events.register( 'loadstart', null, fixmystreet.maps.loading_spinner.show); + asset_fault_layer.events.register( 'loadend', null, fixmystreet.maps.loading_spinner.hide); asset_layer.fixmystreet.fault_layer = asset_fault_layer; } @@ -316,6 +318,11 @@ fixmystreet.add_assets = function(options) { asset_layer.events.register( 'loadend', asset_layer, layer_loadend); asset_layer.events.register( 'visibilitychanged', asset_layer, layer_visibilitychanged); fixmystreet.map.events.register( 'zoomend', asset_layer, check_zoom_message_visibility); + + // Make sure the user knows something is happening (some asset layers can be sllooowwww) + asset_layer.events.register( 'loadstart', null, fixmystreet.maps.loading_spinner.show); + asset_layer.events.register( 'loadend', null, fixmystreet.maps.loading_spinner.hide); + // Set up handlers for simply hovering over a street light marker var hover_feature_control = new OpenLayers.Control.SelectFeature( asset_layer, diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index af62de34a..0f6cca2b5 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -568,6 +568,8 @@ $.extend(fixmystreet.utils, { fixmystreet.map.removePopup(fixmystreet.map.popups[0]); } }); + fixmystreet.markers.events.register( 'loadstart', null, fixmystreet.maps.loading_spinner.show); + fixmystreet.markers.events.register( 'loadend', null, fixmystreet.maps.loading_spinner.hide); var markers = fixmystreet.maps.markers_list( fixmystreet.pins, true ); fixmystreet.markers.addFeatures( markers ); @@ -877,7 +879,6 @@ OpenLayers.Protocol.FixMyStreet = OpenLayers.Class(OpenLayers.Protocol.HTTP, { use_page: false, read: function(options) { - fixmystreet.maps.loading_spinner.show(); // Pass the values of the category, status, and sort fields as query params options.params = options.params || {}; $.each({ filter_category: 'filter_categories', status: 'statuses', sort: 'sort' }, function(key, id) { @@ -905,7 +906,6 @@ OpenLayers.Protocol.FixMyStreet = OpenLayers.Class(OpenLayers.Protocol.HTTP, { /* Pan data handler */ OpenLayers.Format.FixMyStreet = OpenLayers.Class(OpenLayers.Format.JSON, { read: function(json, filter) { - fixmystreet.maps.loading_spinner.hide(); var obj; if (typeof json == 'string') { obj = OpenLayers.Format.JSON.prototype.read.apply(this, [json, filter]); |