%--
Created by IntelliJ IDEA.
User: sbortman
Date: Sep 14, 2009
Time: 9:24:47 AM
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
OMAR - Raster Search
var aoiLayer;
var polygonControl;
var map;
var dataLayer;
function changeMapSize()
{
var mapTitle = $("mapTitle");
var mapDiv = $("map");
mapDiv.style.width = mapTitle.offsetWidth + "px";
mapDiv.style.height = Math.round( mapTitle.offsetWidth / 2) + "px";
map.updateSize();
}
function setupDataLayer()
{
dataLayer = new OpenLayers.Layer.WMS(
"${dataWMS.title}",
"${dataWMS.url}",
{ layers: "${dataWMS.layers}", format: "${dataWMS.format}", IMAGEFILTER: "true=true", transparent: true },
{'isBaseLayer': false},
{buffer:1}
);
map.addLayer(dataLayer);
}
function setupBaseLayer()
{
var baseLayer = new OpenLayers.Layer.WMS(
"${baseWMS.title}",
"${baseWMS.url}",
{layers: '${baseWMS.layers}', format: "${baseWMS.format}" },
{buffer:1}
);
map.addLayer(baseLayer);
map.setBaseLayer(baseLayer);
}
function setupAoiLayer()
{
aoiLayer = new OpenLayers.Layer.Vector("Area of Interest");
aoiLayer.events.register("featureadded", aoiLayer, setAOI );
var polyOptions = {sides: 4, irregular: true} ;
polygonControl = new OpenLayers.Control.DrawFeature( aoiLayer, OpenLayers.Handler.RegularPolygon,
{handlerOptions: polyOptions});
map.addLayer(aoiLayer);
map.addControl(polygonControl);
var aoiMinLon = "${queryParams?.aoiMinLon ?: ''}";
var aoiMinLat = "${queryParams?.aoiMinLat ?: ''}";
var aoiMaxLon = "${queryParams?.aoiMaxLon ?: ''}";
var aoiMaxLat = "${queryParams?.aoiMaxLat ?: ''}";
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 setupMapWidget()
{
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.Permalink("permalink"));
map.addControl(new OpenLayers.Control.ScaleLine());
map.addControl(new OpenLayers.Control.Attribution());
map.events.register("moveend", map, setCenterText);
map.events.register("zoomend", map, setView );
}
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 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 init()
{
setupMapWidget();
setupDataLayer();
setupBaseLayer();
changeMapSize();
setupAoiLayer();
setupToolbar();
setupMapView();
setupQueryFields();
updateOmarFilters();
}
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 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 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;
}
function setupQueryFields()
{
var searchMethod = "${queryParams.searchMethod}";
if ( searchMethod == "${RasterEntryQuery.RADIUS_SEARCH}")
{
toggleRadiusSearch();
}
else if ( searchMethod == "${RasterEntryQuery.BBOX_SEARCH}" )
{
toggleBBoxSearch();
}
}
function toggleRadiusSearch()
{
enableRadiusSearch();
disableBBoxSearch();
}
function toggleBBoxSearch()
{
enableBBoxSearch();
disableRadiusSearch();
}
function enableRadiusSearch()
{
$("aoiRadius").disabled = false;
}
function enableBBoxSearch()
{
$("aoiMinLon").disabled = false;
$("aoiMinLat").disabled = false;
$("aoiMaxLon").disabled = false;
$("aoiMaxLat").disabled = false;
}
function disableRadiusSearch()
{
$("aoiRadius").disabled = true;
}
function disableBBoxSearch()
{
$("aoiMinLon").disabled = true;
$("aoiMinLat").disabled = true;
$("aoiMaxLon").disabled = true;
$("aoiMaxLat").disabled = true;
}
function updateOmarFilters()
{
var sday = $("startDate_day").value;
var smonth = $("startDate_month").value;
var syear = $("startDate_year").value;
var eday = $("endDate_day").value;
var emonth = $("endDate_month").value;
var eyear = $("endDate_year").value;
var hasStartDate = sday != "" && smonth != "" && syear != "";
var startDate = "'" + smonth + "-" + sday + "-" + syear + "'";
var hasEndDate = eday != "" && emonth != "" && eyear != "";
var endDate = "'" + emonth + "-" + eday + "-" + eyear + "'";
if ( hasStartDate )
{
var omarfilter = "acquisition_date>=" + startDate;
if ( hasEndDate )
{
omarfilter += " and acquisition_date<=" + endDate;
}
//alert(omarfilter);
dataLayer.mergeNewParams({IMAGEFILTER: omarfilter });
}
else
{
if ( hasEndDate )
{
var omarfilter = "acquisition_date<=" + endDate;
//alert(omarfilter);
dataLayer.mergeNewParams({IMAGEFILTER: omarfilter });
}
else
{
var omarfilter = "true=true";
//alert(omarfilter);
dataLayer.mergeNewParams({IMAGEFILTER: omarfilter });
}
}
}
function searchForRasters()
{
document.searchForm.action = "search";
document.searchForm.submit();
}
function generateKML()
{
document.searchForm.action = "kmlnetworklink";
document.searchForm.submit();
}
var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
Event.onDOMReady(function()
{
init();
});