From 6403cb9b08dfb7b0411c88515da34f27a813dd4a Mon Sep 17 00:00:00 2001 From: Eric Theise Date: Thu, 25 Jun 2015 17:55:41 +0100 Subject: [PATCH] Add a Geo URI link to the share panel Fixes #799 --- app/assets/javascripts/leaflet.map.js | 18 ++++++++++++++++++ app/assets/javascripts/leaflet.share.js | 21 +++++++++++++++++++++ app/assets/stylesheets/common.scss | 2 +- config/locales/en.yml | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index f433cd371..58360bbec 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -170,6 +170,24 @@ L.OSM.Map = L.Map.extend({ return str; }, + getGeoUri: function(marker) { + var precision = OSM.zoomPrecision(this.getZoom()), + latLng, + params = {}; + + if (marker && this.hasLayer(marker)) { + latLng = marker.getLatLng().wrap(); + } else { + latLng = this.getCenter(); + } + + params.lat = latLng.lat.toFixed(precision); + params.lon = latLng.lng.toFixed(precision); + params.zoom = this.getZoom(); + + return 'geo:' + params.lat + ',' + params.lon + '?z=' + params.zoom; + }, + addObject: function(object, callback) { var objectStyle = { color: "#FF6200", diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index 44d02c097..b991210df 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -120,6 +120,21 @@ L.OSM.share = function (options) { .text(I18n.t('javascripts.share.paste_html')) .appendTo($linkSection)); + // Geo URI + + var $geoUriSection = $('
') + .attr('class', 'section share-geo-uri') + .appendTo($ui); + + $('

') + .text(I18n.t('javascripts.share.geo_uri')) + .appendTo($geoUriSection); + + $('
') + .appendTo($geoUriSection) + .append($('') + .attr('id', 'geo_uri')); + // Image var $imageSection = $('
') @@ -320,6 +335,12 @@ L.OSM.share = function (options) { '' + escapeHTML(I18n.t('javascripts.share.view_larger_map')) + ''); + // Geo URI + + $('#geo_uri') + .attr('href', map.getGeoUri(marker)) + .html(map.getGeoUri(marker)); + // Image if (locationFilter.isEnabled()) { diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index e8696d665..21cecaf4a 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -721,6 +721,7 @@ nav.secondary { text-decoration: none; background-color: $lightblue; padding: 5px 10px; + border-right: 1px solid #fff; } a:first-child { @@ -729,7 +730,6 @@ nav.secondary { } a:last-child { - border-left: 1px solid #fff; border-radius: 0 4px 4px 0; } diff --git a/config/locales/en.yml b/config/locales/en.yml index 0a6f108e7..5b439fdae 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2163,6 +2163,7 @@ en: link: "Link or HTML" long_link: "Link" short_link: "Short Link" + geo_uri: "Geo URI" embed: "HTML" custom_dimensions: "Set custom dimensions" format: "Format:" -- 2.43.2