diff --git a/static/css/map.css b/static/css/map.css
index 8875f35c904c588fd9076087ba99d403a4028c06..5680d427d6e6f3484f413b0d180df02ca355666b 100644
--- a/static/css/map.css
+++ b/static/css/map.css
@@ -26,6 +26,7 @@ html, body {
     position: absolute;
     bottom: 10px;
     left: 10px;
+    z-index: 5000;
 }
 #locate a {
     text-decoration: none;
@@ -75,6 +76,7 @@ html, body {
     border-left: 1px solid #eee;
     border-top-left-radius: 3px;
     color: #eee;
+    z-index: 5000;
 }
 #map .leaflet-control-zoom,
 #map .leaflet-control-zoom a {
diff --git a/static/js/map.js b/static/js/map.js
index 621909e90645a9255a0c58e8d0f4c099afb8dca9..d8a1ecb581f5f44cceaaca375b5eba0ed18304d4 100644
--- a/static/js/map.js
+++ b/static/js/map.js
@@ -32,8 +32,6 @@ BusMap.Map = function(opts) {
 
         // Go to view requested by URL hash (if set)
         var viewOk = that.setViewFromUrlHash();
-        // And watch for updates
-        $(window).bind('hashchange', that.setViewFromUrlHash);
 
         if (!viewOk) {
             // Restore the user's last view (if exists).
@@ -208,6 +206,7 @@ BusMap.Map = function(opts) {
         for (v in that.vehicleMarkers) {
             var min_updated = Date.now() - (that.vehicleMaxAge * 1000)
             if (that.vehicleMarkers[v].bm_updated < min_updated) {
+                that.leaflet.removeLayer(that.vehicleMarkers[v]);
                 delete that.vehicleMarkers[v];
             }
         }