Implement long URL option, toggling, and labeling for share

This commit is contained in:
Tom MacWright 2013-06-13 12:04:54 -04:00 committed by John Firebaugh
parent 6f102f2726
commit 9172695f7f
5 changed files with 45 additions and 5 deletions

View file

@ -120,6 +120,18 @@ function getShortUrl(map) {
makeShortCode(map);
}
function getUrl(map) {
var center = map.getCenter(),
zoom = map.getZoom();
return (window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
'http://openstreetmap.org/?' : '/?') +
querystring.stringify({
lat: center.lat,
lon: center.lng,
zoom: zoom
});
}
function minZoomAlert() {
alert(I18n.t("javascripts.site." + name + "_zoom_alert")); return false;
}

View file

@ -81,8 +81,10 @@ $(document).ready(function () {
}).addTo(map);
L.OSM.share({
getUrl: getShortUrl,
sidebar: sidebar
getShortUrl: getShortUrl,
getUrl: getUrl,
sidebar: sidebar,
short: true
}).addTo(map);
L.control.scale()

View file

@ -89,7 +89,7 @@ L.OSM.layers = function(options) {
map.whenReady(function() {
var miniMap = L.map(div[0], {attributionControl: false, zoomControl: false})
.addLayer(new layer.constructor);
.addLayer(new layer.constructor());
miniMap.dragging.disable();
miniMap.touchZoom.disable();

View file

@ -20,9 +20,31 @@ L.OSM.share = function (options) {
.text(I18n.t('javascripts.share.title'))
.appendTo($ui);
var $input = $('<input>')
var $share_link = $('<div></div>')
.appendTo($ui);
var $title = $('<h3></h3>')
.text(I18n.t('javascripts.share.link'))
.appendTo($share_link);
var $short_url_input = $('<input />')
.attr('id', 'short_url')
.attr('type', 'checkbox')
.prop('checked', 'checked')
.appendTo($share_link)
.bind('change', function() {
options.short = $(this).prop('checked');
update();
});
var $short_url_label = $('<label></label>')
.text(I18n.t('javascripts.share.short_url'))
.attr('for', 'short_url')
.appendTo($share_link);
var $input = $('<input />')
.appendTo($share_link);
map.on('moveend layeradd layerremove', update);
options.sidebar.addPane($ui);
@ -36,7 +58,9 @@ L.OSM.share = function (options) {
function update() {
var center = map.getCenter().wrap();
var layers = getMapLayers(map);
$input.val(options.getUrl(map));
$input.val(
options.short ? options.getShortUrl(map) : options.getUrl(map)
);
}
return $container[0];

View file

@ -2040,6 +2040,8 @@ en:
share:
title: "Share"
cancel: "Cancel"
link: "Link"
short_url: "Short URL"
key:
title: "Map Key"
tooltip: "Key for the map"