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

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

Potlatch 1.1 (source)

File size: 4.2 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;
35                var h=Math.max(150,_root.popup.desc._height);
36
37                with (_root.popup) {
38                        beginFill(0,80); moveTo(0,0); lineTo(w,0);
39                        lineTo(w,h); lineTo(0,h); lineTo(0,0); endFill();
40                }
41
42                _root.popup.createEmptyMovieClip("drag",2);
43                with (_root.popup.drag) {
44                        beginFill(0,100); moveTo(0,0); lineTo(w,0);
45                        lineTo(w,-17); lineTo(0,-17); lineTo(0,0); endFill();
46                }
47
48                _root.popup.drag.onPress=function() { _root.popup.startDrag(); };
49                _root.popup.drag.onRelease=function() { _root.popup.stopDrag(); };
50
51                _root.popup.attachMovie("closecross","cross",3);
52                _root.popup.cross.onPress=function() { _root.popup.removeMovieClip(); };
53                _root.popup.cross._x=10;
54                _root.popup.cross._y=-9;
55
56                _root.popup.createTextField('name',4,20,-18,w-20,19);
57                _root.popup.name.text=this.name;
58                _root.popup.name.setTextFormat(plainWhite);
59                _root.popup.name.selectable=false;
60        };
61       
62        Object.registerClass("photo",Photo);
63
64
65
66        // ================================================================
67        // Support functions
68       
69        // loadPhotos
70
71        function loadPhotos() {
72                var kmldoc=new XML();
73                kmldoc.load(preferences.data.photokml+"?bbox="+_root.edge_l+","+_root.edge_b+","+_root.edge_r+","+_root.edge_t);
74                kmldoc.onLoad=function() {
75                        // find level2 - <kml>
76                        var level1=this.childNodes;
77                        for (i=0; i<level1.length; i+=1) {
78                                if (level1[i].nodeName=='kml') {
79
80                                        // find level3 - <Document>
81                                        var level2=level1[i].childNodes;
82                                        for (j=0; j<level2.length; j+=1) {
83                                                if (level2[j].nodeName=='Document') {
84
85                                                        // find level4 - <Placemark>
86                                                        var level3=level2[j].childNodes;
87                                                        for (k=0; k<level3.length; k+=1) {
88                                                                if (level3[k].nodeName=='Placemark') {
89
90                                                                        // individual elements of Placemark
91                                                                        var p_name,p_icon,p_desc,p_lat,p_lon;
92                                                                        var level4=level3[k].childNodes;
93                                                                        for (l=0; l<level4.length; l+=1) {
94                                                                                switch (level4[l].nodeName) {
95                                                                                        case 'description':     p_desc=level4[l].childNodes[1].nodeValue; break;                // <description><![CDATA [...html...]]></description>
96                                                                                        case 'name':            p_name=level4[l].firstChild.nodeValue; break;           // <name>icon5.jpg</name>
97                                                                                        case 'Icon':            p_icon=getElement(level4[l],'href'); break;             // <Icon><href>http://a.com/b.jpg</href></Icon>
98                                                                                        case 'Point':           var p =getElement(level4[l],'coordinates');             // <Point><coordinates>1.5,51.2</coordinates></Point>
99                                                                                                                                var c =p.split(','); p_lon=c[0]; p_lat=c[1]; break;
100                                                                                }
101                                                                        }
102
103                                                                        // place photo
104                                                                        if (p_icon && !_root.map.photos[innocent(p_icon)]) {
105                                                                                var n=innocent(p_icon);
106                                                                                _root.map.photos.attachMovie("photo",n,++photodepth);
107                                                                                _root.map.photos[n].init(p_lat,p_lon,p_icon,p_desc,p_name);
108                                                                        }
109                                                                }
110                                                        }
111                                                }
112                                        }
113                                }
114                        }
115                };
116        }
117
118        function getElement(xmlobj,el) {
119                var a=xmlobj.childNodes; var r=null;
120                for (var i=0; i<a.length; i++) {
121                        if (a[i].nodeName==el) { r=a[i].firstChild.nodeValue; }
122                }
123                return r;
124        }
125
126        // remove non-alphanumerics
127        function innocent(a) {
128                var b='';
129                for (var i=0; i<a.length; i++) {
130                        var c=a.substr(i,1); if ((c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='9') || c=='_') { b+=c; }
131                }
132                return b;
133        }
Note: See TracBrowser for help on using the repository browser.