ZoomToAoi.js
	
	
Summary
	
		No overview generated for 'ZoomToAoi.js'
	
    
    
 
        
mapbuilder.loadScript(baseDir+"/tool/ToolBase.js");
mapbuilder.loadScript(baseDir+"/model/Proj.js");
function ZoomToAoi(toolNode, model) {
  ToolBase.apply(this, new Array(toolNode, model));
  
  this.initProj = function( toolRef ) {
    if( toolRef.model.doc && toolRef.targetModel.doc ) {
      if ( toolRef.model.getSRS() != toolRef.targetModel.getSRS() ) {
          toolRef.model.proj = new Proj( toolRef.model.getSRS() );
          toolRef.targetModel.proj = new Proj( toolRef.targetModel.getSRS() );
      }
    }
  }
  this.setListeners = function( toolRef ) {
    toolRef.model.addListener( "loadModel", toolRef.initProj, toolRef );
    toolRef.targetModel.addListener( "loadModel", toolRef.initProj, toolRef );
    toolRef.initProj( toolRef );
  }
  this.model.addListener( "loadModel", this.setListeners, this);
  
  this.showTargetAoi = function( tool ) {
    if( tool.targetModel.doc ) {
      var bbox = tool.targetModel.getBoundingBox();  
      var ul = new Array(bbox[0],bbox[3]);
      var lr = new Array(bbox[2],bbox[1]);
      if ( tool.model.getSRS() != tool.targetModel.getSRS() ) {
        var ptUL=new PT(ul[0],ul[1]);
        var ptLR=new PT(lr[0],lr[1]);
        cs_transform(tool.targetModel.proj,tool.model.proj,ptUL);
        cs_transform(tool.targetModel.proj,tool.model.proj,ptLR);
        ul = new Array(ptUL.x,ptUL.y);
        lr = new Array(ptLR.x,ptLR.y);      
        
      }
      tool.model.setParam("aoi", new Array(ul, lr) );
    }
  }
  this.firstInit = function(tool) {
    tool.model.map.events.register('mouseup',tool, tool.mouseUpHandler);
    tool.targetModel.addListener( "loadModel", tool.showTargetAoi, tool );
    tool.targetModel.addListener( "bbox", tool.showTargetAoi, tool );
    tool.showTargetAoi(tool);
  }
  this.model.addListener( "loadModel", this.firstInit, this );
}
ZoomToAoi.prototype.mouseUpHandler = function(e) {
  var bbox = this.model.getParam("aoi");
  var ul = bbox[0];
  var lr = bbox[1];
  if ( this.model.getSRS() != this.targetModel.getSRS() ) {
      var ptUL=new PT(ul[0],ul[1]);
      var ptLR=new PT(lr[0],lr[1]);
      cs_transform(this.model.proj,this.targetModel.proj,ptUL);
      cs_transform(this.model.proj,this.targetModel.proj,ptLR);
      ul = new Array(ptUL.x,ptUL.y);
      lr = new Array(ptLR.x,ptLR.y);    
  }
  if ( ( ul[0]==lr[0] ) && ( ul[1]==lr[1] ) ) {
    this.targetModel.map.setCenter(new OpenLayers.LonLat(ul[0],ul[1]));
  } else {
    this.targetModel.map.zoomToExtent(new OpenLayers.Bounds(ul[0], lr[1], lr[0], ul[1]));
  }
}
	
Documentation generated by 
JSDoc on Tue Aug 21 08:12:28 2007