aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/map-OpenLayers.js
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2021-10-07 13:32:40 +0200
committerMarius Halden <marius.h@lden.org>2021-10-07 13:32:40 +0200
commit09dacfc6b8bf62addeee16c20b1d90c2a256da96 (patch)
tree7caa2bf9e92227ab74448f9b746dd28bbcb81b2a /web/js/map-OpenLayers.js
parent585e57484f9c6332668bf1ac0a6a3b39dbe32223 (diff)
parentcea89fb87a96943708a1db0f646492fbfaaf000f (diff)
Merge tag 'v3.1' into fiksgatami-devfiksgatami-dev
Diffstat (limited to 'web/js/map-OpenLayers.js')
-rw-r--r--web/js/map-OpenLayers.js57
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;
}