aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/map-google.js
diff options
context:
space:
mode:
authorZarino Zappia <mail@zarino.co.uk>2016-06-20 17:08:25 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2016-07-11 15:15:36 +0100
commit898a64596ae5be52c94663ddead42641f903c4cd (patch)
treebed4d5fe6416e92119953a1f029242da79c37eb0 /web/js/map-google.js
parent8badf396faf199eec72b7b0c1790e055d23c3971 (diff)
Move to using pushState for new report.
Update the URL whenever location of pin is updated (first time, drag, or reclick), make sure it works when clicking back.
Diffstat (limited to 'web/js/map-google.js')
-rw-r--r--web/js/map-google.js50
1 files changed, 26 insertions, 24 deletions
diff --git a/web/js/map-google.js b/web/js/map-google.js
index fa2b6d90e..4c3f6188e 100644
--- a/web/js/map-google.js
+++ b/web/js/map-google.js
@@ -11,11 +11,21 @@ fixmystreet.maps = {};
(function() {
fixmystreet.maps.update_pin = function(lonlat) {
- document.getElementById('fixmystreet.latitude').value = lonlat.lat();
- document.getElementById('fixmystreet.longitude').value = lonlat.lng();
+ var lat = lonlat.lat();
+ var lon = lonlat.lng();
+ document.getElementById('fixmystreet.latitude').value = lat;
+ document.getElementById('fixmystreet.longitude').value = lon;
+ return {
+ 'url': { 'lon': lon, 'lat': lat },
+ 'state': { 'lon': lon, 'lat': lat }
+ };
};
fixmystreet.maps.begin_report = function(lonlat) {
+ if (typeof lonlat.lat !== 'function') {
+ lonlat = new google.maps.LatLng(lonlat.lat, lonlat.lon);
+ }
+
if (fixmystreet.page == 'new') {
/* Already have a pin */
fixmystreet.report_marker.setPosition(lonlat);
@@ -35,6 +45,15 @@ fixmystreet.maps = {};
fixmystreet.markers[m].setMap(null);
}
}
+ return lonlat;
+ };
+
+ fixmystreet.maps.display_around = function() {
+ if (fixmystreet.report_marker) {
+ fixmystreet.report_marker.setMap(null);
+ }
+ fixmystreet.event_update_map = google.maps.event.addListener(fixmystreet.map, 'idle', update_pins);
+ google.maps.event.trigger(fixmystreet.map, 'idle');
};
function PaddingControl(div) {
@@ -81,6 +100,11 @@ fixmystreet.maps = {};
}
function map_clicked(e) {
+ if ($('.js-back-to-report-list').length) {
+ $('.js-back-to-report-list').trigger('click');
+ return true;
+ }
+
var lonlat = e.latLng;
fixmystreet.display.begin_report(lonlat);
}
@@ -148,28 +172,6 @@ fixmystreet.maps = {};
var l = google.maps.event.addListener(fixmystreet.map, 'click', map_clicked);
}
- $(window).hashchange(function(){
- if (location.hash && location.hash != '#') {
- return;
- }
-
- // Okay, back to around view.
- fixmystreet.report_marker.setMap(null);
- fixmystreet.event_update_map = google.maps.event.addListener(fixmystreet.map, 'idle', update_pins);
- google.maps.event.trigger(fixmystreet.map, 'idle');
- if ( fixmystreet.state_pins_were_hidden ) {
- // If we had pins hidden when we clicked map (which had to show the pin layer as I'm doing it in one layer), hide them again.
- $('#hide_pins_link').click();
- }
- $('#side-form').hide();
- $('#side').show();
- $('#sub_map_links').show();
- //only on mobile
- $('#mob_sub_map_links').remove();
- $('.mobile-map-banner').html('<a href="/">' + translation_strings.home + '</a> ' + translation_strings.place_pin_on_map);
- fixmystreet.page = 'around';
- });
-
if ( fixmystreet.area.length ) {
for (var i=0; i<fixmystreet.area.length; i++) {
var args = {