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