Revision 4307
Added by ben leinfelder over 15 years ago
ZoomToAoi.js | ||
---|---|---|
1 | 1 |
/* |
2 | 2 |
License: LGPL as per: http://www.gnu.org/copyleft/lesser.html |
3 | 3 |
Dependancies: Context |
4 |
$Id$ |
|
4 |
$Id: ZoomToAoi.js 3821 2008-02-01 13:58:30Z ahocevar $
|
|
5 | 5 |
*/ |
6 | 6 |
|
7 | 7 |
// Ensure this object's dependancies are loaded. |
8 | 8 |
mapbuilder.loadScript(baseDir+"/tool/ToolBase.js"); |
9 |
mapbuilder.loadScript(baseDir+"/model/Proj.js"); |
|
10 | 9 |
|
11 | 10 |
/** |
12 | 11 |
* Controller for the locator map widget. |
... | ... | |
16 | 15 |
* This will also process mouse events (click and dragbox) to recenter the |
17 | 16 |
* target model and includes coordinate projection transformations if required. |
18 | 17 |
* Checking for extent limits is not yet implemented. |
18 |
* |
|
19 |
* WARNING: it is recommended to use the OverviewMap widget. However since the behavior |
|
20 |
* is slightly different from this widget, this one is still available. |
|
21 |
* See also MAP-300 |
|
22 |
* @deprecated |
|
19 | 23 |
* @constructor |
20 | 24 |
* @base ToolBase |
21 | 25 |
* @author Adair |
... | ... | |
33 | 37 |
this.initProj = function( toolRef ) { |
34 | 38 |
if( toolRef.model.doc && toolRef.targetModel.doc ) { |
35 | 39 |
if ( toolRef.model.getSRS() != toolRef.targetModel.getSRS() ) { |
36 |
toolRef.model.proj = new Proj( toolRef.model.getSRS() );
|
|
37 |
toolRef.targetModel.proj = new Proj( toolRef.targetModel.getSRS() );
|
|
40 |
toolRef.model.proj = new OpenLayers.Projection( toolRef.model.getSRS() );
|
|
41 |
toolRef.targetModel.proj = new OpenLayers.Projection( toolRef.targetModel.getSRS() );
|
|
38 | 42 |
} |
39 | 43 |
} |
40 | 44 |
} |
... | ... | |
52 | 56 |
*/ |
53 | 57 |
this.showTargetAoi = function( tool ) { |
54 | 58 |
if( tool.targetModel.doc ) { |
55 |
var bbox = tool.targetModel.getBoundingBox(); |
|
56 |
var ul = new Array(bbox[0],bbox[3]); |
|
57 |
var lr = new Array(bbox[2],bbox[1]); |
|
58 |
if ( tool.model.getSRS() != tool.targetModel.getSRS() ) { |
|
59 |
ul = tool.targetModel.proj.Inverse( ul ); //to lat-long |
|
60 |
lr = tool.targetModel.proj.Inverse( lr ); |
|
61 |
if (ul[0]>lr[0]) ul[0] = ul[0]-360.0; //make sure ul is left of lr |
|
62 |
ul = tool.model.proj.Forward( ul ); //back to XY |
|
63 |
lr = tool.model.proj.Forward( lr ); |
|
64 |
} |
|
65 |
tool.model.setParam("aoi", new Array(ul, lr) ); |
|
59 |
var bbox = tool.targetModel.getBoundingBox(); |
|
60 |
var ul = new Array(bbox[0],bbox[3]); |
|
61 |
var lr = new Array(bbox[2],bbox[1]); |
|
62 |
if ( tool.model.getSRS() != tool.targetModel.getSRS() ) { |
|
63 |
var ptUL=new OpenLayers.Geometry.Point(ul[0],ul[1]); |
|
64 |
var ptLR=new OpenLayers.Geometry.Point(lr[0],lr[1]); |
|
65 |
ptUL.transform(tool.targetModel.proj,tool.model.proj); |
|
66 |
ptLR.transform(tool.targetModel.proj,tool.model.proj); |
|
67 |
ul = new Array(ptUL.x,ptUL.y); |
|
68 |
lr = new Array(ptLR.x,ptLR.y); |
|
69 |
|
|
70 |
} |
|
71 |
tool.model.setParam("aoi", new Array(ul, lr) ); |
|
66 | 72 |
} |
67 | 73 |
} |
74 |
|
|
68 | 75 |
this.firstInit = function(tool) { |
76 |
tool.model.map.events.register('mouseup',tool, tool.mouseUpHandler); |
|
69 | 77 |
tool.targetModel.addListener( "loadModel", tool.showTargetAoi, tool ); |
70 | 78 |
tool.targetModel.addListener( "bbox", tool.showTargetAoi, tool ); |
71 | 79 |
tool.showTargetAoi(tool); |
72 | 80 |
} |
73 | 81 |
this.model.addListener( "loadModel", this.firstInit, this ); |
74 |
|
|
75 |
|
|
76 |
/** |
|
77 |
* Process a mouse up action. This will recenter the target model's bbox |
|
78 |
* to be equal to this model's AOI. |
|
79 |
* @param tool Pointer to this ZoomToAoi object. |
|
80 |
* @param targetNode The node for the enclosing HTML tag for this widget, not used. |
|
81 |
*/ |
|
82 |
this.mouseUpHandler = function(tool,targetNode) { |
|
83 |
var bbox = tool.model.getParam("aoi"); |
|
84 |
var ul = bbox[0]; |
|
85 |
var lr = bbox[1]; |
|
86 |
if ( tool.model.getSRS() != tool.targetModel.getSRS() ) { |
|
87 |
//TBD: convert XY to lat/long first |
|
88 |
ul = tool.targetModel.proj.Forward( ul ); //to target XY |
|
89 |
lr = tool.targetModel.proj.Forward( lr ); |
|
82 |
|
|
83 |
this.clear = function(tool) { |
|
84 |
if (tool.model.map && tool.model.map.events) { |
|
85 |
tool.model.map.events.unregister('mouseup',tool, tool.mouseUpHandler); |
|
90 | 86 |
} |
91 |
if ( ( ul[0]==lr[0] ) && ( ul[1]==lr[1] ) ) { |
|
92 |
tool.targetModel.extent.centerAt( ul, tool.targetModel.extent.res[0] ); |
|
93 |
} else { |
|
94 |
tool.targetModel.extent.zoomToBox( ul, lr ); |
|
95 |
} |
|
96 | 87 |
} |
97 |
this.model.addListener('mouseup',this.mouseUpHandler,this);
|
|
88 |
this.model.addListener("clearModel", this.clear, this);
|
|
98 | 89 |
} |
90 |
|
|
91 |
/** |
|
92 |
* Process a mouse up action. This will recenter the target model's bbox |
|
93 |
* to be equal to this model's AOI. |
|
94 |
* @param e OpenLayers event |
|
95 |
*/ |
|
96 |
ZoomToAoi.prototype.mouseUpHandler = function(e) { |
|
97 |
var bbox = this.model.getParam("aoi"); |
|
98 |
var ul = bbox[0]; |
|
99 |
var lr = bbox[1]; |
|
100 |
if ( this.model.getSRS() != this.targetModel.getSRS() ) { |
|
101 |
//TBD: convert XY to lat/long first |
|
102 |
var ptUL=new OpenLayers.Geometry.Point(ul[0],ul[1]); |
|
103 |
var ptLR=new OpenLayers.Geometry.Point(lr[0],lr[1]); |
|
104 |
ptUL.transform(this.model.proj,this.targetModel.proj); |
|
105 |
ptLR.transform(this.model.proj,this.targetModel.proj); |
|
106 |
ul = new Array(ptUL.x,ptUL.y); |
|
107 |
lr = new Array(ptLR.x,ptLR.y); |
|
108 |
} |
|
109 |
if ( ( ul[0]==lr[0] ) && ( ul[1]==lr[1] ) ) { |
|
110 |
this.targetModel.map.setCenter(new OpenLayers.LonLat(ul[0],ul[1])); |
|
111 |
} else { |
|
112 |
this.targetModel.map.zoomToExtent(new OpenLayers.Bounds(ul[0], lr[1], lr[0], ul[1])); |
|
113 |
} |
|
114 |
} |
Also available in: Unified diff
upgrade to MapBuilder 1.5rc2 - includes support for Firefox 3 compatibility (yes, it is also EOLed)