Tag Archive | OpenLayers

Open Layers 4.0.0

I fredags släpptes Open Layers 4.0.0! Detta inlägg blir en snabbtitt på vad som är nytt.

Läs mer…

Annonser

Smålandskommunernas Webbkartor

2014 skannade jag av smålandskommunernas webbsidor för att ta reda på hur de hanterar kartor. Nu har jag gjort samma sak igen!

Häng med så skall du få se resultatet. Och det har hänt en del… Läs mer…

QGIS Story

Nej, det handlar inte om QGIS historia. Utan om ett insticksprogram jag håller på med, som jag tänkte presentera i detta inlägg. Mot slutet så finns det även länkar till insticksprogrammet om du känner dig järv nog att prova, även om jag tror att det är helt ofarligt.

giphy

Läs mer…

Nästan för enkelt…

Igår pratade jag om PNG vs JPG i tiles för webbkartor. I dag tänkte jag lite snabbt visa vad det är jag hållit på med och som rubriken antyder så var det faktiskt förvånansvärt enkelt.

Jag säger inte att vem som helst klarar av det, för du behöver skapliga kunskaper i java-skript, men det mesta kan man faktiskt googla sig till, och modifiera efter önskemål.

Skärmbild från 2015-11-07 17:38:22 Läs mer…

OpenLayers 3 – Högt tempo

I förra veckan släpptes Open Layers 3.4 vilket fick mig att reagera lite eftersom jag tyckte ol 3.0 släpptes alldeles nyss.

Skärmbild från 2015-03-29 12:40:05Som framgår av bilden ovan så släpptes v3.0 runt den 29 Augusti, följt av 3.1 i December, 3.2 i Februari och 3.3 i början på Mars…

I det här tempot så släpps väl 3.5 om fjorton dagar!

Vad är det då som hänt mellan versionerna.

3.1 Innehöll 214 ”pull requests” och man lyfter särskilt fram rendering av punkter med WebGL, iteraktion med UTF-Grid, Stilar med alternativa geometrier (?), det går att ladda bibliotek med ”module loaders” och några ytterligare.

3.2 Denna hade 70 ”pull requests” och innehöll bland annat förbättringar i KML-formatet, WMTS ”GetCapabilities”, WebGL stöd för ”feature hit” för punktlager med mera.

3.3 Här var det 40 ”pull requests” med bland annat stöd för ArcGIS REST tile layers, mer stöd för WMTS och en funktion för att panorera kartan automatiskt när exempelvis pop-up fönster används.

Fram till 3.2 så var allt bakåtkompatibelt, men i 3.3 så ändrade man ”mouseMove” till ”pointerMove”. Uppgraderar du så behöver du alltså kontrollera om du använder ”mouseMove” och i så fall ändra.

3.4 Den senaste utgåvan har mer än 40 ”pull requests” där exempelvis dateline wrapping för tile-lager lagts till. Draw kan nu även rita en cirkel.

Det verkar faktiskt som att man planerar att släppa en ny version varje månad framöver, så vi får väl se vad som händer i nästa release. Räkna med en version 3.5 i April, eller om det är många rapporterade buggar i 3.4 en version 3.4.1 ganska snart. Det är nämligen en så kallad ”code sprint” i Schladming denna vecka.

Temat för denna är dock att göra Open Layers mer användarvänligt så vi får väl se vad som händer framöver, och när vi kan se frukten av dessa ambitioner.

Det är ett otroligt tempo och aktivitet i Open Layers projektet med mängder av utvecklare inblandade. Exempelvis så är ArcGIS Rest funktionen ett resultat av att nya utvecklare anslutit sig till projektet. Detta tillägg har dessutom fått en bugg fixad i 3.4 så att det även skall fungera på Retina-skärmar.

OpenLayers Vs Leaflet

Ok! Då har OpenLayers släppt version 3.2 med en hel del förbättringar medan Leaflet inte håller samma tempo, för tillfället.

OpenLayers har en ordentlig organisation bakom sig som utvecklar biblioteket, medan Leaflet är mera beroende av ett ”comunity”. I princip så är det en person som står bakom Leaflet med stöd från exempelvis MapBox, nämligen Vladimir Agafonkin (”kudos”).

Vad är då skillnaden, och går det att ställa de båda mot varandra?

Det enkla svaret på den senare frågan är, nej det går inte att ställa dem mot varandra. De är skapade för två olika tillämpningar där överlappningen mellan de båda varierar beroende på vilken tillämpning man ser framför sig. Som jag ser det så är det därför inte en tävling, utan ett viktigt val man ställs inför när man skall skapa en karttjänst för webben.

It’s not a competition! It’s an important choice!

Kortfattat så är Leaflet enklare och ett mycket mindre skriptbibliotek, vilket gör det potentiellt mycket snabbare. Man skryter med 33 kB JavaScript, medan OpenLayers är större men har betydligt fler inbyggda funktioner.

Med OpenLayers så får du väldigt mycket funktionalitet inbyggt, medan Leaflet erbjuder det mesta av dessa funktioner som tillägg man kan baka in i sina webbkartor, vilket naturligtvis ökar på storleken något.

Har man således inte något behov av att bygga komplicerade eller omfattande karttjänster, utan är mer intresserad av att publicera enkla digitala kartor och lager snabbt och enkelt, så är Leaflet det naturliga lagret.

Vill man bygga mer avancerade tjänster och direkt ha tillgång till väldigt mycket funktioner, och inte oroar sig jättemycket för att Internet kan vara långsamt så är OpenLayers vägen att gå.

Om man hamnar någonstans mitt emellan så kan man gå åt båda hållen.

Om man tänker välja Leaflet så gäller det att läsa på så att allt man vill göra går att åstadkomma med tillgängliga tillägg, annars så skulle jag nog rekommendera OpenLayers om man är osäker.

Vad väljer jag då?

När jag vill skapa en snabb inbäddad karta baserad på exempelvis WMS tjänster eller WMTS och kanske något enkelt vektorlager i exempelvis GeoJSON så brukar det bli Leaflet.

När jag skall göra något mera avancerat eller skall påbörja ett utvecklingsprojekt så blir det oftast OpenLayers, eftersom jag faktiskt kan göra mer med det, och det inte går att göra allt (oavsett tillägg) med Leaflet. Att OpenLayers skulle vara så mycket långsammare är säkert mätbart, men vad man upplever i praktiken kan vara något annat.

Tidigare inlägg:

OpenLayers
Leaflet

OBS: Det finns naturligtvis andra alternativ till att skapa webbkartor på Internet, men här har jag valt de två största fria alternativen som därför förtjänar lite uppmärksamhet som ”betalning” för det jobb man lägger ner.

Sida med OpenLayers3

I detta inlägg kommer jag att använda Boundless OpenGeoSuite för att skapa en karta som webbtjänst baserad på OpenLayers3, med hjälp av Boundless SDK.

Jag använder en Linux Ubuntu 14.04 LTS Server, där jag följt instruktionerna för att installera Boundless OpenGeoSuite.

Sedan installeras SDK med:

apt-get install opengeo-webapp-sdk

Det går att installera utvecklingsmiljön på en fristående dator, så länge JDK är installerat och konfigurerat.

För att skapa en ny applikation så är det enklast att skapa en ”mall” i en katalog på lämplig plats:

suite-sdk create apptest ol3view

Kommandot skapar en katalog (”apptest”) på aktuell sökväg och använder ”mallen” ol3view. Det finns även mallarna ”gxp” och ”ol3edit”, som skapar lite annorlunda sidor.

Tjänsten måste konfigureras, men det går redan nu att titta på hur den ser ut. Om du installerat på en server med OpenGeoSuite så kommer dessutom vissa data att hittas utan problem. På servern startas ”debug” med kommandot:

suite-sdk debug /root/apptest

Du får naturligtvis använda den sökväg som du själv använt. Sedan går det att öppna en webbläsare på adressen http://servernamn:9080.

Screenshot from 2014-12-24 12:22:31Om du har en anpassad installation av OpenGeoSuite så kan du behöva sätta upp en proxy för servern för att det skall funger. Du kan läsa mer om detta på Boundless dokumentationssidor.

Debuggservern stoppas med Ctrl+C, vilket gör det möjligt att exempelvis redigera konfigurationsfilen. För att sedan testa igen, så anger man samma debuggkommando.

vim /usr/share/opengeo/apptest/src/app/apptest.js

Ovanstående kommando öppnar den mest centrala konfigurationsfilen i mitt exempel. Du kan använda en annan editor om du vill och sökvägen skall anpassas.

Screenshot from 2014-12-24 12:36:07Jag tänker inte gå in på hur du kan konfigurera ”appen” i detta inlägg, men det mesta vanliga görs i denna fil.

När man gjort sina ändringar och testat med debug så är det dags att driftsätta appen. Detta görs genom att först ”packa” appen till en war-fil och därefter ”installera” den på servern.

suite-sdk package /root/apptest /usr/share/opengeo/

Ovanstående kommando skapar filen ”apptest.war” på den andra angivna sökvägen. Om man inte anger en andra sökväg så skapas filen på den sökväg där man för tillfället befinner sig.

För att installera så måste ett antal saker göras. Först skall war-filen packas upp på den önskade sökvägen.

unzip /usr/share/opengeo/apptest.war -d /usr/share/opengeo/apptest/

Skapa en xml-fil och öppna den för redigering för att konfigurera webbservern med den nya appen.

vim /etc/tomcat6/Catalina/localhost/apptest.xml

Jag skriver in nedanstående text i min fil, baserat på mina sökvägar etc.

<Context displayName="apptest" docBase="/usr/share/opengeo/apptest" path="/apptest"/>

OBS! Glöm inte bråktecknet på slutet. Jag gjorde det och fick ingenting att fungera. Sedan är det bara att starta om webbservern med kommandot:

service tomcat7 restart

Tada! Sidan går att se på http://servernamn:8080/apptest.

Nu skall jag testa att skapa lite anpassade sidor och se hur det går…