source: subversion/applications/editors/potlatch/photos.as @ 16526

Last change on this file since 16526 was 16525, checked in by richard, 10 years ago

Potlatch 1.1a

File size: 5.1 KB
Line 
1
2        var photocss=new TextField.StyleSheet();
3        photocss.load("/potlatch/photos.css?d=1");
4
5        function Photo() {
6        };
7
8        Photo.prototype.init=function(lat,lon,thumb,desc,name) {
9                this._x=long2coord(lon);
10                this._y=lat2coord(lat); 
11                this._xscale=this._yscale=Math.max(100/Math.pow(2,_root.scale-13),6.25);
12                this.thumb=thumb; this.desc=desc; this.name=name;
13        };
14       
15        Photo.prototype.onPress=function() {
16                _root.createEmptyMovieClip("popup",19);
17                pos=new Object(); pos.x=this._x; pos.y=this._y;
18                _root.map.localToGlobal(pos);
19                _root.popup._x=pos.x+10; if (pos.x>Stage.width-200) { _root.popup._x=pos.x-200; }
20                _root.popup._y=Math.max(20,pos.y);
21
22                _root.popup.createTextField('desc',1,5,5,190,290); 
23                var p=this;
24                with (_root.popup.desc) {
25                        multiline=true; wordWrap=true; selectable=true; type='dynamic';
26                        autoSize='left';
27                        styleSheet=_root.photocss;
28                        html=true;
29                        htmlText=p.desc;
30                        htmlText=htmlText.split('TARGET=""').join('');
31                        htmlText=htmlText.split('HREF="').join('href="');
32                        htmlText=htmlText.split('href="').join('target="_blank" href="');
33                }
34                var w=_root.popup.desc._width+10;
35                var h=Math.max(150,_root.popup.desc._height+10);
36
37                _root.popup.createEmptyMovieClip("drag",2);
38                _root.popup.createEmptyMovieClip("resize",3);
39                with (_root.popup.resize) {
40                        beginFill(0xFFFFFF,50); moveTo(0,0); lineTo(-10,0);
41                        lineTo(-10,-10); lineTo(0,-10); lineTo(0,0); endFill();
42                        lineStyle(1,0xFFFFFF);
43                        moveTo(-9,-2); lineTo(-2,-9);
44                        moveTo(-6,-2); lineTo(-2,-6);
45                        moveTo(-3,-2); lineTo(-2,-3);
46                }
47
48                _root.popup.createTextField('name',4,20,-18,w-20,19);
49                _root.popup.name.text=this.name;
50                _root.popup.name.setTextFormat(plainWhite);
51                _root.popup.name.selectable=false;
52
53                redrawPopup(w,h);
54                _root.popup.drag.onPress=function() { _root.popup.startDrag(); };
55                _root.popup.drag.onRelease=function() { _root.popup.stopDrag(); };
56
57                _root.popup.attachMovie("closecross","closex",5);
58                _root.popup.closex._x=10;
59                _root.popup.closex._y=-9;
60                _root.popup.closex.onPress=function() {
61                        removeMovieClip(_root.popup); 
62                };
63               
64                _root.popup.resize.onPress=function() { _root.popup.resize.onMouseMove=resizePopup; };
65                _root.popup.resize.onMouseUp=function() { _root.popup.resize.onMouseMove=null; };
66        };
67       
68        Object.registerClass("photo",Photo);
69
70
71
72        // ================================================================
73        // Support functions
74       
75        // popup redraw and resize
76       
77        function resizePopup() {
78                var w=_root._xmouse-_root.popup._x;
79                var h=_root._ymouse-_root.popup._y;
80                redrawPopup(w,h);
81        }
82       
83        function redrawPopup(w,h) {
84                if (w<50 || h<50) { return; }
85                with (_root.popup) {
86                        clear();
87                        beginFill(0,80); moveTo(0,0); lineTo(w,0);
88                        lineTo(w,h); lineTo(0,h); lineTo(0,0); endFill();
89                }
90                with (_root.popup.drag) {
91                        clear();
92                        beginFill(0,100); moveTo(0,0); lineTo(w,0);
93                        lineTo(w,-17); lineTo(0,-17); lineTo(0,0); endFill();
94                }
95                with (_root.popup.resize) { _x=w; _y=h; }
96                with (_root.popup.desc) { _width=w-10; _height=h-10; }
97                _root.popup.name._width=w-20;
98        }
99
100        // loadPhotos
101
102        function loadPhotos() {
103                var kmldoc=new XML();
104                kmldoc.load(preferences.data.photokml+"?bbox="+_root.edge_l+","+_root.edge_b+","+_root.edge_r+","+_root.edge_t);
105                kmldoc.onLoad=function() {
106                        // find level2 - <kml>
107                        var level1=this.childNodes;
108                        for (i=0; i<level1.length; i+=1) {
109                                if (level1[i].nodeName=='kml') {
110
111                                        // find level3 - <Document>
112                                        var level2=level1[i].childNodes;
113                                        for (j=0; j<level2.length; j+=1) {
114                                                if (level2[j].nodeName=='Document') {
115
116                                                        // find level4 - <Placemark>
117                                                        var level3=level2[j].childNodes;
118                                                        for (k=0; k<level3.length; k+=1) {
119                                                                if (level3[k].nodeName=='Placemark') {
120
121                                                                        // individual elements of Placemark
122                                                                        var p_name,p_icon,p_desc,p_lat,p_lon;
123                                                                        var level4=level3[k].childNodes;
124                                                                        for (l=0; l<level4.length; l+=1) {
125                                                                                switch (level4[l].nodeName) {
126                                                                                        case 'description':     p_desc=level4[l].childNodes[1].nodeValue; break;                // <description><![CDATA [...html...]]></description>
127                                                                                        case 'name':            p_name=level4[l].firstChild.nodeValue; break;           // <name>icon5.jpg</name>
128                                                                                        case 'Icon':            p_icon=getElement(level4[l],'href'); break;             // <Icon><href>http://a.com/b.jpg</href></Icon>
129                                                                                        case 'Point':           var p =getElement(level4[l],'coordinates');             // <Point><coordinates>1.5,51.2</coordinates></Point>
130                                                                                                                                var c =p.split(','); p_lon=c[0]; p_lat=c[1]; break;
131                                                                                }
132                                                                        }
133
134                                                                        // place photo
135                                                                        if (p_icon && !_root.map.photos[innocent(p_icon)]) {
136                                                                                var n=innocent(p_icon);
137                                                                                _root.map.photos.attachMovie("photo",n,++photodepth);
138                                                                                _root.map.photos[n].init(p_lat,p_lon,p_icon,p_desc,p_name);
139                                                                        }
140                                                                }
141                                                        }
142                                                }
143                                        }
144                                }
145                        }
146                };
147        }
148
149        function getElement(xmlobj,el) {
150                var a=xmlobj.childNodes; var r=null;
151                for (var i=0; i<a.length; i++) {
152                        if (a[i].nodeName==el) { r=a[i].firstChild.nodeValue; }
153                }
154                return r;
155        }
156
157        // remove non-alphanumerics
158        function innocent(a) {
159                var b='';
160                for (var i=0; i<a.length; i++) {
161                        var c=a.substr(i,1); if ((c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='9') || c=='_') { b+=c; }
162                }
163                return b;
164        }
Note: See TracBrowser for help on using the repository browser.