]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/welcome.js
Add a "Start Mapping" button
[rails.git] / app / assets / javascripts / welcome.js
diff --git a/app/assets/javascripts/welcome.js b/app/assets/javascripts/welcome.js
new file mode 100644 (file)
index 0000000..5409c9e
--- /dev/null
@@ -0,0 +1,54 @@
+$(document).ready(function() {
+  var params = OSM.params();
+
+  if (params.lat && params.lon) {
+    $('.edit-located').show();
+
+    $.ajax({
+      url: "http://nominatim.openstreetmap.org/reverse",
+      data: {
+        lat: params.lat,
+        lon: params.lon,
+        zoom: 10
+      },
+      success: function(xml) {
+        var result = $(xml).find('result');
+        if (result.length) {
+          $('.edit-located').hide();
+          $('.edit-geocoded').show();
+          $('.edit-geocoded-location').text(result.text());
+        }
+      }
+    });
+
+    $('.start-mapping').on('click', function(e) {
+      window.location = '/edit?zoom=17&lat=' + params.lat + '&lon=' + params.lon;
+    });
+
+  } else if (navigator.geolocation) {
+    $('.edit-geolocated').show();
+
+    function geoSuccess(position) {
+      window.location = '/edit?zoom=17&lat=' + position.coords.latitude + '&lon=' + position.coords.longitude;
+    }
+
+    function geoError() {
+      $('.start-mapping')
+        .removeClass('loading')
+        .addClass('error');
+    }
+
+    $('.start-mapping').on('click', function(e) {
+      e.preventDefault();
+
+      $('.start-mapping')
+        .addClass('loading');
+
+      // handle firefox's weird implementation
+      // https://bugzilla.mozilla.org/show_bug.cgi?id=675533
+      window.setTimeout(geoError, 4000);
+
+      navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
+    });
+  }
+});