X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/fe6e837cfe77e1414998c0216defe7912e34bf75..6618cb9019687c8c2edf74698f84b385c0d9edd6:/app/assets/javascripts/index/export.js diff --git a/app/assets/javascripts/index/export.js b/app/assets/javascripts/index/export.js index e1b079607..47830f8be 100644 --- a/app/assets/javascripts/index/export.js +++ b/app/assets/javascripts/index/export.js @@ -1,4 +1,4 @@ -$(document).ready(function () { +function initializeExport(map) { $("#exportanchor").click(function (e) { $.ajax({ url: $(this).data('url'), success: function (sidebarHtml) { startExport(sidebarHtml); @@ -15,10 +15,11 @@ $(document).ready(function () { var locationFilter = new L.LocationFilter({ enableButton: false, - adjustButton: false, - onChange: filterChanged + adjustButton: false }).addTo(map); + locationFilter.on("change", filterChanged); + map.on("moveend", mapMoved); map.on("baselayerchange", htmlUrlChanged); @@ -37,7 +38,7 @@ $(document).ready(function () { openSidebar(); - if (map.hasLayer(layers[0].layer)) { + if (map.getMapBaseLayerId() == "mapnik") { $("#format_mapnik").prop("checked", true); } @@ -54,6 +55,7 @@ $(document).ready(function () { map.off("moveend", mapMoved); map.off("baselayerchange", htmlUrlChanged); + locationFilter.off("change", filterChanged); }); function getBounds() { @@ -65,7 +67,7 @@ $(document).ready(function () { var bounds = map.getBounds(), centerLat = bounds.getCenter().lat, halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180), - meters = halfWorldMeters * (bounds.getNorthEast().lng - bounds.getSouthWest().lng) / 180, + meters = halfWorldMeters * (bounds.getEast() - bounds.getWest()) / 180, pixelsPerMeter = map.getSize().x / meters, metersPerPixel = 1 / (92 * 39.3701); return Math.round(1 / (pixelsPerMeter * metersPerPixel)); @@ -81,15 +83,18 @@ $(document).ready(function () { var bounds = getBounds(); map.fitBounds(bounds); - - enableFilter(); locationFilter.setBounds(bounds); + enableFilter(); validateControls(); mapnikSizeChanged(); } function enableFilter() { + if (!locationFilter.getBounds().isValid()) { + locationFilter.setBounds(map.getBounds().pad(-0.2)); + } + $("#drag_box").hide(); locationFilter.enable(); } @@ -145,12 +150,12 @@ $(document).ready(function () { } function setBounds(bounds) { - var toPrecision = zoomPrecision(map.getZoom()); + var precision = zoomPrecision(map.getZoom()); - $("#minlon").val(toPrecision(bounds.getWestLng())); - $("#minlat").val(toPrecision(bounds.getSouthLat())); - $("#maxlon").val(toPrecision(bounds.getEastLng())); - $("#maxlat").val(toPrecision(bounds.getNorthLat())); + $("#minlon").val(bounds.getWest().toFixed(precision)); + $("#minlat").val(bounds.getSouth().toFixed(precision)); + $("#maxlon").val(bounds.getEast().toFixed(precision)); + $("#maxlat").val(bounds.getNorth().toFixed(precision)); mapnikSizeChanged(); htmlUrlChanged(); @@ -181,9 +186,9 @@ $(document).ready(function () { function htmlUrlChanged() { var bounds = getBounds(); - var layerName = getMapBaseLayer().keyid; + var layerName = map.getMapBaseLayerId(); - var url = "http://" + OSM.SERVER_URL + "/export/embed.html?bbox=" + bounds.toBBOX() + "&layer=" + layerName; + var url = "http://" + OSM.SERVER_URL + "/export/embed.html?bbox=" + bounds.toBBoxString() + "&layer=" + layerName; var markerUrl = ""; if ($("#marker_lat").val() && $("#marker_lon").val()) { @@ -198,7 +203,7 @@ $(document).ready(function () { var zoom = map.getBoundsZoom(bounds); - var layers = getMapLayers(); + var layers = map.getLayersCode(); var text = I18n.t('export.start_rjs.view_larger_map'); var escaped = []; @@ -249,16 +254,16 @@ $(document).ready(function () { } function maxMapnikScale() { - var bounds = getMercatorBounds(); + var size = getMercatorBounds().getSize(); - return Math.floor(Math.sqrt(bounds.getWidth() * bounds.getHeight() / 0.3136)); + return Math.floor(Math.sqrt(size.x * size.y / 0.3136)); } function mapnikImageSize(scale) { - var bounds = getMercatorBounds(); + var size = getMercatorBounds().getSize(); - return {w: Math.round(bounds.getWidth() / scale / 0.00028), - h: Math.round(bounds.getHeight() / scale / 0.00028)}; + return {w: Math.round(size.x / scale / 0.00028), + h: Math.round(size.y / scale / 0.00028)}; } function roundScale(scale) { @@ -276,4 +281,4 @@ $(document).ready(function () { validateControls(); } } -}); +}