]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index/directions.js
Swap cached reverse geocodes when reversing directions
[rails.git] / app / assets / javascripts / index / directions.js
index 3f78c708945147f08df780715d320c66a56a8625..df56771055c51db6870db4c1a016b7a4f399349e 100644 (file)
@@ -65,16 +65,16 @@ OSM.Directions = function (map) {
     if (coordTo) {
       routeTo = coordTo.lat + "," + coordTo.lng;
     }
+    endpoints[0].swapCachedReverseGeocodes(endpoints[1]);
 
     OSM.router.route("/directions?" + Qs.stringify({
-      from: $("#route_to").val(),
-      to: $("#route_from").val(),
       route: routeTo + ";" + routeFrom
     }));
   });
 
   $(".directions_form .btn-close").on("click", function (e) {
     e.preventDefault();
+    $(".describe_location").toggle(!endpoints[0].value);
     $(".search_form input[name='query']").val(endpoints[0].value);
     OSM.router.route("/" + OSM.formatHash(map));
   });
@@ -286,13 +286,14 @@ OSM.Directions = function (map) {
       var ll = map.containerPointToLatLng(pt);
       var precision = OSM.zoomPrecision(map.getZoom());
       var value = ll.lat.toFixed(precision) + ", " + ll.lng.toFixed(precision);
-      endpoints[type === "from" ? 0 : 1].setValue(value, ll);
+      endpoints[type === "from" ? 0 : 1].setValue(value);
     });
 
+    endpoints[0].enable();
+    endpoints[1].enable();
+
     var params = Qs.parse(location.search.substring(1)),
-        route = (params.route || "").split(";"),
-        from = route[0] && L.latLng(route[0].split(",")),
-        to = route[1] && L.latLng(route[1].split(","));
+        route = (params.route || "").split(";");
 
     if (params.engine) {
       var engineIndex = findEngine(params.engine);
@@ -302,10 +303,10 @@ OSM.Directions = function (map) {
       }
     }
 
-    endpoints[0].setValue(params.from || "", from);
-    endpoints[1].setValue(params.to || "", to);
+    endpoints[0].setValue(params.from || route[0] || "");
+    endpoints[1].setValue(params.to || route[1] || "");
 
-    map.setSidebarOverlaid(!from || !to);
+    map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng);
   };
 
   page.load = function () {
@@ -317,11 +318,12 @@ OSM.Directions = function (map) {
     $(".directions_form").hide();
     $("#map").off("dragend dragover drop");
 
+    endpoints[0].disable();
+    endpoints[1].disable();
+
     map
       .removeLayer(popup)
-      .removeLayer(polyline)
-      .removeLayer(endpoints[0].marker)
-      .removeLayer(endpoints[1].marker);
+      .removeLayer(polyline);
   };
 
   return page;