]> git.openstreetmap.org Git - rails.git/commitdiff
generate short link kind of
authorTom MacWright <tom@macwright.org>
Mon, 10 Jun 2013 19:35:10 +0000 (12:35 -0700)
committerJohn Firebaugh <john.firebaugh@gmail.com>
Thu, 18 Jul 2013 17:31:20 +0000 (10:31 -0700)
app/assets/javascripts/application.js
app/assets/javascripts/index.js
app/assets/javascripts/leaflet.share.js

index 62c13bb9ed9ffb6c370df5aa3d68593261924c43..a9c76d17f9dec28c353231cd8faf8df5bb2f96a4 100644 (file)
@@ -44,7 +44,10 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,object) {
     maxlat = toPrecision(maxlat);
   }
 
-  $(".geolink").each(function (index, link) {
+  $(".geolink").each(setGeolink);
+  $("#shortlinkanchor").each(setShortlink);
+
+  function setGeolink(index, link) {
     var args = getArgs(link.href);
 
     if ($(link).hasClass("llz")) {
@@ -80,9 +83,9 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,object) {
     }
 
     link.href = setArgs(link.href, args);
-  });
+  }
 
-  $("#shortlinkanchor").each(function () {
+  function setShortlink() {
     var args = getArgs(this.href);
     var code = makeShortCode(lat, lon, zoom);
     var prefix = shortlinkPrefix();
@@ -109,7 +112,7 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,object) {
     } else {
       this.href = prefix + "/go/" + code;
     }
-  });
+  }
 }
 
 /*
index ce9c8e97530545688ad89447f450f6c0322c41e0..0e3e7cd563f433e84150451b61269409f50b29ee 100644 (file)
@@ -21,7 +21,14 @@ $(document).ready(function () {
 
   OSM.mapUI().addTo(map);
 
-  L.control.share().addTo(map);
+  L.control.share({
+      getUrl: function(map) {
+          return setArgs('http://osm.org/', {
+              lon: map.getCenter().lng,
+              lat: map.getCenter().lat
+          });
+      }
+  }).addTo(map);
 
   L.control.locate({
       position: 'topright'
index 9c3d94218b18a00a1d5bb50e1a64364b596fb12d..eced07a7ca53cea282cd9834d82916ea59ed1744 100644 (file)
@@ -3,7 +3,10 @@
 L.Control.Share = L.Control.extend({
     options: {
         position: 'topright',
-        title: 'Share'
+        title: 'Share',
+        url: function(map) {
+            return '';
+        }
     },
 
     onAdd: function (map) {
@@ -11,36 +14,38 @@ L.Control.Share = L.Control.extend({
             classNames = className + ' leaflet-control-zoom leaflet-bar leaflet-control',
             container = L.DomUtil.create('div', classNames);
 
-        var self = this;
-        this._layer = new L.LayerGroup();
-        this._layer.addTo(map);
-        this._event = undefined;
-
         var link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container);
         link.href = '#';
         link.title = this.options.title;
 
         this._uiPane = L.DomUtil.create('div', 'leaflet-map-ui', map._container);
+        this._linkInput = L.DomUtil.create('input', '', this._uiPane);
 
         L.DomEvent
             .on(link, 'click', L.DomEvent.stopPropagation)
             .on(link, 'click', L.DomEvent.preventDefault)
-            .on(link, 'click', this.toggle, this)
+            .on(link, 'click', this._toggle, this)
             .on(link, 'dblclick', L.DomEvent.stopPropagation);
 
+        map.on('moveend layeradd layerremove', this._update, this);
+
         return container;
     },
 
-    toggle: function() {
+    _update: function (e) {
+        var center = map.getCenter().wrap();
+        var layers = getMapLayers();
+        this._linkInput.value = this.options.getUrl(map);
+    },
+
+    _toggle: function() {
         var controlContainer = $('.leaflet-control-container .leaflet-top.leaflet-right');
 
         if ($(this._uiPane).is(':visible')) {
             $(this._uiPane).hide();
             controlContainer.css({paddingRight: '0'});
         } else {
-            $(this._uiPane)
-                .show()
-                .html(JST["templates/map/share"]());
+            $(this._uiPane).show();
             controlContainer.css({paddingRight: '200px'});
         }
     }