En gjesteforelesning jeg holdt i E-business faget på Norges IT høgskole. Viste eksempler og kode for å ta i bruk Google Maps APIet og et par andre APIer. I tillegg viste jeg hvordan studentene kan hente ned JSON data fra forskjellig kilder for å plotte data dynamisk i kartet.
Presentasjonen er utarbeidet i samarbeid med Rolando Gonzales
2. Hva er Oslo Bysykkel?
• Oslo Bysykkel er et samarbeid mellom
Clear Channel Norway AS og Oslo
Kommune
• Bysykkelordningen er reklamefinansiert
• Ordningen startet i 2003. Den gang ble
det lånt 284.561 sykler. I 2012 var tallet
1.017.015.
Osloby.no (2012) & bysykler.no (2012)
3. Bakgrunn for prosjektet
• Jeg kom alt for ofte til et tomt stativ
• Ville finne ut hvor og når det var mulig å få
tak i en sykkel
• Hentet ned data fra Bysykkel og YR
• Brukte det til å finne ut når det var
statistisk sannsynlig å finne en ledig
sykkel
• Begynte å leke med Google Maps
14. Hva er JSON?
• JSON (Javascript Object Notation) er
syntaks (kode) for å lagre og utveksle
informasjon.
• Nettjenester returnerer gjerne både XML
og JSON.
(W3C, 2013)
15. Ett JSON-objekt
• Ett JSON-objekt lagrer informasjon om én
ting, for eksempel en person:
– {name: “Peter”, mobile: 45454545…osv.}
16. En JSON-objektliste
• En JSON-objektliste har som hensikt å
lagre mange JSON-objekter sammen:
{personer:[
{name: “Peter”, mobile: 45454545},
{name: “Julie”, mobile: 45885454},
{name: “Lisa”, mobile: 45956475}
]}
17. JSONP
• Vanlig feilmelding:
XMLHttpRequest cannot load
http://api.citybik.es/bysykkel.json. Origin
http://dittdomene.com is not allowed by
Access-Control-Allow-Origin.
• Løsning: JSONP - JSON with Padding
• En kommunikasjonsteknikk for å be om data
fra en server på et annet domene, noe som
er forbudt av typiske nettlesere
27. InfoWindow (1/4)
var pin = new google.maps.MVCObject();
var title = document.createElement("DIV");
var streetview = document.createElement("DIV");
var content = document.createElement("DIV");
content.appendChild(title);
content.appendChild(streetview);
var infowindow = new google.maps.InfoWindow({
content: content
});