En exempelapplikation i Leaflet: Skillnad mellan sidversioner

Från Webbling
Hoppa till: navigering, sök
Ingen redigeringssammanfattning
Rad 1: Rad 1:
Vi ska nu titta på hur man kan tänkas skapa en liten applikation kring Leaflet. Vi kommer att visa hållplatser på en karta och lägga till funktionalitet så att vi kan se information om de olika hållplatserna. Vi kommer att använda oss av Öppen data som hämtats ifrån [http://www.trafiklab.se/ Trafiklab]. Då vi inte riktigt har gått igenom hur man hämtar denna data, så kommer vi att fejka till det lite. Men vi återkommer till flera aktiviteter baserade kring data hämtad ifrån [http://www.trafiklab.se/ Trafiklab]. Om du vill läsa dessa redan nu gå till "[[Trafiklab]]".
Vi ska nu titta på hur man kan tänkas skapa en liten applikation kring Leaflet. Vi kommer att hämta data ifrån [http://data.karta.orebro.se/ Örebros projekt] med Öppen kartdata. Här finns en hel del trevlig information att tillgå. Vi ska titta på hur man kan läsa ut intresseplatser i Örebros kommun och visa upp dessa på en karta. Även om du inte kommer ifrån Örebro, så är detta en intressant uppsättning data som passar utmärkt till demo syfte.  En fördel med Örebros data är att man supportar CORS och att det därför går att hämta ned data ifrån klienbaserade webbapplikationer.
 
Vi ska bygga upp vår applikation i steg. Vi kommer att utföra sakerna ungefär i den ordning och med det upplägg man skulle haft om man gjort detta på "riktigt". Förhoppningsvis blir det lättare att hänga med då. Det är mycket kod som ska skrivas nu!
 
<div style="well well-meadow">
Vi kommer att använda Codepen-exempel, då dessa ser bra ut och är lätta att lägga in i Webbling. Dock så vill man förstås skriva lite annorlunda om man gör en "riktig" applikation. I slutet kommer vi att länka till den färdiga applikationen, så som den kan köras fristående.
</div>


Vi ska bygga upp vår applikation i steg. Vi kommer att använda Codepen-exempel, då dessa ser bra ut och är lätta att lägga in i Webbling. Dock så vill man förstås skriva lite annorlunda om man gör en "riktig" applikation. I slutet kommer vi att länka till den färdiga applikationen, så som den kan köras fristående.
== Steg 1 - grunder ==
== Steg 1 - grunder ==
Vi börjar med att skapa en grundstruktur för vår sida. Vi lägger till [[jQuery]] och [[Leaflet]], då vi kommer att behöva dessa för vår app. HTML:en kan då bli att se ut så här:
Vi börjar med att skapa en grundstruktur för vår sida. Vi lägger till [[jQuery]] och [[Leaflet]], då vi kommer att behöva dessa för vår app. HTML:en kan då bli att se ut så här:
<codepen pen="xZqpXz" tab="html" height="500">
<codepen pen="xZqpXz" tab="html" height="500">
</codepen>
</codepen>
Det finns nog inget som förtjänar att kommenteras i den lilla HTML-snutten.


Vi lägger även till lite basal CSS:
Vi lägger även till lite basal CSS:
Rad 11: Rad 18:
</codepen>
</codepen>


I CSS:en så startar vi med en minimal reset som gör att vi ska ha ungefär samma utgångsläge på alla webbläsare. Vi tar bort alla marginaler, all utfyllnad och ser till att vi använder oss av den "vettiga" modellen för boxar.
I CSS:en så startar vi med en minimal reset som gör att vi får ungefär samma grundutseende i alla webbläsare. Vi tar bort alla marginaler, all utfyllnad och ser till att vi använder oss av den "vettiga" modellen för boxar.


Då det är tänkt att det mesta i appen ska vara centrerat, så sätter vi att titeln i vår <code>[[hx | h1]]</code> ska vara centrerarad.
Då det är tänkt att det mesta i appen ska vara centrerat, så sätter vi att titeln i vår <code>[[hx | h1]]</code> ska vara centrerarad.


Det intressantaste vi gör i CSS är det som återfinns i <code>#karta</code>. Vi sätter höjden till <code>75vh</code>. Det vill säga cirka 75 % av den skärmens höjd. Se "[[Måttenheter i CSS]]", om du glömt hur dessa fungerar. Vi sätter samma proportioner även för höjden. Vi använder oss av <code>margin: 0 auto;</code> för att centrera vår kart-<code>div</code>. Slutligen sätter vi en kant runt om kartan.
Det intressantaste vi gör i CSS är det som återfinns i <code>#karta</code>. Vi sätter höjden till <code>75vh</code>. Det vill säga cirka 75 % av den skärmens höjd. Se "[[Måttenheter i CSS]]", om du glömt hur dessa fungerar. Vi sätter samma proportioner även för bredden. Vi använder oss av <code>margin: 0 auto;</code> för att centrera vår kart-<code>div</code>. Slutligen sätter vi en kant runt om kartan.


Titta på "Result"-fliken för att se vad vi har hitintills.
Titta på "Result"-fliken för att se vad vi har hitintills.


== Steg 2 - Lägga till karta på prov ==
== Steg 2 - Lägga till karta på prov ==
För att se om kartan fungerar bra ska vi lägga till en testversion av kartan. Vi kör helt enkelt som i vårt tidigare exempel och visar en karta centrerad kring Soltorgsgymnasiet.
För att se om kartan fungerar bra ska vi lägga till en testversion av kartan. Vi kör helt enkelt som i vårt tidigare exempel och visar en karta centrerad kring Soltorgsgymnasiet. Vi ändrar dock så att koordinaterna är centrerade på Örebro.


Koden blir att se ut så här:
Koden blir att se ut så här:
Rad 26: Rad 33:
</codepen>
</codepen>


Det ser ju helt acceptabelt ut.
Det ser ju helt acceptabelt ut och vi får automatisk den grundläggande navigerings-funktionalitet som man förväntar sig av en kartapplikation.


== Steg 3 - Läsa in data ==
== Steg 3 - Läsa in data ==

Versionen från 6 januari 2016 kl. 19.02

Vi ska nu titta på hur man kan tänkas skapa en liten applikation kring Leaflet. Vi kommer att hämta data ifrån Örebros projekt med Öppen kartdata. Här finns en hel del trevlig information att tillgå. Vi ska titta på hur man kan läsa ut intresseplatser i Örebros kommun och visa upp dessa på en karta. Även om du inte kommer ifrån Örebro, så är detta en intressant uppsättning data som passar utmärkt till demo syfte. En fördel med Örebros data är att man supportar CORS och att det därför går att hämta ned data ifrån klienbaserade webbapplikationer.

Vi ska bygga upp vår applikation i steg. Vi kommer att utföra sakerna ungefär i den ordning och med det upplägg man skulle haft om man gjort detta på "riktigt". Förhoppningsvis blir det lättare att hänga med då. Det är mycket kod som ska skrivas nu!

Vi kommer att använda Codepen-exempel, då dessa ser bra ut och är lätta att lägga in i Webbling. Dock så vill man förstås skriva lite annorlunda om man gör en "riktig" applikation. I slutet kommer vi att länka till den färdiga applikationen, så som den kan köras fristående.

Steg 1 - grunder

Vi börjar med att skapa en grundstruktur för vår sida. Vi lägger till jQuery och Leaflet, då vi kommer att behöva dessa för vår app. HTML:en kan då bli att se ut så här:

See the Pen xZqpXz by Patrik Grip-Jansson (@PGJ) on CodePen.

Det finns nog inget som förtjänar att kommenteras i den lilla HTML-snutten.

Vi lägger även till lite basal CSS:

See the Pen xZqpXz by Patrik Grip-Jansson (@PGJ) on CodePen.

I CSS:en så startar vi med en minimal reset som gör att vi får ungefär samma grundutseende i alla webbläsare. Vi tar bort alla marginaler, all utfyllnad och ser till att vi använder oss av den "vettiga" modellen för boxar.

Då det är tänkt att det mesta i appen ska vara centrerat, så sätter vi att titeln i vår h1 ska vara centrerarad.

Det intressantaste vi gör i CSS är det som återfinns i #karta. Vi sätter höjden till 75vh. Det vill säga cirka 75 % av den skärmens höjd. Se "Måttenheter i CSS", om du glömt hur dessa fungerar. Vi sätter samma proportioner även för bredden. Vi använder oss av margin: 0 auto; för att centrera vår kart-div. Slutligen sätter vi en kant runt om kartan.

Titta på "Result"-fliken för att se vad vi har hitintills.

Steg 2 - Lägga till karta på prov

För att se om kartan fungerar bra ska vi lägga till en testversion av kartan. Vi kör helt enkelt som i vårt tidigare exempel och visar en karta centrerad kring Soltorgsgymnasiet. Vi ändrar dock så att koordinaterna är centrerade på Örebro.

Koden blir att se ut så här:

See the Pen Qypaxd by Patrik Grip-Jansson (@PGJ) on CodePen.

Det ser ju helt acceptabelt ut och vi får automatisk den grundläggande navigerings-funktionalitet som man förväntar sig av en kartapplikation.

Steg 3 - Läsa in data

Nu behöver vi en datakälla...

Eftersom många API:er har gränser satt för hur ofta man får läs in data ifrån dem, kan det vara en bra idé att på experimentstadiet helt enkelt läsa ner en data mängd ifrån dem och spara denna lokalt. Under testandet så använder du sen denna undansparade data istället för att hämta hem den gång på gång. Det duger ju gott med denna typ av lagrad data medan vi håller på att slå fast hur layout och likande ska se ut.

För att läsa in brottsstatistik ifrån de senaste 24h, kan du göra följande anrop i en webbläsare:

http://brottsplatskartan.se/api.php?action=getEvents&period=1440