From c75d725893c78175f27af02804e69e181df47ad7 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Mon, 10 Jun 2013 12:35:10 -0700 Subject: [PATCH] generate short link kind of --- app/assets/javascripts/application.js | 11 ++++++---- app/assets/javascripts/index.js | 9 ++++++++- app/assets/javascripts/leaflet.share.js | 27 +++++++++++++++---------- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 62c13bb9e..a9c76d17f 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -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; } - }); + } } /* diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index ce9c8e975..0e3e7cd56 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -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' diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index 9c3d94218..eced07a7c 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -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'}); } } -- 2.43.2