/* worldkitRSS: loads and parses RSS feed, creates and manages annotations */ import com.brainoff.worldkitMain; import com.brainoff.worldkitConfig; import com.brainoff.worldkitImages; import com.brainoff.worldkitInteraction; import com.brainoff.worldkitUtil; import com.brainoff.worldkitAnnotation; class com.brainoff.worldkitRSS { private var main:worldkitMain; private var conf:worldkitConfig; private var img:worldkitImages; private var interact:worldkitInteraction; private var mc:MovieClip; private var Points:Object; private var activeAnnotation:worldkitAnnotation; private var depth:Number; private var plotCount:Number; private var prevlat:Object; private var prevlon:Object; private var lastRequest:String; private var intervalId:Number; function worldkitRSS(main:worldkitMain) { this.main = main; Points = new Object(); } public function createDataLayer() { main.parent.createEmptyMovieClip("worldkitDatalayer",3); mc = main.parent.worldkitDatalayer; mc.lineTo(-1,-1); mc.origwidth = conf.w; mc.origheight = conf.h; mc.layers = new Array(); if (conf.zlevel == 1) { depth = 1; } else { depth = 10000; } } public function start() { conf = main.getConfig(); img = main.getImages(); interact = main.getInteract(); createDataLayer(); mc.createEmptyMovieClip("rss",20); mc.rss.origwidth = conf.w; mc.rss.origheight = conf.h; mc.layers.push("rss"); //the mc shouldn't be holding this REVISIT if (conf.accuplot != true) { interact.scaleAndPosition(mc.rss); } if (conf.track && conf.trackcats) { mc.rss.createEmptyMovieClip("tracks",depth); depth = depth + conf.zlevel; mc.rss.tracks.tracklayer = 1; } if (conf.dataurl.length > 0) { loadData(conf.dataurl); if (conf.updateurl.length == 0) { conf.updateurl = conf.dataurl; } if (conf.update > 0) { intervalId = setInterval( this, "loadData", conf.update * 1000, conf.updateurl); } interact.LoadingDialog(conf.loadrssmsg); } if (conf.fade != -1) { var freq = 60000; if (conf.fade < 60) { freq = conf.fade * 1000; } setInterval( this, "setAlphaFade", freq); } } public function loadData(urlArray:Array):Void { for (var i=0; i" + nv + ""; break; default: } } if (list != undefined) { list = worldkitUtil.myreplace(list,',',' '); // list.replace(this.regexws,' '); //REVISIT want to remove all whitespace } if (lat != "" && lon != "") { g = lat + "," + lon; } else if (list != "") { var listtmp = list.split(" "); lat = listtmp[0]; lon = listtmp[1]; g = lat + "," + lon; } //reshape annotation structure //so that it is readdressable in the same feed //and not dependent on g if (id == "") { id = g + ":" + n + ":" + v + ":" + u + ":" + sub.toString(); } for (var s in sub) { //REVISIT belongs in interact if (conf.categories[sub[s]] == undefined) { conf.categories[sub[s]] = true; } } sub.push("_default_"); if ((g != "" && interact.pointOnMap(lat,lon)) || (Points[id] != undefined) || (type != "")) { if (Points[id] == undefined) { var plat,plon; if (conf.trackcats) { //REVISIT -- prevlat not setup to be dynamically object or number plat = prevlat[ sub[0] ]; plon = prevlon[ sub[0] ]; } else { plat = prevlat['_default_']; plon = prevlon['_default_']; } Points[id] = new worldkitAnnotation(main,mc.rss,depth,n,u,lat,lon,v,sub,id,photo,plat,plon,list,type,dt,undefined,edt,icon); if (conf.plotinterval == 0) { Points[id].plot(); } else { worldkitUtil.setTimeout(Points[id],"plot",conf.plotinterval * plotCount); } depth = depth + conf.zlevel; plotCount++; if (conf.maxzoom) { if (type == "poly" || type == "line") { var varray = list.split(" "); for (var i=0; i 0) { if (intervalId) { clearInterval(intervalId); } intervalId = setInterval( this, "loadData", conf.update * 1000, conf.updateurl); } loadData(conf.updateurl); interact.LoadingDialog(conf.loadrssmsg); } } public function onJRSSComm(xml:String):Void { var rss:worldkitRSS = this; var loader:XML = new XML(); loader.ignoreWhite = true; loader.onLoad = function(success):Void { rss.onLoad(this,success); } loader.parseXML(xml); loader.onLoad(true); } public function onJGetItemComm(id:String):Void { if (Points[ id ] != undefined) { Points[id].GetItem(); } } }