Add 'hide areas' button to data view

This commit is contained in:
Frederik Ramm 2010-05-01 20:14:53 +02:00 committed by Tom Hughes
parent 62d9dbdc23
commit 59dcc8b253

View file

@ -9,6 +9,7 @@ page << <<EOJ
var browseDataLayer;
var browseSelectControl;
var browseObjectList;
var areasHidden = false;
OpenLayers.Feature.Vector.style['default'].strokeWidth = 3;
OpenLayers.Feature.Vector.style['default'].cursor = "pointer";
@ -33,12 +34,15 @@ page << <<EOJ
map.events.register("moveend", map, showData);
map.events.triggerEvent("moveend");
$("browse_hide_areas_box").innerHTML = "#{I18n.t('browse.start_rjs.hide_areas')}";
$("browse_hide_areas_box").style.display = "inline";
$("browse_hide_areas_box").onclick = hideAreas;
}
function showData() {
if (browseMode == "auto") {
if (map.getZoom() >= 15) {
useMap();
useMap(false);
} else {
setStatus("#{I18n.t('browse.start_rjs.zoom_or_select')}");
}
@ -84,7 +88,7 @@ page << <<EOJ
$("browse_select_box").onclick = startDrag;
function useMap() {
function useMap(reload) {
var bounds = map.getExtent();
var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326);
@ -98,7 +102,7 @@ page << <<EOJ
center.lat + (tileHeight / 2));
browseBounds = tileBounds;
getData(tileBounds);
getData(tileBounds, reload);
browseMode = "auto";
@ -108,6 +112,22 @@ page << <<EOJ
return false;
}
function hideAreas() {
$("browse_hide_areas_box").innerHTML = "#{I18n.t('browse.start_rjs.show_areas')}";
$("browse_hide_areas_box").style.display = "inline";
$("browse_hide_areas_box").onclick = showAreas;
areasHidden = true;
useMap(true);
}
function showAreas() {
$("browse_hide_areas_box").innerHTML = "#{I18n.t('browse.start_rjs.hide_areas')}";
$("browse_hide_areas_box").style.display = "inline";
$("browse_hide_areas_box").onclick = hideAreas;
areasHidden = false;
useMap(true);
}
$("browse_select_view").onclick = useMap;
function endDrag(bbox) {
@ -122,6 +142,7 @@ page << <<EOJ
$("browse_select_box").innerHTML = "#{I18n.t('browse.start_rjs.manually_select')}";
$("browse_select_view").style.display = "inline";
}
function displayFeatureWarning() {
@ -181,22 +202,28 @@ page << <<EOJ
}
}
function getData(bounds) {
function getData(bounds,reload) {
var projected = bounds.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
var size = projected.getWidth() * projected.getHeight();
if (size > #{MAX_REQUEST_AREA}) {
setStatus(i18n("#{I18n.t('browse.start_rjs.unable_to_load_size', :max_bbox_size => MAX_REQUEST_AREA)}", { bbox_size: size }));
} else {
loadGML("/api/#{API_VERSION}/map?bbox=" + projected.toBBOX());
loadGML("/api/#{API_VERSION}/map?bbox=" + projected.toBBOX(), reload);
}
}
function loadGML(url) {
function loadGML(url,reload) {
setStatus("#{I18n.t('browse.start_rjs.loading')}");
$("browse_content").innerHTML = "";
if (!browseDataLayer) {
fOptions = {
checkTags: true,
interestingTagsExclude: ['source','source_ref','source:ref','history','attribution','created_by','tiger:county','tiger:tlid','tiger:upload_uuid']
};
if (areasHidden) fOptions.areaTags = [];
if (!browseDataLayer || reload) {
var style = new OpenLayers.Style();
style.addRules([new OpenLayers.Rule({
@ -207,12 +234,11 @@ page << <<EOJ
}
})]);
if (browseDataLayer) browseDataLayer.destroyFeatures();
browseDataLayer = new OpenLayers.Layer.GML("Data", url, {
format: OpenLayers.Format.OSM,
formatOptions: {
checkTags: true,
interestingTagsExclude: ['source','source_ref','source:ref','history','attribution','created_by','tiger:county','tiger:tlid','tiger:upload_uuid']
},
formatOptions: fOptions,
maxFeatures: 100,
requestSuccess: customDataLoader,
displayInLayerSwitcher: false,
@ -222,6 +248,7 @@ page << <<EOJ
})
});
browseDataLayer.events.register("loadend", browseDataLayer, dataLoaded );
map.addLayer(browseDataLayer);
browseSelectControl = new OpenLayers.Control.SelectFeature(browseDataLayer, { onSelect: onFeatureSelect });
@ -230,6 +257,8 @@ page << <<EOJ
map.addControl(browseSelectControl);
browseSelectControl.activate();
} else {
browseDataLayer.destroyFeatures();
browseDataLayer.format(fOptions);
browseDataLayer.setUrl(url);
}