]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/leaflet.share.js
generate short link kind of
[rails.git] / app / assets / javascripts / leaflet.share.js
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'});
         }
     }