%--
Created by IntelliJ IDEA.
User: sbortman
Date: Aug 7, 2009
Time: 8:54:13 AM
To change this template use File | Settings | File Templates.
--%>
OMAR Raster Search
<%--
--%>
<%--
--%>
<%--
--%>
<%--
--%>
<%--
--%>
<%--
--%>
var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var map;
var aoiLayer;
var layout;
function setupBaseLayer()
{
var baseLayer = new OpenLayers.Layer.WMS(
"${baseWMS.title}",
"${baseWMS.url}",
{layers: '${baseWMS.layers}', format: 'image/jpeg' },
{buffer:1}
);
map.addLayer(baseLayer);
map.setBaseLayer(baseLayer);
}
function setupDataLayer()
{
var dataLayer = new OpenLayers.Layer.WMS(
"${dataWMS.title}",
"${dataWMS.url}",
{ layers: "${dataWMS.layers}", format: 'image/png', transparent: true },
{'isBaseLayer': false},
{buffer:1}
);
map.addLayer(dataLayer);
}
function clearAOI( e )
{
aoiLayer.destroyFeatures();
// HACK - Need a better way to this
$("aoiMinLon").value = ""
$("aoiMaxLat").value = ""
$("aoiMaxLon").value = ""
$("aoiMinLat").value = ""
}
function setAOI( e )
{
var geom = e.feature.geometry;
var bounds = geom.getBounds();
var feature = new OpenLayers.Feature.Vector(geom);
// HACK - Need a better way to this
$("aoiMinLon").value = bounds.left
$("aoiMaxLat").value = bounds.top
$("aoiMaxLon").value = bounds.right
$("aoiMinLat").value = bounds.bottom
aoiLayer.destroyFeatures();
aoiLayer.addFeatures(feature, {silent: true});
}
function setupAreaOfInterestLayer()
{
aoiLayer = new OpenLayers.Layer.Vector("Area of Interest");
aoiLayer.events.register("featureadded", aoiLayer, setAOI);
map.addLayer(aoiLayer);
var aoiMinLon = "${queryParams?.aoiMinLon ?: 0}";
var aoiMinLat = "${queryParams?.aoiMinLat ?: 0}";
var aoiMaxLon = "${queryParams?.aoiMaxLon ?: 0}";
var aoiMaxLat = "${queryParams?.aoiMaxLat ?: 0}";
if ( aoiMinLon && aoiMinLat && aoiMaxLon && aoiMaxLat )
{
var bounds = new OpenLayers.Bounds( aoiMinLon, aoiMinLat, aoiMaxLon, aoiMaxLat );
var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
aoiLayer.addFeatures(feature, {silent: true});
}
}
function setupToolbar()
{
var zoomBox = new OpenLayers.Control.ZoomBox(
{title:"Zoom into an area by clicking and dragging"});
var polyOptions = {sides: 4, irregular: true};
var polygonControl = new OpenLayers.Control.DrawFeature(aoiLayer, OpenLayers.Handler.RegularPolygon,
{handlerOptions: polyOptions, title: "Specify Area of Interest"});
var button1 = new OpenLayers.Control.Button({title:'Clear Area of Interest',
displayClass: "olControlClearAreaOfInterest",
trigger: clearAOI
});
var container = $("panel2");
var panel = new OpenLayers.Control.Panel(
{div: container,defaultControl: zoomBox,'displayClass': 'olControlPanel'}
);
var nav = new OpenLayers.Control.NavigationHistory({
nextOptions: {title: "Next View"},
previousOptions: {title: "Previous View"}
});
map.addControl(nav);
panel.addControls([
new OpenLayers.Control.MouseDefaults({title:'Drag to recenter map'}),
zoomBox,
nav.next, nav.previous,
new OpenLayers.Control.ZoomToMaxExtent({title:"Zoom to the max extent"}),
polygonControl,
button1,
]);
map.addControl(panel);
}
function setupMapView()
{
var viewMinLon = "${queryParams?.viewMinLon ?: -180}";
var viewMinLat = "${queryParams?.viewMinLat ?: -90}";
var viewMaxLon = "${queryParams?.viewMaxLon ?: 180}";
var viewMaxLat = "${queryParams?.viewMaxLat ?: 90}";
var bounds = new OpenLayers.Bounds(viewMinLon, viewMinLat, viewMaxLon, viewMaxLat);
var zoom = map.getZoomForExtent(bounds, true);
map.setCenter(bounds.getCenterLonLat(), zoom);
}
function setupMap()
{
map = new OpenLayers.Map('map', {controls: []});
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.PanZoom());
//map.addControl(new OpenLayers.Control.NavToolbar());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.Scale());
map.addControl(new OpenLayers.Control.ScaleLine());
map.events.register("moveend", map, setCenterText);
map.events.register("zoomend", map, setView );
setupBaseLayer();
setupDataLayer();
setupAreaOfInterestLayer();
setupToolbar();
setupMapView();
//map.zoomToMaxExtent();
}
function goto()
{
var centerLon = $("centerLon").value;
var centerLat = $("centerLat").value;
var zoom = map.getZoom();
var center = new OpenLayers.LonLat(centerLon, centerLat);
map.setCenter(center, zoom);
}
function setView( e )
{
var bounds = map.getExtent();
$("viewMinLon").value = bounds.left;
$("viewMaxLat").value = bounds.top;
$("viewMaxLon").value = bounds.right;
$("viewMinLat").value = bounds.bottom;
}
function setCenterText( e )
{
var center = map.getCenter();
$("centerLon").value = center.lon;
$("centerLat").value = center.lat;
}
Event.onDOMReady(function()
{
layout = new YAHOO.widget.Layout({
units: [
{
position: 'top',
height: 70,
body: 'top1',
header: 'Top',
gutter: '5px',
collapse: true,
resize: true
},
{
position: 'right',
header: 'Right',
width: 300,
resize: true,
gutter: '5px',
collapse: true,
scroll: true,
body: 'right1',
animate: true
},
{
position: 'bottom',
header: 'Bottom',
height: 300,
resize: true,
body: 'bottom1',
gutter: '5px',
collapse: true
},
{
position: 'left',
header: 'Left',
width: 450,
resize: true,
body: 'left1',
gutter: '5px',
collapse: true,
scroll: true,
animate: true
},
{
position: 'center',
body: 'center1'
}
]
});
layout.on('render', function()
{
setupMap();
});
layout.subscribe("resize", function( ev )
{
var c = this.getUnitByPosition('center');
var mapWidth = c.get('width');
var mapHeight = c.get('height');
Dom.get("map").style.width = mapWidth + "px";
Dom.get("map").style.height = mapHeight + "px";
map.updateSize();
});
layout.render();
layout.getUnitByPosition('right').collapse();
layout.getUnitByPosition('bottom').collapse();
changeSize();
});