<%@ taglib uri='/WEB-INF/igeotemplates/jsp/tld/template.tld' prefix='igeo' %> <%@ page import="org.deegree.framework.util.StringTools" %> <% String portletID = request.getParameter( "PORTLETID" ); String width = request.getParameter( "width" ); String height = request.getParameter( "height" ); String pid = StringTools.replace( portletID, "-", "", true ); %> <html> <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript" src="../javascript/igeoportal/dragbox.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript" src="../javascript/igeoportal/geometries.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript" src="../javascript/igeoportal/envelope.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript" src="../javascript/igeoportal/geotransform.js"></SCRIPT> <script LANGUAGE="JavaScript1.2" TYPE="text/javascript" src="../javascript/igeoportal/wz_jsgraphics.js"></script> <script LANGUAGE="JavaScript1.2" TYPE="text/javascript" src="../javascript/igeoportal/digitizer.js"></script> <script type="text/javascript"> <!-- var box = null; var digitizer = null; var isNav = navigator.appName.indexOf("Netscape") >= 0; var initX = 0; var initY = 0; var evnt = 0; // variables for drag&drop var isDragging = false; var grabbedX = 0; var grabbedY = 0; var firstDigitzPoint = true; function init() { parent.mapWindowPortlet<% out.print( portletID ); %>.setDocument( document ); parent.mapWindowPortlet<% out.print( portletID ); %>.paint(); if ( isNav ) { onmousemove = moveMouse; onmousedown = mouseDown; onmouseup = mouseUp; ondblclick = dblclick; } else { window.document.onmousemove = moveMouse; var layer = window.document.all[0]; document.onmousedown = mouseDown; layer.onmouseup = mouseUp; layer.ondblclick = dblclick; } initDragBox(<%=width%>, <%=height%>, 0, 0, '#FF0000' ); initMeasurementLine(<%=width%>, <%=height%>, 0, 0, '#FF0000' ); } function kill() { removeDragBox(); removeMeasurementLine(); } function initDragBox(layWidth, layHeight, hspc, vspc, zoomBoxColor) { removeDragBox(); var db = parent.mapWindowPortlet<% out.print( portletID ); %>.dragBox; if ( db == null ) { box = new DragBox (layWidth, layHeight, hspc, vspc, zoomBoxColor); box.setDocument(document); box.init(); parent.mapWindowPortlet<% out.print( portletID ); %>.setDragBox(box); } } function initMeasurementLine(layWidth, layHeight, hspc, vspc, drawColor) { removeMeasurementLine(); digitizer = parent.mapWindowPortlet<% out.print( portletID ); %>.digitizer; if ( digitizer == null ) { digitizer = new Digitizer(layWidth, layHeight, hspc, vspc, drawColor); digitizer.setDocument(document); digitizer.init(); parent.mapWindowPortlet<% out.print( portletID ); %>.setDigitizer( digitizer ); } } function removeDragBox() { var db = parent.mapWindowPortlet<% out.print( portletID ); %>.dragBox; if ( db != null ) { db.kill(); box = null; } } function removeMeasurementLine() { var digitizer = parent.mapWindowPortlet<% out.print( portletID ); %>.digitizer; if ( digitizer != null ) { digitizer.kill(); digitizer = null; } } function clearDragBox() { var db = parent.mapWindowPortlet<% out.print( portletID ); %>.dragBox; if ( db != null ) { db.clear(); } } function clearLine() { var digitizer = parent.mapWindowPortlet<% out.print( portletID ); %>.digitizer; if ( digitizer != null ) { digitizer.clear(); } } function mouseDown(e) { if ( !isNav ) { // microsoft IE special!!! var layer = window.document.all[0]; layer.setCapture(); } var mode = parent.mapWindowPortlet<% out.print( portletID ); %>.getMode() ; if ( mode.indexOf( 'ZOOMIN' ) > -1 ) { evnt = 0; var xy = getEventCoordinates(e); box.mapTool( xy[0], xy[1]); } else if ( mode.indexOf( 'ZOOMOUT' ) > -1 ) { evnt = 1; } else if ( mode.indexOf( 'MOVE' ) > -1 ) { evnt = 2; var xy = getEventCoordinates(e); initX = xy[0]; initY = xy[1]; } else if ( mode.indexOf( 'RECENTER' ) > -1 ) { isDragging = true; var xy = getEventCoordinates(e); grabbedX = xy[0]; grabbedY = xy[1]; evnt = 3; } else if ( mode.indexOf( 'FEATUREINFO' ) > -1 ) { evnt = 4; } else if ( mode.indexOf( 'ANNOTATE' ) > -1 ) { evnt = 5; } else if ( mode.indexOf( 'MEASURELEN' ) > -1 ) { evnt = 6; var xy = getEventCoordinates(e); digitizer.startDigitize( xy[0], xy[1]); if( firstDigitzPoint ){ var bbox = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var gt = new GeoTransform( bbox.minx, bbox.miny, bbox.maxx, bbox.maxy, 0, 0, parent.mapWindowPortlet<% out.print( portletID ); %>.getWidth(), parent.mapWindowPortlet<% out.print( portletID ); %>.getHeight() ); setCurrentCoords( gt.getSourceX( xy[0] ), gt.getSourceY( xy[1] ) ); firstDigitzPoint = false; } } else { evnt = -1; } } function mouseUp(e) { var bbox = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var gt = new GeoTransform( bbox.minx, bbox.miny, bbox.maxx, bbox.maxy, 0, 0, parent.mapWindowPortlet<% out.print( portletID ); %>.getWidth(), parent.mapWindowPortlet<% out.print( portletID ); %>.getHeight() ); if ( evnt == 0 ) { box.chkMouseUp( ); var zoombox = box.getZoomBox(); if ( zoombox.maxx - zoombox.minx < 5 || zoombox.ymax - zoombox.ymin < 5 ) { var x = gt.getSourceX( zoombox.minx ); var y = gt.getSourceY( zoombox.miny ); parent.mapWindowPortlet<% out.print( portletID ); %>.zoomByPoint( x, y, -25 ); } else { var x1 = gt.getSourceX( zoombox.minx ); var y1 = gt.getSourceY( zoombox.miny ); var x2 = gt.getSourceX( zoombox.maxx ); var y2 = gt.getSourceY( zoombox.maxy ); if ( x1 > x2 ) { var t = x1; x1 = x2; x2 = t; } if ( y1 > y2 ) { var t = y1; y1 = y2; y2 = t; } var env = new Envelope( x1, y1, x2, y2 ); parent.mapWindowPortlet<% out.print( portletID ); %>.setBoundingBox( env ); } } else if ( evnt == 1 ) { var xy = getEventCoordinates(e); var x = gt.getSourceX( xy[0] ); var y = gt.getSourceY( xy[1] ); parent.mapWindowPortlet<% out.print( portletID ); %>.zoomByPoint( x, y, 50 ); } else if ( evnt == 2 ) { // move var xy = getEventCoordinates(e); var d = new Array( (xy[0] - initX),(xy[1] - initY) ); var xmin = gt.getSourceX( -1*d[0] ); var ymax = gt.getSourceY( -1*d[1] ); var mEnv = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var bb = new Envelope( xmin, ymax-(mEnv.maxy-mEnv.miny), xmin+ (mEnv.maxx-mEnv.minx), ymax ); parent.mapWindowPortlet<% out.print( portletID ); %>.setBoundingBox( bb ); } else if ( evnt == 3 ) { // recenter var xy = getEventCoordinates( e ); var x = gt.getSourceX( xy[0] ); var y = gt.getSourceY( xy[1] ); parent.mapWindowPortlet<% out.print( portletID ); %>.zoomByPoint( x, y, 0 ); } else if ( evnt == 4 ) { var xy = getEventCoordinates(e); parent.mapWindowPortlet<% out.print( portletID ); %>.doFeatureInfo( xy[0], xy[1] ); } else if ( evnt == 5 ) { // var xy = getEventCoordinates(e); // //parent.mapWindowPortlet<% out.print( portletID ); %>.doAnnotation( xy[0], xy[1] ); // parent.setAnnotationCoordinates( xy[0], xy[1] ); } else if ( evnt == 6 ) {//MEASURE digitizer.chkMouseUp( ); var xy = getEventCoordinates(e); var gt = new GeoTransform( bbox.minx, bbox.miny, bbox.maxx, bbox.maxy, 0, 0, parent.mapWindowPortlet<% out.print( portletID ); %>.getWidth(), parent.mapWindowPortlet<% out.print( portletID ); %>.getHeight() ); setCurrentCoords( gt.getSourceX( xy[0] ), gt.getSourceY( xy[1] ) ); } if ( !isNav ) { // microsoft IE special!!! var layer = window.document.all[0]; layer.releaseCapture(); document.onmousedown = mouseDown; } if( evnt != 6 ){ //keep measurement state evnt = -1; } } function moveMouse(e) { var bbox = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var xy = getEventCoordinates(e); if ( evnt == 0 ) { if ( box != null ) { box.getMouse( xy[0], xy[1] ); } } else if ( evnt == 2 ) { var k = 0; var hl = document.getElementById( "mapid0" ); while ( hl != null ) { hl.style.left = xy[0] - initX; hl.style.top = xy[1] - initY; k++; hl = document.getElementById( "mapid" + k ); } } else if ( evnt == 6 ) { digitizer.getMouse( xy[0], xy[1] ); digitizer.setDrawClosedPoly( drawClosed() ); updateLengthDisplay( xy ); } updateCoordsDisplay( xy ); } function dblclick(e) { var bbox = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var gt = new GeoTransform( bbox.minx, bbox.miny, bbox.maxx, bbox.maxy, 0, 0, parent.mapWindowPortlet<% out.print( portletID ); %>.getWidth(), parent.mapWindowPortlet<% out.print( portletID ); %>.getHeight() ); setDigitizerValue( digitizer, gt ); firstDigitzPoint = true; } function getEventCoordinates(e) { var x = 0; var y = 0; if ( this.isNav ) { x = e.layerX; y = e.layerY; } else { if ( evnt == 2 ) { x = window.event.screenX; y = window.event.screenY; } else { x = window.event.offsetX; y = window.event.offsetY; } } return new Array( x, y); } function updateCoordsDisplay( xy ){ if( parent.setCoordsValue != null ){ var bbox = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var gt = new GeoTransform( bbox.minx, bbox.miny, bbox.maxx, bbox.maxy, 0, 0, parent.mapWindowPortlet<% out.print( portletID ); %>.getWidth(), parent.mapWindowPortlet<% out.print( portletID ); %>.getHeight() ); var x = gt.getSourceX( xy[0] ); var y = gt.getSourceY( xy[1] ); parent.setCoordsValue( x, y ); } } function setCurrentCoords( x, y ){ if( parent.setCurrentCoordsValues != null ){ parent.setCurrentCoordsValues( x, y ); } } function updateLengthDisplay( xy ){ if( parent.setPartialCoordsValue != null ){ var bbox = parent.mapWindowPortlet<% out.print( portletID ); %>.getBoundingBox(); var gt = new GeoTransform( bbox.minx, bbox.miny, bbox.maxx, bbox.maxy, 0, 0, parent.mapWindowPortlet<% out.print( portletID ); %>.getWidth(), parent.mapWindowPortlet<% out.print( portletID ); %>.getHeight() ); var x = gt.getSourceX( xy[0] ); var y = gt.getSourceY( xy[1] ); parent.setPartialCoordsValue( x, y ); } } function setDigitizerValue( dig, gt ) { if( parent.setDigitizer != null ){ parent.setDigitizer( dig, gt ); } } function drawClosed(){ if( parent.isMeasuringLength() != null ){ return !parent.isMeasuringLength(); } return false; } --> </script> <body onload="init();" onunload="kill();"> </body> </html>