Eötvös Loránd Tudományegyetem Informatikai Kar Térképtudományi és Geoinformatikai Tanszék
Térben és időben változó folyamatok megjelenítése webtérképen SVG alkalmazásával Diplomamunka
Kádár Iván térképész mesterszakos hallgató
Témavezető:
Dr. Gede Mátyás Adjunktus
Budapest, 2013
Tartalomjegyzék 1 Bevezetés...........................................................................................................................4 2 Térképi animáció készítésének és megjelenítésének lehetőségei.................................5 2.1 Előzmények..............................................................................................................5 2.2 Térképi animáció alapjai.........................................................................................6 2.3 Mozgókép..................................................................................................................7 2.4 Videó..........................................................................................................................8 2.5 Flash animáció.........................................................................................................8 2.6 Egyéb beépülők........................................................................................................9 2.7 HTML5 canvas.........................................................................................................9 3 Az alkalmazáshoz felhasznált technológiák ismertetése............................................11 3.1 PHP..........................................................................................................................11 3.2 SVG.........................................................................................................................11 3.3 JavaScript...............................................................................................................12 4 A megvalósított alkalmazás rövid ismertetője............................................................13 4.1 Adatok.....................................................................................................................13 4.2 Feldolgozás.............................................................................................................13 4.3 Megjelenítés............................................................................................................13 5 A feladat megvalósítása.................................................................................................14 5.1 Az induló oldal (index.php)...................................................................................14 5.1.1 Az induló oldal PHP kódrésze.......................................................................14 5.1.2 Statikus HTML kód.......................................................................................15 5.1.3 SVG kód..........................................................................................................17 5.2 A Google KML fájlokat kezelő PHP függvények................................................18 5.2.1 listKmlFiles($fileid)........................................................................................18 5.2.2 readKml($fname)...........................................................................................19 5.2.3 place2Arr($place, $i)......................................................................................20 5.3 A geometriát feldolgozó PHP függvények............................................................20 5.3.1 calcDataExtents($datas)................................................................................20 5.3.2 calcImgExtents($dataextents, $width, $height)...........................................20 5.3.3 calcProjdatas($latmax, $lonmax, $latmin, $lonmin)..................................21 1
5.3.4 pointLonLat2Xy($llcoords)...........................................................................22 5.3.5 lonLat2Xy($llcoords).....................................................................................22 5.3.6 lon2x($lon)......................................................................................................22 5.3.7 lat2y($lat)........................................................................................................22 5.4 Az időadatokat feldolgozó PHP függvények........................................................22 5.4.1 calcTime($datas, $timeval)............................................................................22 5.4.2 timeOptions($timetype).................................................................................23 5.4.3 printTime($time, $timeval)...........................................................................23 5.5 Egyéb PHP függvények.........................................................................................23 5.5.1 manageSession().............................................................................................23 5.5.2 writesvg($polyarray, $linearray, $pointarray, $timedata, $sortbegin, $sortend, $height, $svgheight)................................................................................24 5.5.3 anim.js.php.....................................................................................................25 5.5.4 my_json_encode($arr)...................................................................................25 5.6 Az animációért felelős JavaScript függvények....................................................25 5.6.1 show()..............................................................................................................25 5.6.2 doShow(id, time).............................................................................................26 5.6.3 hide()................................................................................................................26 5.6.4 doHide(id, time)..............................................................................................26 5.6.5 hideall()...........................................................................................................26 5.6.6 timeline(linesteps, mintime, maxtime).........................................................26 5.6.7 sizeTimeline(i, h, text)....................................................................................27 5.7 Egyéb JavaScript függvények...............................................................................27 5.7.1 checkFirefox().................................................................................................27 5.7.2 showFfError().................................................................................................27 5.7.3 showLongDesc().............................................................................................28 5.7.4 hideLongDesc()...............................................................................................28 5.7.5 checkExt(file)..................................................................................................28 5.7.6 showItemDesc(item).......................................................................................28 6 Az alkalmazás használatának bemutatása..................................................................29 6.1 Az oldal szerkezete.................................................................................................29 6.2 Google KML fájl előkészítése...............................................................................30
2
6.3 Adat kiválasztása, feltöltése..................................................................................31 6.4 Animáció lejátszása, megállítása..........................................................................31 6.5 További funkciók...................................................................................................32 7 A rendszer továbbfejlesztésének lehetőségei...............................................................33 7.1 Animáció időzítése, megállítása............................................................................33 7.2 Animáció sebességének módosítása......................................................................33 7.3 Időadatok kiírása a térképi elemekre kattintva..................................................33 8 Összegzés, tapasztalatok...............................................................................................34 9 Köszönetnyilvánítás.......................................................................................................35 10 Irodalomjegyzék..........................................................................................................36 11 Ábrajegyzék..................................................................................................................38 12 Mellékletek...................................................................................................................39 12.1 A mellékelt CD tartalma......................................................................................39 12.1.1 A work könyvtár tartalma...........................................................................39 12.1.2 A www könyvtár tartalma...........................................................................39
3
1 Bevezetés Diplomamunkám és a hozzá kapcsolódó webes alkalmazás célja, hogy bemutassam a térképi animációk megvalósításának lehetőségeit, és felvázoljak egy modern, a ma egyre inkább terjedő digitális eszközökön – mobiltelefonokon, tableteken – is megjeleníthető animációs módszert, a böngészőben történő térképrajzolást vektorgrafika (SVG) és JavaScript használatával. Dolgozatomban először elemzem a különböző animációs lehetőségeket, megvizsgálva előnyeiket és hátrányaikat, majd röviden bemutatom az alkalmazásomhoz felhasznált technológiákat. Ezt követően bemutatom az elkészült alkalmazást, ismertetem a megvalósítás menetét, majd a kész program használatát. Végül vázolom a további fejlesztési lehetőségeket, és ismertetem a fejlesztés közben szerzett tapasztalataimat.
4
2 Térképi animáció készítésének és megjelenítésének lehetőségei 2.1 Előzmények A változás ábrázolásának klasszikus megoldása, hogy azonos kivágattal elkészítünk több térképet más-más időpontról, és azokat egymás mellé téve láthatóvá válnak a különbségek. Ilyen például a Magyarország népsűrűségét ábrázoló térképsorozat a Cartographia Kft. által kiadott Középiskolai földrajzi atlasz 36. oldalán. [2.1. ábra]
2.1. ábra: A népsűrűség változása négy térképen
Ennek előnye, hogy a felhasználó alaposan megnézheti, összehasonlíthatja a térképeket, felfedezheti a változásokat. Hátránya azonban, hogy a képek darabszáma korlátozott. Ahhoz, hogy jól összehasonlítható legyen két időpont, a térképeket egyszerre kell látnia a felhasználónak, a lapozás pedig jelentősen rontja az információ befogadását. Ezen kívül legalább a céltematikát meg kell rajzolni minden térképhez külön-külön. A korlátosság miatt jól meg kell válo5
gatni az ábrázolt időpontokat, időintervallumokat, hogy minden fontos változás megjelenjen. Például egy évszázadonként ábrázolt közigazgatási térképsorozat esetében egy-egy évszázad alatt sok határváltozás történhet. Ezek egy része esetleg nem fog megjelenni a térképeken, hogy azok tartalma áttekinthető maradjon.
2.2 Térképi animáció alapjai A kartográfusok már az 1930-as évek elején tettek kísérleteket arra, hogy az idődimenzió felhasználásával dinamikussá tegyék a térképi ábrázolást. Már a második világháború alatt készültek filmes animációk a híradásokhoz, ahol hadmozgásokat mutattak be. (Schafer, 1993) Számítógépes animációk készítésével kísérleteztek az 1960-es években is, azonban igazán elterjedtté és népszerűvé a személyi számítógépek megjelenésével válhatott ez a lehetőség. (Peterson, 1994) Ezzel együtt megjelentek a nyilvánvaló problémák is. Egy animáció alatt a szemlélőnek nincs elég ideje részletesen megvizsgálni az egyes képeket, így sokkal kevesebb információ tárolható egy-egy képkockán, mint egy statikus térképen. A térképi animációnak két fajtája lehetséges, az időbeli animáció és az időfüggetlen animáció. Akkor beszélünk időbeli animációról, mikor olyan folyamatot jelenítünk meg, ami a valóságban is rendelkezik időhöz kötöttséggel. Ilyen például a népességnövekedés megjelenítése. A másik lehetőség, amikor az animáció előrehaladtával valami mást szemléltetünk, például egy adott időpontban különböző korcsoportokra vetített népsűrűségi adatok egy adott területen. (Peterson, 1996) Dolgozatomban az előbbi, tehát időbeli animációval foglalkozom, a nem időbelit csak megemlítem. Mindkét esetben igaz, hogy míg a statikus térkép egyszerre mutatja meg minden információját, addig az animációk az idő előrehaladtával jelenítik meg információtartalmukat. Ha az animáció túl hosszúra nyúlik, a szemlélő nem tudja befogadni az egészet, mivel a rövid távú memóriája nem tárolja el a kezdeti információkat. (Harrower – Fabrikant, 2008) Ahogy egy hagyományos térképnek van geometriai méretaránya, úgy az animációnak is van egy időbeli méretaránya. Például, ha egy tíz éves folyamatot egy percben ábrázolunk, akkor az animáció időbeli méretaránya 1:5,3 millió lesz. (Harrower – Fabrikant, 2008) A statikus térkép jelmagyarázatához hasonlóan a térképi animációnak is szüksége van egy időbeli magyarázatra, tehát ábrázolnunk kell, hogy éppen mely időpontnál tartunk, külön6
ben a szemlélő nem fogja tudni meghatározni az időbeli méretarányt. (Peterson, 2000) Ezt a magyarázatot dinamikussá is tehetjük, ekkor a felhasználó magának választhatja ki, hogy épp mely időpontot szeretné szemlélni. (Asproth, 1995)
2.3 Mozgókép Az animált térképek legegyszerűbb változata az elkészült önálló képeket képkockaként való összefűzése. Erre a legelterjedtebb megoldás a Graphics Interchange Format (gif) állomány alkalmazása, melynek az 1989-es, továbbfejlesztett változata (GIF89a) tette lehetővé több képkocka összefűzését. [2.2. ábra] A formátum előnye, hogy veszteségmentes tömörítést használ, azonban ezt csak egy legfeljebb 256 színből álló paletta alapján tudja megtenni. A paletta ugyan nem előre definiált, így bármely RGB szín bele tehető, illetve lehet egy átlátszó „színt” is definiálni, azonban a 256-féle szín így is komoly korlátozásnak bizonyult a technológiai fejlődés mellett. A formátum másik problémája a zárt tömörítési
algoritmus
(LZW)
alkalmazása
volt.
(Neuendorffer, 2000)
2.2. ábra: Egy képkocka egy GIF formátumú mozgó térképből
Mindezek kiváltására jött létre a Portable Network Graphics (png) fájlformátum, illetve ennek animált változata az APNG. Ennek előnye, hogy már a teljes 32 bites RGBA színskála támogatja, tehát nemcsak, hogy nem kell 256 színt kiválasztanunk, de még az egyes képpontok átlátszóságát is szabályozhatjuk 256 fokozatban. (European Commission, 2013) A GIFnek a színkorlátozottságában is megjelenő elavultsága ellenére nagy előnye, hogy minden platformon támogatott a megjelenítése, míg az APNG ugyan évek óta támogatott a legtöbb böngészőben, azonban a sokak által használt Internet Explorernek a legújabb, 10-es verziója is csak az első képkockát jeleníti meg. A technikai akadályokon túl továbbra is probléma, hogy nem vezérelhető a megjelenítés. A képkockákat egyesével meg kell rajzolni, és össze kell őket fűzni. Innentől amikor a felhasználó amikor megnyitja az oldalt vagy képet, az végtelenített ciklusban fogja leját7
szani a képkockákat egymás után. Mivel raszteres állományról van szó a fájlméret viszonylag nagy lesz. Ezen kívül az elkészítése, módosítása nagyon problémás, időigényes.
2.4 Videó Videó fájlban bármilyen animáció eltárolható, így ábrázolás szempontjából ezzel érhetőek el a leglátványosabb eredmények. [2.3. ábra]
2.3. ábra: Képkocka egy videóanimációból
Emellett azonban rengeteg hátránya van. A fájlmérete nagy, interaktivitása kimerül a megállíthatóság, és visszatekerhetőség funkcióknál. Megjeleníthetősége erősen függ a céleszköztől, az arra feltelepített szoftverektől, kodekektől. Nem megjósolható, hogy a felhasználó böngészője helyben lejátssza-e, vagy más alkalmazásban nyitja-e meg, és annak milyen képességei lesznek. A videó fájlnak az elkészítése is hosszadalmas, a látványos összeállítás készítése is szakértelmet igényel. Nehéz megtalálni az egyensúlyt a méret és a minőség között.
2.5 Flash animáció Az elmúlt évtized egyik legnépszerűbb animációs eszköze volt a weboldalakon. Eredeti célja vektorgrafikus animációk készítése volt, azonban ahogy fejlődött, egyre több funkcióval vértezték föl. Az ActionScript programozási nyelvnek köszönhetően szinte bármilyen program megírható benne. Interaktív kezelőfelületet képes biztosítani a felhasználónak, képes lejátszani hangot, videót. 8
A platform hátránya, hogy szükséges hozzá egy Flash lejátszó. Ez sokáig természetesnek tűnhetett, hogy elérhető a felhasználók gépén, bár rossz hatásfoka már addig is észlelhető volt a nem Windows operációs rendszert futtató gépeken. Az okostelefonok és tabletek megjelenésével azonban előtérbe kerültek a hiányosságok. A környezet billentyűzetre és egérre lett kitalálva, így nem tudja megfelelően kezelni az érintőkijelzőket, illetve a kis képernyőméret sem kedvez neki. Kezdetben a fejlesztők próbálták kiküszöbölni a hibákat, ám végeredményben kijelenthető, hogy a mobileszközök, és a rajtuk futó böngészők gyenge vagy semmilyen támogatást nem nyújtanak Flash tartalmak lejátszására. (Winokur, 2011)
2.6 Egyéb beépülők Animált térkép készíthető különböző böngészőbe épülő alkalmazásokkal is, mint például a Google Föld Plug-in. [2.4. ábra] Azonban a Flashhez hasonlóan ezeket is külön telepíteni kell a böngészőhöz, és ezek legtöbb esetben csak asztali gépekre, Windows alatt érhetőek el, esetleg Mac OS X-re, mint a Google Föld esetében is.
2.7 HTML5 canvas
2.4. ábra: Animáció Google Föld Plug-in használatával
A HTML5-ben megjelent a canvas elem, mely egy dinamikusan méretezhető és újrarajzolható rasztergrafikus felületet biztosít a böngészőben. A rajzolás JavaScript segítségével történhet rá. Bár új elemet rárajzolni dinamikusan lehet, törölni csak az egész rajzot tudjuk. Ennek következtében ha csak egy elemet szeretnénk eltávolítani, az egész rajzot újra kell rajzoltatnunk a böngészővel, ami nem tekinthető optimális megjelenítésnek, cserébe viszont 3D-s megjelenítés esetén a támogatott eszközökön hardveres gyorsítás is elérhető.
9
Bár a HTML5 szabvány még nem végleges, magának a canvas elemnek a támogatottsága a böngészőkben általánosnak mondható. A ma használt asztali, illetve mobil böngészők közül kizárólag az Internet Explorer 8-as vagy korábbi verziói nem támogatják. Ugyan a még ma is igen elterjedt Windows XP operációs rendszerre ez a legutolsó verzió, azonban egy kiegészítő telepítésével ez a böngésző is képessé tehető a canvas megjelenítésére. (Paul, 2008)
10
3 Az alkalmazáshoz felhasznált technológiák ismertetése 3.1 PHP A PHP programozási nyelv egy szerver oldali script nyelv. Tervezésekor csupán egy makrókészlet volt, mely honlapok karbantartásában segédkezett. Ám ezen hamar túlnőtt, és önálló programnyelvvé vált, mely dinamikus weboldalak készítésére használható, ennek megfelelően gyorsan és hatékonyan lehet vele HTML kódokat generálni, űrlapokat feldolgozni, és az elterjedt adatbázisszerverekhez is biztosít elérést. A PHP előnye a kész függvényekben rejlik, melyeket arra optimalizáltak, hogy kényelmesen, gyorsan lehessen dinamikus oldalakat generálni különböző adatforrások, illetve a felhasználó visszajelzései alapján. Ennek köszönhetően gyorsan lehet benne fejleszteni, és a rá bízott feladatokat nagyon hatékonyan tudja elvégezni.
3.2 SVG Az SVG (Scalable Vector Graphics) egy XML alapú leíró nyelv, amivel vektoros grafikát lehet meghatározni. Ez használható vektorgrafikus rajzprogram adatfájljaként (pl.: Inkscape), de a modern böngészők is képesek megjeleníteni az ily módon leírt grafikát beágyazva a HTML kódba. Ennek előnye, hogy nem csak egy előre megrajzolt képet lehet vele megjeleníteni, hanem akár valós időben is szerkeszthető felhasználói oldalról JavaScript segítségével. Összehasonlítva a fentebb már bemutatott canvas elemmel, az SVGnek megvan az az előnye, hogy az objektumok kirajzolás után is önállóak maradnak, így nem csak megjeleníteni, de eltüntetni is lehet őket anélkül, hogy az egész rajzterületet újra kéne rajzoltatni. Ez jóval kényelmesebben kezelhetővé, és jóval erőforrás-kímélőbbé teszi ezt a technológiát. Továbbá az SVG külső fájlok beemelését is lehetővé teszi, így akár egy raszter képet is megjeleníthetünk a vektoros objektumok között. Mivel nem egy elemről van szó, amiben csak képpontok találhatóak, mint a canvas esetében, az SVG-ben kirajzolt pontok, vonalak, felületek interaktívak is lehetnek: ha rámutatunk az egérrel, vagy rákattintunk egy 11
elemre, az végrehajthat JavaScript utasításokat is, így akár egész kezelőfelületet is írhatunk a segítségével. Az SVG megjelenítési kompatibilitása a böngészőkben megegyezik a canvas tulajdonságaival, tehát csak az Internet Explorer 8-as vagy régebbi verziói nem támogatják, ám egy plugin segítségével ez a probléma is kiküszöbölhető. (Savarese, 2012)
3.3 JavaScript A PHP-val ellentétben a JavaScript olyan script nyelv, ami a felhasználó böngészőjében fut. Ennek köszönhetően nem kell az adatokat visszaküldenünk a szervernek ahhoz, hogy reagálhassunk a felhasználó beavatkozásaira. Szintén rengeteg előre megírt függvénnyel rendelkezik, melyek segítségével valós időben módosítható a HTML oldal tartalma, és akár a HTML-be ágyazott SVG tartalom is, mint azt majd láthatjuk a későbbiekben.
12
4 A megvalósított alkalmazás rövid ismertetője 4.1 Adatok A weboldal a térképi adatokat Google KML állományból olvassa be. A felhasználó feltöltheti saját adatfájlját, vagy választhat a szerveren lévők közül egyet.
4.2 Feldolgozás A szerveren a PHP program beolvassa a térbeli és időadatokat a KML fájlból. A WGS84 ellipszoidi koordinátákból vetületi koordinátákat számol. Ebből kiszámítja a szélső koordinátákat, és a weboldalon megjelenő kép méretének függvényében a szükséges nagyítási értéket. Elkészíti a HTML kódba ágyazandó vektorgrafikus (SVG) kódot külön-külön a pontszerű, vonalas és felületi elemekre, és hivatkozást generál az animáció hátteréül szolgáló statikus térképhez. Az időadatokból meghatározza az animáció kezdő- és végidőpontját. Ha a felhasználó nem adott meg lépésközt, akkor meghatározza, hogy egy egységnyi idő alatt mennyi valós idő teljen el az animációban. Ezen adatok alapján kiszámítja, hogy az egyes rajzi elemek mikor jelenjenek meg, illetve tűnjenek el.
4.3 Megjelenítés A böngésző a megkapott hivatkozás alapján megjeleníti az OpenStreetMap szerveréről letöltött háttértérképet. Az animáció elindításakor a JavaScript kód sorra veszi a térképi elemeket, és a megfelelő időpontban megjeleníti, illetve eltünteti őket a képernyőről. Eközben a térkép jobb oldalán egy idősávban látható az animáció kezdő- és végidőpontja, illetve hogy a kettő között éppen hol tartunk.
13
5 A feladat megvalósítása 5.1 Az induló oldal (index.php) Mikor a felhasználó belép az oldalra az index.php által generált tartalom fogadja. Ennek egy része statikus HTML kód, míg más kódrészeket a PHP állít elő. A fájl első sora a a DOCTYPE-ot tartalmazza, mely a böngésző számára azonosítja a weboldal típusát. Ez megmondja, hogy a további tartalmat az XHTML 1.0 Transitional szabvány szerint kell értelmezni.
5.1.1 Az induló oldal PHP kódrésze A következő részben a PHP programkódokat ismertetem. Ezeket a kódokat a böngésző nem kapja meg, hanem a PHP értelmezi még szerver oldalon. Az alkalmazás a session_start() függvény meghívásával létrehoz egy egyedi azonosítót és egy változót, melybe az adott felhasználó adatai kerülnek (pl. kiválasztott fájl azonosítója, idő adatok). A jobb átláthatóság és a biztonság növelése érdekében a különböző feladatokat ellátó programkódok külön függvénybe kerültek, és az ezeket tartalmazó fájlok nem érhetőek el közvetlenül az internetről. Ezek a fájlok egy külön munkakönyvtárban találhatóak, melynek elérési útját a globals.inc.php tartalmazza. Ennek az is az előnye, hogy ha másik szerverre kéne költöztetni az alkalmazást, akkor az elérési utakat csak ebben a globals.inc.php fájlban kéne átírni.
A következő parancs tehát ennek a fájlnak a betöltése, majd az ebben található állandók felhasználásával a munka könyvtáron belül található svg_anim.inc.php és a php_google_maps/staticmap.inc.php fájlok betöltése, melyek a további szerver-
oldalon használt függvényeket tartalmazzák. A weboldalon megjelenő térkép méretét a $width és a $height változók tartalmazzák. Ezek értékét beállítottam 800 és 500 képpontra, ami a manapság használt kijelzőkön egy jól látható nagy képet, és körülötte egy kényelmesen elférő weboldalt eredményez. A kézi eszköz egy részének, főleg mobiltelefonoknak ugyan kisebb a felbontása, mint az egész weboldal mérete, azonban ezeknél az eszközöknél a böngésző alapértelmezés szerint 14
akkorára kicsinyíti az oldalt, hogy az beférjen a képernyőbe, és a felhasználó könnyedén tud egyes részletekbe belenagyítani, arrébb görgetni az oldalt. A manageSession() függvény meghívása biztosítja, hogy a felhasználó kérései teljesüljenek. Ez kezeli a kiválasztott térkép, és az animáció sebességének tárolását. A listKmlFiles($fileid) függvény elkészíti a szerveren elérhető KML fájlok listáját, és kiválasztja közülük az aktuálisan megjeleníteni kívánt állományt. A readKml($fname) függvény végzi a kiválasztott állományból az adatok beolvasását a későbbiekben felhasználható PHP változókba. A calcTime($datas, $timeval) függvény feladata az adatokból meghatározni, hogy melyik a legkorábbi és a legkésőbbi időpont az animációban, és hogy az animáció sebességét ennek alapján meghatározza. A calcDataExtents($datas) a
szélső
függvény
koordinátaértékeket.
Ezt
az
a
geometriai
adatot
rögtön
adatokból tovább
is
kiszámítja adja
a
calcImgExtents($dataextents, $width, $height) függvénynek, ami a kép-
méret és a szélső adatok alapján meghatározza, hogy mik is lesznek a térkép sarok- és középponti koordinátái, és hogy melyik az optimális nagyítási szint. A calcProjdatas($latmax, $lonmax, $latmin, $lonmin) függvény a földrajzi sarokkoordinátákból számít vetületi koordinátákat, illetve meghatározza a vektorgrafikus állomány kép vetületi méreteit.
5.1.2 Statikus HTML kód Ebben a szekcióban a weboldal fizikai szerkezete kerül meghatározásra. A HTML kódba helyenként PHP hívások is megjelennek, melyek biztosítják a képméret meghatározását, és az ehhez illeszkedő egyéb megjelenő elemeket, mint például a térkép ismertetőjét, vagy az egyes térképi objektumok leírását. Továbbá ebben a szekcióban kerül meghívásra a
writesvg($polyarray,
$linearray,
$pointarray,
$timedata,
$sortbegin, $sortend, $height, $svgheight) függvény is, ami elvégzi a vek-
torgrafikus adatok SVG formátumba öntését is, hogy a böngésző képes legyen a megjelenítésükre.
15
Először is meg kell adni a böngészőnek, hogy HTML kód következik. Ezt követően a fejlécben () megtörténik a karakterkódolás beállítása, a weboldal címének megadás, az esztétikus megjelenésért felelő CSS stíluslap elérésének beállítása, és az animáció működéséhez szükséges JavaScript kódokat tartalmazó fájlok betöltése. A felhasználó számára a weboldal látható részét a törzs () rész foglalja magába. Az ezen belül található első doboz (
) az oldal címét tartalmazza, majd egy figyelmeztetést, ami akkor jelenik meg, ha a böngésző nem alkalmas a JavaScript futtatására, végül egy leírás rövid és hosszabb változatát az oldalra látogató felhasználó számára. Ha a felhasználó Windows operációs rendszert és a Firefox böngésző 17-nél újabb változatát használja, akkor megjelenik még egy figyelmeztetés, illetve leírás, ami ezen böngésző megjelenítési hibájáról, és a hiba megoldásáról tájékoztatja. A következő dobozon belül helyezkedik el az összes többi tartalom. A felhasználó által beállítható tartalmak két dobozba (és ezzel együtt két sorba) kerültek. Felül a térkép kiválasztását biztosító lista, és a saját térkép feltöltését lehetővé tevő elem található, alatta pedig az animáció indítása, leállítása gombok, illetve a sebesség beállítását biztosító eszköz található. A térkép kiválasztás, feltöltés és a sebesség beállítás