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
83 lines
2.2 KiB
JavaScript
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;
|
|
};
|