openstreetmap-website/app/assets/javascripts/index/export.js
Roland Olbricht 83b3db9974 Improve display of alternative download sources
Makes the list of alternative sources displayed all the time
rather than just when the bounding box is too large, and adds
the Overpass API to the list of sources.

Fixes #606
Fixed #635
2013-12-07 14:56:47 +00:00

83 lines
2.2 KiB
JavaScript

OSM.Export = function(map) {
var page = {};
var locationFilter = new L.LocationFilter({
enableButton: false,
adjustButton: false
}).on("change", update);
function getBounds() {
return L.latLngBounds(
L.latLng($("#minlat").val(), $("#minlon").val()),
L.latLng($("#maxlat").val(), $("#maxlon").val()));
}
function boundsChanged() {
var bounds = getBounds();
map.fitBounds(bounds);
locationFilter.setBounds(bounds);
locationFilter.enable();
validateControls();
}
function enableFilter(e) {
e.preventDefault();
$("#drag_box").hide();
locationFilter.setBounds(map.getBounds().pad(-0.2));
locationFilter.enable();
validateControls();
}
function update() {
setBounds(locationFilter.isEnabled() ? locationFilter.getBounds() : map.getBounds());
validateControls();
}
function setBounds(bounds) {
var precision = zoomPrecision(map.getZoom());
$("#minlon").val(bounds.getWest().toFixed(precision));
$("#minlat").val(bounds.getSouth().toFixed(precision));
$("#maxlon").val(bounds.getEast().toFixed(precision));
$("#maxlat").val(bounds.getNorth().toFixed(precision));
$("#export_overpass").attr("href",
"http://overpass-api.de/api/map?bbox=" +
$("#minlon").val() + "," + $("#minlat").val() + "," +
$("#maxlon").val() + "," + $("#maxlat").val());
}
function validateControls() {
$("#export_osm_too_large").toggle(getBounds().getSize() > OSM.MAX_REQUEST_AREA);
$("#export_commit").toggle(getBounds().getSize() < OSM.MAX_REQUEST_AREA);
}
page.pushstate = page.popstate = function(path) {
$("#export_tab").addClass("current");
OSM.loadSidebarContent(path, page.load);
};
page.load = function() {
map
.addLayer(locationFilter)
.on("moveend", update);
$("#maxlat, #minlon, #maxlon, #minlat").change(boundsChanged);
$("#drag_box").click(enableFilter);
$("#sidebar_content .close").on("click", page.minimizeSidebar);
update();
return map.getState();
};
page.unload = function() {
map
.removeLayer(locationFilter)
.off("moveend", update);
$("#export_tab").removeClass("current");
};
return page;
};