source: subversion/applications/editors/potlatch/world.as @ 6739

Last change on this file since 6739 was 6739, checked in by richard, 12 years ago

Potlatch 0.7

File size: 4.7 KB
Line 
1
2        // =====================================================================================
3        // Potlatch co-ordinate handling
4
5        // updateCoords - update all co-ordinate global variables
6
7        function updateCoords(tx,ty) {
8                _root.bscale=Math.pow(2,_root.scale-13);
9                _root.xradius=Stage.width/2;
10                _root.yradius=(Stage.height-100)/2;
11
12                _root.map._x=tx; _root.map._y=ty;
13                _root.map._xscale=100*bscale;
14                _root.map._yscale=100*bscale;
15
16                _root.edge_t=coord2lat ((-_root.map._y          )/bscale);
17                _root.edge_b=coord2lat ((-_root.map._y+2*yradius)/bscale);
18                _root.edge_l=coord2long((-_root.map._x          )/bscale);
19                _root.edge_r=coord2long((-_root.map._x+2*xradius)/bscale);
20        }
21
22        // lat/long <-> coord conversion
23
24        function lat2coord(a)   { return -(lat2y(a)-basey)*masterscale; }
25        function coord2lat(a)   { return y2lat(a/-masterscale+basey); }
26        function long2coord(a)  { return (a-baselong)*masterscale; }
27        function coord2long(a)  { return a/masterscale+baselong; }
28        function y2lat(a) { return 180/Math.PI * (2 * Math.atan(Math.exp(a*Math.PI/180)) - Math.PI/2); }
29        function lat2y(a) { return 180/Math.PI * Math.log(Math.tan(Math.PI/4+a*(Math.PI/180)/2)); }
30        function centrelat(o)  { return  coord2lat((yradius-_root.map._y-o)/Math.pow(2,_root.scale-13)); }
31        function centrelong(o) { return coord2long((xradius-_root.map._x-o)/Math.pow(2,_root.scale-13)); }
32
33        // resizeWindow - user has enlarged/shrunk window
34
35        function resizeWindow() {
36                // resize Yahoo
37                clearInterval(_root.yahooresizer);
38                _root.yahoo.myMap.setSize(Stage.width,Stage.height-100);
39                // resize main mask and panel
40                _root.masksquare._height=
41                _root.panel._y=Stage.height-100;
42                _root.masksquare._width=Stage.width;
43                // resize other stuff
44                _root.waysloading._x=
45                _root.tooltip._x=Stage.width-120;
46                _root.practice._x=Stage.width-97; _root.practice._y=Stage.height-122;
47                // note time, so we can issue a whichWays soon
48                _root.lastresize=new Date();
49        }
50
51        // updateLinks - update view/edit tabs
52
53        function updateLinks() {
54//              if (winie) { fscommand("maplinks",centrelong(0),centrelat(0),_root.scale); } else {
55                getURL("javascript:updatelinks("+centrelong(0)+","+centrelat(0)+","+_root.scale+")");
56        }
57
58        // =====================================================================================
59        // Zoom
60
61        // zoomIn, zoomOut, changeScaleTo - change scale functions
62       
63        function zoomIn() {
64                if (_root.scale<_root.maxscale) {
65                        if (_root.waycount>500) { purgeWays(); }
66                        if (_root.poicount>500) { purgePOIs(); }
67                        zoomTo(_root.scale+1,_root.map._x*2-xradius,_root.map._y*2-yradius,false);
68                }
69        }
70       
71        function zoomOut() {
72                if (_root.scale>_root.minscale) {
73                        zoomTo(_root.scale-1,(_root.map._x+xradius)/2,(_root.map._y+yradius)/2,true);
74                }
75        }
76
77        function zoomTo(newscale,newx,newy,ww) {
78                blankTileQueue();
79                changeScaleTo(newscale);
80                updateCoords(newx,newy);
81                updateLinks();
82                redrawBackground();
83                resizePOIs();
84                if (ww) { whichWays(); }
85                for (qway in _root.map.ways) { _root.map.ways[qway].redraw(); }
86                if (_root.wayselected) {
87                        _root.ws.highlight();
88                        _root.ws.highlightPoints(5000,"anchor");
89                }
90                restartElastic();
91        }
92
93        function changeScaleTo(newscale) {
94                _root.map.tiles[_root.scale]._visible=false; _root.scale=newscale;
95                _root.map.tiles[_root.scale]._visible=true;
96                if (_root.scale==_root.minscale) { _root.i_zoomout._alpha=25;  }
97                                                                        else { _root.i_zoomout._alpha=100; }
98                if (_root.scale==_root.maxscale) { _root.i_zoomin._alpha =25;  }
99                                                                        else { _root.i_zoomin._alpha =100; }
100                _root.tolerance=4/Math.pow(2,_root.scale-13);
101        }
102
103        // =====================================================================================
104        // Backgrounds
105
106        function setBackground(n) {
107                preferences.data.baselayer=n;
108                preferences.flush();
109                redrawBackground(); 
110        }
111
112        function redrawBackground() {
113                var alpha=100-50*preferences.data.dimbackground;
114                switch (preferences.data.baselayer) {
115                        case 0: _root.yahoo._visible=false;     // none
116                                        _root.map.tiles._visible=false;
117                                        break;
118                        case 2: if (!_root.yahooloaded) {       // Yahoo
119                                                loadMovie(yahoourl,_root.yahoo); _root.yahooloaded=true;
120                                                _root.yahoo.swapDepths(_root.masksquare);
121                                                _root.yahoorightsize=false;
122//                                              _root.yahoo.setMask(_root.masksquare2);
123                                        }
124                                        _root.yahoo._visible=true;
125                                        _root.yahoo._alpha=alpha;       
126                                        _root.yahoo._x=0;
127                                        _root.yahoo._y=0;
128                                        _root.ylat=centrelat(_root.bgyoffset);
129                                        _root.ylon=centrelong(_root.bgxoffset);
130                                        _root.yzoom=18-_root.scale;
131                                        _root.map.tiles._visible=false;
132                                        break;
133                        case 1: ; // OpenAerialMap
134                        case 3: ; // Mapnik
135                        case 4: ; // Osmarender
136                                        if (_root.tilesetloaded!=preferences.data.baselayer) {
137                                                _root.tilesetloaded=preferences.data.baselayer;
138                                                initTiles();
139                                        }
140                                        _root.map.tiles._visible=true;
141                                        _root.yahoo._visible=false;
142                                        break;
143                }
144        }
Note: See TracBrowser for help on using the repository browser.