I rekken av vidreutviklinger og jobbing med Kartverkets bakgrunnskart (WMS) og OpenLayers biblioteket kommer nå neste episode. Denne gangen med støtte for geotaggede bilder.
Biblioteket som slippes i dag er såklart også lisensiert under en MIT-lisens, og gjør omtrent følgende:
Basert på en katalog med geotaggede bilder på webserveren plasserer den thumbnails av disse på kartet, og åpner en større versjon av dette bildet (via lightbox-aktig funksjonalitet). Dette kan såklart kombineres med GPX-funkjsonaliteten jeg tidligere har vist.
Dermed: en demo på funksjonaliteten finnes på http://kart.atlefren.net/sk_map/ (takk til Magnus Stoveland for bildene her, regner med at det er greit at jeg bruker dem?;)).
Så litt om funksjonaliteten: For å håndtere geotaggede bilder har jeg måttet ta i bruk litt PHP. Kort fortalt er dette en liten modifikasjon på koden fra masteroppgaven min, PHP-scriptet leser ut GPS-informasjon fra bilders EXIF-informasjon og bygger en GeoJSON-streng som så requestes fra OpenLayers scriptet ImageLoader.js. ImageLoader.js tar seg av å transformere koordinatene i GeoJSON stringen til UTM 33N, slik at de kan vises på kartet. I tillegg har jeg implementert LightLightbox.js, en enkel versjon av Lightbox-funksjonaliteten.
For å vise thumbnails av bildene (og store, men ikke fullsize bilder) brukes funksjonaliteten i PHP-klassen Resize_Image, hentet fra http://www.bitrepository.com/resize-an-image-keeping-its-aspect-ratio-using-php-and-gd.html.
Og, kildekoden finner du som en zip-fil på code.atlefren.net/source/sk_map.zip, den skal være å bare pakke ut på egen webserver og ta i bruk. Det eneste kravet er at du har noen GPX filer og/eller geotaggede bilder. Har du GPX-filer, men ikke geotaggede bilder kan du teste f.eks Prune, som jeg ble positivt overrasket over (kjører på alle platformer).
Husk bare et par ting: siden både GPX-filer og bildene er vektorer i kartet kan det bli vel mye for en stakkars JavaScript motor om du kjører på med for mange bilder og/eller GPX-filer (les mer i OpenLayers sin FAQ).
I tillegg er det et par kjente bugs/shortcomings her:
- Når bildelaget er aktivt kan du ikke klikke på GPX-filene for å få en popup
- PHP-classen for å håndtere bilderesizing gjør alt on-the-fly, dette kan føre til ytelsesproblemer ved mye bruk
- LightLightbox.js-koden er, for å si det mildt, elendig utseendemessig.
- Det finnes ingen load-indikatorer på bilder etc
Dog, all den tid jeg har frigjort koden er det bare å ta tak i dette, jeg er ikke noen ekspert på hverken PHP eller CSS, men det burde være greit å endre på slikt. Ellers skal koden være “greit nok” dokumentert, finner du at den ikke er det så si fra!
Og, jeg tar gjerne imot innspill til forbedringer!