diff options
author | Marius Halden <marius.h@lden.org> | 2021-10-07 13:32:40 +0200 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2021-10-07 13:32:40 +0200 |
commit | 09dacfc6b8bf62addeee16c20b1d90c2a256da96 (patch) | |
tree | 7caa2bf9e92227ab74448f9b746dd28bbcb81b2a /web/js/map-OpenLayers.js | |
parent | 585e57484f9c6332668bf1ac0a6a3b39dbe32223 (diff) | |
parent | cea89fb87a96943708a1db0f646492fbfaaf000f (diff) |
Merge tag 'v3.1' into fiksgatami-devfiksgatami-dev
Diffstat (limited to 'web/js/map-OpenLayers.js')
-rw-r--r-- | web/js/map-OpenLayers.js | 57 |
1 files changed, 37 insertions, 20 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index 182cd79a1..ada51cbc0 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -132,20 +132,32 @@ $.extend(fixmystreet.utils, { new OpenLayers.Projection("EPSG:4326") ); - var lat = transformedLonlat.lat.toFixed(6); - var lon = transformedLonlat.lon.toFixed(6); - - document.getElementById('fixmystreet.latitude').value = lat; - document.getElementById('fixmystreet.longitude').value = lon; - + fixmystreet.maps.update_pin_input_fields(transformedLonlat); $(fixmystreet).trigger('maps:update_pin', [ lonlat ]); + var lat = transformedLonlat.lat.toFixed(6); + var lon = transformedLonlat.lon.toFixed(6); return { 'url': { 'lon': lon, 'lat': lat }, 'state': { 'lon': lonlat.lon, 'lat': lonlat.lat } }; }, + update_pin_input_fields: function(lonlat) { + var bng = lonlat.clone().transform( + new OpenLayers.Projection("EPSG:4326"), + new OpenLayers.Projection("EPSG:27700") // TODO: Handle other projections + ); + var lat = lonlat.lat.toFixed(6); + var lon = lonlat.lon.toFixed(6); + $("#problem_northing").text(bng.lat.toFixed(1)); + $("#problem_easting").text(bng.lon.toFixed(1)); + $("#problem_latitude").text(lat); + $("#problem_longitude").text(lon); + $("input[name=latitude]").val(lat); + $("input[name=longitude]").val(lon); + }, + display_around: function() { // Required after changing the size of the map element fixmystreet.map.updateSize(); @@ -278,9 +290,12 @@ $.extend(fixmystreet.utils, { // pin_moved_callback is called with a new EPSG:4326 OpenLayers.LonLat if // the user drags the pin and confirms its new location. admin_drag: function(pin_moved_callback, confirm_change) { + if (fixmystreet.maps.admin_drag_control) { + return; + } confirm_change = confirm_change || false; var original_lonlat; - var drag = new OpenLayers.Control.DragFeatureFMS( fixmystreet.markers, { + var drag = fixmystreet.maps.admin_drag_control = new OpenLayers.Control.DragFeatureFMS( fixmystreet.markers, { onStart: function(feature, e) { // Keep track of where the feature started, so we can put it // back if the user cancels the operation. @@ -627,17 +642,9 @@ $.extend(fixmystreet.utils, { // Not actually on the inspect report page return; } - fixmystreet.maps.admin_drag(function(lonlat) { - var bng = lonlat.clone().transform( - new OpenLayers.Projection("EPSG:4326"), - new OpenLayers.Projection("EPSG:27700") // TODO: Handle other projections - ); - $("#problem_northing").text(bng.y.toFixed(1)); - $("#problem_easting").text(bng.x.toFixed(1)); - $("#problem_latitude").text(lonlat.y.toFixed(6)); - $("#problem_longitude").text(lonlat.x.toFixed(6)); - $("input[name=latitude]").val(lonlat.y.toFixed(6)); - $("input[name=longitude]").val(lonlat.x.toFixed(6)); + fixmystreet.maps.admin_drag(function(geom) { + var lonlat = new OpenLayers.LonLat(geom.x, geom.y); + fixmystreet.maps.update_pin_input_fields(lonlat); }, false); } @@ -958,6 +965,8 @@ $.extend(fixmystreet.utils, { ); } else if (layer_options.matrixIds) { layer = new fixmystreet.map_type(layer_options); + } else if (fixmystreet.layer_options[i].map_type) { + layer = new fixmystreet.layer_options[i].map_type(fixmystreet.layer_name, layer_options); } else { layer = new fixmystreet.map_type(fixmystreet.layer_name, layer_options); } @@ -1278,6 +1287,9 @@ OpenLayers.Format.FixMyStreet = OpenLayers.Class(OpenLayers.Format.JSON, { var reports_list; if (typeof(obj.reports_list) != 'undefined' && (reports_list = document.getElementById('js-reports-list'))) { reports_list.innerHTML = obj.reports_list; + if (fixmystreet.loading_recheck) { + fixmystreet.loading_recheck(); + } if ( $('.item-list--reports').data('show-old-reports') ) { $('#show_old_reports_wrapper').removeClass('hidden'); } else { @@ -1318,8 +1330,13 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { // If we are looking at an individual report, and the report was // ajaxed into the DOM from the all reports page, then clicking // the map background should take us back to the all reports list. - if ($('.js-back-to-report-list').length) { - $('.js-back-to-report-list').trigger('click'); + var asset_button_clicked = $('.btn--change-asset').hasClass('asset-spot'); + if (asset_button_clicked) { + return true; + } + var back_link = $('.js-back-to-report-list'); + if (back_link.length) { + back_link.trigger('click'); return true; } |