X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/438e8be102a2ac4c0e92041da2866f1339715b40..30757696bd01b54cb95309fa61cf8b15ce066ff9:/app/assets/javascripts/leaflet.share.js?ds=sidebyside diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index 7880abe14..7cfd50c8e 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -10,10 +10,10 @@ L.OSM.share = function (options) { var $container = $('
') + .attr('class', 'deemphasize') + .text(I18n.t('javascripts.share.paste_html')) + .appendTo($linkSection)); - $('
') - .attr('class', 'deemphasize') - .text(I18n.t('javascripts.share.paste_html')) - .appendTo($embedSection); + // Geo URI + + var $geoUriSection = $('
') .attr('class', 'deemphasize') .html(I18n.t('javascripts.share.image_size') + ' x ') @@ -184,10 +236,22 @@ L.OSM.share = function (options) { .on('change', update) .addTo(map); + marker.on('dragend', movedMarker); + map.on('move', movedMap); map.on('moveend layeradd layerremove', update); options.sidebar.addPane($ui); + $ui + .on('hide', hidden); + + function hidden() { + map.removeLayer(marker); + map.options.scrollWheelZoom = map.options.doubleClickZoom = true; + locationFilter.disable(); + update(); + } + function toggle(e) { e.stopPropagation(); e.preventDefault(); @@ -196,24 +260,25 @@ L.OSM.share = function (options) { marker.setLatLng(map.getCenter()); update(); - options.sidebar.togglePane($ui); + options.sidebar.togglePane($ui, button); + $('.leaflet-control .control-button').tooltip('hide'); } function toggleMarker() { if ($(this).is(':checked')) { + marker.setLatLng(map.getCenter()); map.addLayer(marker); + map.options.scrollWheelZoom = map.options.doubleClickZoom = 'center'; } else { map.removeLayer(marker); + map.options.scrollWheelZoom = map.options.doubleClickZoom = true; } update(); } function toggleFilter() { if ($(this).is(':checked')) { - if (!locationFilter.getBounds().isValid()) { - locationFilter.setBounds(map.getBounds().pad(-0.2)); - } - + locationFilter.setBounds(map.getBounds().pad(-0.2)); locationFilter.enable(); } else { locationFilter.disable(); @@ -221,41 +286,76 @@ L.OSM.share = function (options) { update(); } + function movedMap() { + marker.setLatLng(map.getCenter()); + update(); + } + + function movedMarker() { + if (map.hasLayer(marker)) { + map.off('move', movedMap); + map.on('moveend', updateOnce); + map.panTo(marker.getLatLng()); + } + } + + function updateOnce() { + map.off('moveend', updateOnce); + map.on('move', movedMap); + update(); + } + + function escapeHTML(string) { + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + return string === null ? '' : (string + '').replace(/[&<>"']/g, function(match) { + return htmlEscapes[match]; + }); + } + function update() { - // Link + var bounds = map.getBounds(); - $shortLink.attr('href', map.getShortUrl()); - $longLink.attr('href', map.getUrl()); + $('#link_marker') + .prop('checked', map.hasLayer(marker)); - // Embed + $('#image_filter') + .prop('checked', locationFilter.isEnabled()); - var bounds = map.getBounds(), - center = bounds.getCenter(), - params = { - bbox: bounds.toBBoxString(), - layer: map.getMapBaseLayerId() - }, - linkParams = { - lat: center.lat, - lon: center.lng, - zoom: map.getBoundsZoom(bounds), - layers: map.getLayersCode() - }; + // Link / Embed + + $('#short_input').val(map.getShortUrl(marker)); + $('#long_input').val(map.getUrl(marker)); + $('#short_link').attr('href', map.getShortUrl(marker)); + $('#long_link').attr('href', map.getUrl(marker)); + + var params = { + bbox: bounds.toBBoxString(), + layer: map.getMapBaseLayerId() + }; if (map.hasLayer(marker)) { - var m = marker.getLatLng(); - params.marker = m.lat + ',' + m.lng; - linkParams.mlat = m.lat; - linkParams.mlon = m.lng; + var latLng = marker.getLatLng().wrap(); + params.marker = latLng.lat + ',' + latLng.lng; } $('#embed_html').val( '' + - '' + I18n.t('export.start_rjs.view_larger_map') + ''); + '' + + escapeHTML(I18n.t('javascripts.share.view_larger_map')) + ''); + + // Geo URI + + $('#geo_uri') + .attr('href', map.getGeoUri(marker)) + .html(map.getGeoUri(marker)); // Image @@ -280,6 +380,14 @@ L.OSM.share = function (options) { $("#mapnik_image_width").text(Math.round(size.x / scale / 0.00028)); $("#mapnik_image_height").text(Math.round(size.y / scale / 0.00028)); + + if (map.getMapBaseLayerId() === 'mapnik') { + $('#export-image').show(); + $('#export-warning').hide(); + } else { + $('#export-image').hide(); + $('#export-warning').show(); + } } function select() {