OpenLayers 3 aims to be a full-featured, flexible, and high-performance mapping library leveraging the latest web technologies. Since the initial release of 3.0 at the end of 2013, the library has matured significantly, and great new features and improvements are rolling out with each monthly release. Are you are still using OpenLayers 2 and feeling that the time has come to upgrade? Or curious to see what a comprehensive mapping library can do? Join us for this feature frenzy of OpenLayers 3, where we will present our recent and ongoing work on making the library more user-friendly, robust and powerful. Whether you're a developer or decision maker, this talk will get you up to date with the current status and upcoming features and improvements of OpenLayers 3.
 Good morning again for the first session. And yeah, I introduce Andreas Hoczewa, Mark Jansen, keynote developers of OpenLayers, and I think you present news on OpenLayers 3. So have fun. Welcome, everyone. I hope everyone was enjoying last night's dinner party. Just as we did. And to get started, this is our logo, OpenLayers logo. And today we're talking about news and cool stuff in OpenLayers. To get started, the usual boring stuff, the first two slides and outline, we show you even more boring stuff about ourselves. And then we show you what's new in OpenLayers. Sorry, what's new in OpenLayers. What's new in OpenLayers. What's cool in OpenLayers and also an outlook to the near future. Okay, switch back to... It's still me on. OpenLayers core developer and steering committee member of the OpenLayers project, work as a consultant for Boundless. And Boundless invests a lot in open source development, is an active leader in the open source community, has developed and supported powerful software for enterprise GIS applications in that since 2002. Yeah, my name is Mark. You can hear I was yesterday at the concert. I'm a developer of OpenLayers, obviously. And I'm also a developer for the company Tillis, who is the CEO of. And I'm a developer not only for OpenLayers, but also GUXD. I wrote a German book about OpenLayers and I'm also speaking on national and international conferences just like now. So to rest with you might have heard about us. We have a booth upstairs. And we do all things open source geospatial and we build top notch solutions using the software tools that you have been hearing about the last three days. So now what is OpenLayers? We have to do that. So that's what it says on the homepage. It's a high performance feature pack library for all your mapping needs. And there's three things we wish to add to that sentence. It's open source, it's BSD licensed, it's a JavaScript library, and it's also an OS geo project. So OpenLayers has quite a long history. So 10 years ago we released version two. So basically I used to call OpenLayers some sort of a dinosaur in JavaScript libraries because like growing that old, you know, we really had to reinvent ourselves over and over again. So in August 2014 we released version 3.0 and the current version is 3.17, yes 3.17.1. But I think we are going to do a release today. So there will be some slides for mentioning 3.18. It is very actively developed. It has a big community of both users and developers. It is very well documented, that's what we think, at least compared to version two. And also it has a very huge examples collection. So it's basically usable everywhere and it's also being used everywhere. So this is a map. It shows last year's phosphor T location. If we zoom in here a bit, we see a nice residential area in our near soul. I always like these structures that look nice on aerial imagery. But this was last year in Seoul, in South Korea. Let's move to where we are this year. And by doing so I show you just some features of OpenLayers. We can do animated transitions of the view. Like here we are flying to one. And then we can zoom in further to our exact conference location. We can make the map full screen. And you may still be worried about the labels not being upright. So let's rotate the map to a northup view like you would expect. As you can see, when I pan the map here, there is always something to see because we have preloaded tiles from lower resolutions. Also when tiles are loaded, the focus is around the cursor. So tiles where I am with the mouse are loaded first. So this makes for a really pleasant and performant user experience. Just some basics on this slide here. Okay. So you just saw a map. Not really that cool. So what is cool in OpenLayers? This that we should mention is it supports many, many different data source and layer types. You can pull in raster data, vector data from many common formats, also from some exotic formats. We have interactions and controls that you can add to the map for your users to interact with it. The most basic one maybe the plus and minus for zooming. But there are also interactions for drawing and editing vectors and many more. It works out of the box on mobile devices 100%. And it also supports retina high DPI devices out of the box when iPhone 6 was introduced with higher resolution than any device before. Some other applications broke, but not the ones that used OpenLayers. Yes. So what do we do? So we already saw the rotation feature and I think it's the simulation already starting. So you can do cool things with this. So this is the OpenLayers developers. Every morning he goes by bike to the office location. This is Eric LeMond bicycling basically. And the center of the map is being updated correctly and all the time. And also now when he goes into the roundabout. What's he doing? He's taking a shortcut. He's going through the roundabout. It's Eric, probably Eric. And yeah, we can do cool stuff by combining all these small interactions into really cool applications. So what else do we? Oh yeah, there's some tiles missing. But that's not a problem. What I want to show is still on the slide. So we're using a tile server here that's not very responsive today. But one thing you can see OpenLayers supports projections out of the box. In these two maps on the left, we have mapping geographic coordinates. And on the right we have the more familiar webmercator projection. And if you look at these circles here, you can see how the projection distorts as you go from the equator to the poles. These are just two projection examples. When you have a projection definition with the transforms to geographic coordinates, you can use any projection that you want. Also your local projection from your land surveying agency or whatever. Yeah, also under the hood, OpenLayers applies a lot of, yeah, we call them vector rendering tricks. So that rendering of vectors is very, very fast in our opinion. So what you see here in the background is the blue lines. This is a fractal. It's a Koch flake. And it's made out of 700,000 vertices. But as you are currently at a certain zoom level, and also you're not showing everything of it, for rendering we call it oversimplification. Like we strip a lot of vertices out before even going to the renderer. And also we have some sort of an internal grid. So if two or more vertices are happening to go on the same grid, we will discard the second one. So we have to render only as few points as possible, also depending on the resolution. Quite some nice vector rendering stuff. You know earthquakes happen like this year in Italy. So it may be important to analyze data about earthquakes. This map here shows OpenLayers vector styling features using clusters and also advanced vector styling features because you can also change the original geometries and render something completely different. So as I hover over one of these clusters, they expand to the original earthquake locations and the stars you see are scaled by the magnitude of the earthquake. So with these advanced styling features, you can achieve good-looking maps that are easy to analyze the data you're looking at. Yeah, but not only can we do cool vector stuff, we can also do cool raster stuff. So what you see here is an example that uses Bing tiles in the background, aerial images, and it's calculating here the so-called vector green, no, it's the vegetation greenness index, and it's doing it in your browser. So it just analyzes every pixel and you can change the threshold down here. So if you do like this, I can manipulate all the rasters in my map to change color in this case. And this is all done by the raster sources we have, so we can put in any raster source like a WMS or in this type, pre-rendered tiles analyzed and further, and it's all running in your browser. This is stuff that used to be done on dedicated programs, but it can also be done on the web using OpenLayers. So what's new? Andreas, tell me. Good question. What's new? We've been working a lot in the last year. Here you can see a screenshot from a GitHub. You see the top eight contributors during the last year. And some statistics about that since version 3.9, which was last year at the Foss4G conference, we had contributions from developers from four different companies, also from two individual contributors. They came from seven different countries. And we have also many contributions, as you can see here, from GreenKeeper.io. But why is a bot making commits to OpenLayers? And even more than me in the last year. This is a bot that works on Git repositories, basically, and it keeps our dependencies up to date. So whenever some software we depend upon releases a new version. Like for example, the great R3 library by Vladimir Arbush. Yes. So when a new version comes out of that, we get a pull request with a commit by that bot. And then we can check it. And here we most possibly merge it then. Okay, so we're comparing now between last year's Foss4G conference and this year's Foss4G conference. And if we look at GitHub statistics again, we saw that we had more than 2,000 commits in that period. Almost 1,200 files were changed. And contributions were made by 21 contributors. But I know you like we promised some cool stuff and new stuff and not like details about what we committed and how often we renamed files just to, you know, there's a lot of changes. So what's actually new? What's really new. Okay. Let's finally do it. We won't see much on this example, unfortunately. But one thing we added since last year is Rusty reprojection. But the tiles we wanted to reproject are not loading or only some of them are loading so you don't see anything. But you can imagine there are many different projections. The world looks different in any projection. And this slide was meant to show you how that works using some world projections like this one here or also local German projections like this one. But you have to imagine the image. You can do that. You want to show the online example? Maybe even there's time left at the end of the presentation. Let's move on, maybe. Another thing we added is vector tiles. And since it first landed in 3.10 or 3.11, I think, we have made many performance improvements to it. So as you can see, this is really smooth as you pan the map around. Zooming is really smooth. There's no more lag. And always keep in mind that this is using Canvas 2D and not WebGL. So this means it also works on devices that do not have WebGL available. Yeah, you can also do the following. You can render now geometries anywhere. So what we see here is vector tiles in the background. And if I click on some of the features over here, like this building, for example, what happens now is that I get the geometry, a query for the geometry, and then I just render it to some random Canvas over there. So this is not a map. This is a Canvas that could be anywhere. A typical use case for this would be if you want to create a dynamic legend next to your map that is rendered with the actual styles you're using. Yes, and let me just add one thing to the slide that you showed that didn't work correctly. We can now reproject Raster in the web, Raster data. Let me just repeat that. It's just awesome. So also, we strive towards, well, more feature or comparability with what we had in OpenLayers 2. So in OpenLayers 2, we had a lot of very sophisticated functions to, for example, rotate geometries. And we also now support this in OpenLayers 3. So there's a small code example showing you how to do that. It's nothing so exciting, but it's really easy now to transform an existing OpenLayers 2 application to OpenLayers 3 because we're nearly at feature parity. So we can include now cart2db tile sources. This is how you do it. And yeah, you see how easy it is to style it. You apply a cart2css styling here and also the SQL that's going to be applied. And this is basically it. And then you can use cart2db sources in your maps. There's also another thing that we added. So now we support another yes or a right service. The ArcGIS rest source that we added. So there's going to be another talk by Bart soon about interoperability. So we support that as well out of the box. Another thing was frequently requested from users. Switching over from OpenLayers 2 was OGC filters for WFS queries. We have that now as well. So here you see a filter that's applied to an OpenStreetMap data set, the water areas. And we filter here for water areas in Mississippi and only for river banks. So these were the new features, not that many, but we made a lot of other improvements that you don't necessarily see immediately. But you see them here. On the left, you see how we updated params from a time series WMS or also dimensions in WMTS. This is something that's used often in meteorology for weather maps. And on the right, you see how it looks now. And this is how it should look. So there's no tiles leaving the screen and entering them again. It's just smooth transitions between tiles. And besides these improvements that you can see, there are also many that you cannot see. We've been working on a major restructuring of the library, resulting in faster builds. So the source files that go into the library last year were 3.8 megabytes and they were compressed and minified to 143K. And this year or a month ago, we had only 2.9 megabytes that go into the build and they get minified to 140K. And let's not forget about the features and improvements that were added since then. And the library got smaller. So that's good. And how did that happen? Yeah, to understand the present and the future, one has to look at the past. So this is a discussion that Tom McRide and Eric Lim one, who saw in bicycling earlier, made in 2012. So Tom basically says, I'm worried that you are using Closury Library because it inspires big projects to be big and glued together. And Eric points out, yeah, you're probably right, but there's also a lot of advantages we can take from using Google Closure Library. And that's true. So internally as developers, when we started working on OpenLayers 3, we were thinking, do we want to reinvent the wheel and have all the browser differences? Do we want to handle them ourselves? Or do we want to include some sort of a basic library that helps us doing these things right? And also includes a lot of cool things to get really the best or the smallest code possible or the fastest code possible. You want to add something? Yeah, but things have gotten better on the web. We don't have to support IE8 anymore. We don't have to support IE9 anymore, but it still works in IE9. So there's no need anymore to have a library that takes away these browser inconsistencies from you. And so last year, we sat together at the Foss4G conference, and we were aware that our users want and do use mainstream build tools and bundlers. And Closure Code does not integrate well with that. So we said, let's at least remove the dependency on Closure Library, because then people who use Closure Compiler can still do so. But those who want to use tools like Browserify can also do so without problem. And that's what we've been working on in the last couple of months. And this effort is now almost complete. We have removed 98% of the Closure Library. Will be done in the next couple of weeks. Out of the event system we had in Closure, we added our own lightweight event systems. We made the metrics transforms that we use to transform coordinates, to screen coordinates, way more efficient, and we also have a more efficient class inheritance. And we were able to get rid of all this legacy code for outdated browser. And finally, also the code looks better. It's easier to contribute to OpenIRS because it is now a JavaScript code that looks like JavaScript and is JavaScript as it was meant to be. So and now what's next? This is how your OpenIRS application could look when we have finished the transition away from the Closure Library. Because one plan is instead of what we have now, so like in OpenIRS 2, you can currently create custom builds of OpenIRS. So you take the full build and strip out things that you don't need. In the modern JavaScript world where you have modules, it's the other way around. You only include the parts that you need by requiring them explicitly. So instead of including OpenIRS and then using what you need and still having there what you don't, you create your application like this. You only include the modules that you require in your application. Then there's more things to come, like more rendering improvements. There will be a talk about vector tiles in the afternoon where we'll be showing some of that. But this is it for now for this introductory talk. Thank you very much and I hope there will be questions. Thank you. Perfect time. Questions? You mentioned the vector tile rendering support on Canvas 2D. How about rendering them in Open in WebGL? Is that on the way in the work? So OpenIRS does have a WebGL renderer. It currently supports only point features. There has been work going on during the summer from an individual contributor. He's trying to bring support for WebGL rendering for lines and polygons as well. But I cannot make any promise at this point whether it's going to happen. But one thing I can say for sure is that with all the rendering tricks that we apply to rendering to Canvas 2D, we are very fast. And the fastest Canvas 2D library that renders vector tiles. Okay. More questions? No, you don't. Of course. Hi, I'm Ivan. You know me from the LiveLed team and last year OpenIRS was LiveLed. So let me say congratulations on the features. I am very jealous of the rasterly projection, really. Is there anything from LiveLed that you wish you had? Because let me say this straight. From LiveLed, we want to have a lot of things that OpenIRS has. Is there something the other way around? And it's a good question. And for me, it's always a bit like comparing apples and oranges. But one really cool thing about LiveLed is that it's so simple to get started with it. In OpenIRS, you have a bit of a learning curve to get started. But then you have a verbose toolkit that allows you to do a lot. And with LiveLed, you can get started immediately. And that's one thing we are still working on. So we are still trying to improve the API and this going to be a lot of discussion also to have. But we are working on it. I think we'll never be as simple to get started with as LiveLed. But as I said, the target audience is also maybe a different one. Yeah, originally I had a different question, but picking up on that, I can fully underline what you just said about the best of the two worlds. Because actually I do code in both of them. And it just depends on the project. And so I wouldn't like, like you said, it's apple and oranges. But the actual question I was going to pose to the OpenLayers team was one of the features I was most excited about when I started out with OpenLayers was the style functions. So I'm having currently a style cache, which is not that big because I don't have to fortunately support that many layers in this particular project. But once I want to go down to, say, zoom level 18 or 20, and it would have lots of styles, I probably have to implement something like in browser index file, something. Would have to look into that. So my question is, is there any idea about actually implementing that in OpenLayers itself so it can be used with it, or would there rather be something like for part library? You mean something like sprite images for symbols? Or I think I didn't understand the question. No, actually, pre-rendering some styles to actually load them out of the cache so that the function itself don't have to return it each time. And we're talking icon or image styles here for points. When you pre-load your images on the application level, you can get that out of the box. So you can create your icon styles either with a source that points to an image, or you can construct the style with an image that you have loaded already. So you can do the pre-loading on the application level. This is also something that's nice about OpenLayers. We tried to make simple and meaningful defaults, but there are several levels at the API where you can hook into and customize things to your needs. And using pre-loaded image elements instead of pointing the icon style to a source is one of the things you can do. So you can do that already if you do this at the application level. Okay. Thank you. So here you will find these guys around here at least at the terrestrial and bundler's booth. And we change for the next talk. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you.
 Good morning again for the first session.  And yeah, I introduce Andreas Hoczewa, Mark Jansen, keynote developers of OpenLayers, and  I think you present news on OpenLayers 3.  So have fun.  Welcome, everyone.  I hope everyone was enjoying last night's dinner party.  Just as we did.  And to get started, this is our logo, OpenLayers logo.  And today we're talking about news and cool stuff in OpenLayers.  To get started, the usual boring stuff, the first two slides and outline, we show you  even more boring stuff about ourselves.  And then we show you what's new in OpenLayers.  Sorry, what's new in OpenLayers.  What's new in OpenLayers.  What's cool in OpenLayers and also an outlook to the near future.  Okay, switch back to...  It's still me on.  OpenLayers core developer and steering committee member of the OpenLayers project, work as  a consultant for Boundless.  And Boundless invests a lot in open source development, is an active leader in the open  source community, has developed and supported powerful software for enterprise GIS applications  in that since 2002.  Yeah, my name is Mark.  You can hear I was yesterday at the concert.  I'm a developer of OpenLayers, obviously.  And I'm also a developer for the company Tillis, who is the CEO of.  And I'm a developer not only for OpenLayers, but also GUXD.  I wrote a German book about OpenLayers and I'm also speaking on national and international  conferences just like now.  So to rest with you might have heard about us.  We have a booth upstairs.  And we do all things open source geospatial and we build top notch solutions using the  software tools that you have been hearing about the last three days.  So now what is OpenLayers?  We have to do that.  So that's what it says on the homepage.  It's a high performance feature pack library for all your mapping needs.  And there's three things we wish to add to that sentence.  It's open source, it's BSD licensed, it's a JavaScript library, and it's also an OS  geo project.  So OpenLayers has quite a long history.  So 10 years ago we released version two.  So basically I used to call OpenLayers some sort of a dinosaur in JavaScript libraries  because like growing that old, you know, we really had to reinvent ourselves over and  over again.  So in August 2014 we released version 3.0 and the current version is 3.17, yes 3.17.1.  But I think we are going to do a release today.  So there will be some slides for mentioning 3.18.  It is very actively developed.  It has a big community of both users and developers.  It is very well documented, that's what we think, at least compared to version two.  And also it has a very huge examples collection.  So it's basically usable everywhere and it's also being used everywhere.  So this is a map.  It shows last year's phosphor T location.  If we zoom in here a bit, we see a nice residential area in our near soul.  I always like these structures that look nice on aerial imagery.  But this was last year in Seoul, in South Korea.  Let's move to where we are this year.  And by doing so I show you just some features of OpenLayers.  We can do animated transitions of the view.  Like here we are flying to one.  And then we can zoom in further to our exact conference location.  We can make the map full screen.  And you may still be worried about the labels not being upright.  So let's rotate the map to a northup view like you would expect.  As you can see, when I pan the map here, there is always something to see because we have  preloaded tiles from lower resolutions.  Also when tiles are loaded, the focus is around the cursor.  So tiles where I am with the mouse are loaded first.  So this makes for a really pleasant and performant user experience.  Just some basics on this slide here.  Okay.  So you just saw a map.  Not really that cool.  So what is cool in OpenLayers?  This that we should mention is it supports many, many different data source and layer  types.  You can pull in raster data, vector data from many common formats, also from some exotic  formats.  We have interactions and controls that you can add to the map for your users to interact  with it.  The most basic one maybe the plus and minus for zooming.  But there are also interactions for drawing and editing vectors and many more.  It works out of the box on mobile devices 100%.  And it also supports retina high DPI devices out of the box when iPhone 6 was introduced  with higher resolution than any device before.  Some other applications broke, but not the ones that used OpenLayers.  Yes.  So what do we do?  So we already saw the rotation feature and I think it's the simulation already starting.  So you can do cool things with this.  So this is the OpenLayers developers.  Every morning he goes by bike to the office location.  This is Eric LeMond bicycling basically.  And the center of the map is being updated correctly and all the time.  And also now when he goes into the roundabout.  What's he doing?  He's taking a shortcut.  He's going through the roundabout.  It's Eric, probably Eric.  And yeah, we can do cool stuff by combining all these small interactions into really  cool applications.  So what else do we?  Oh yeah, there's some tiles missing.  But that's not a problem.  What I want to show is still on the slide.  So we're using a tile server here that's not very responsive today.  But one thing you can see OpenLayers supports projections out of the box.  In these two maps on the left, we have mapping geographic coordinates.  And on the right we have the more familiar webmercator projection.  And if you look at these circles here, you can see how the projection distorts as you  go from the equator to the poles.  These are just two projection examples.  When you have a projection definition with the transforms to geographic coordinates, you  can use any projection that you want.  Also your local projection from your land surveying agency or whatever.  Yeah, also under the hood, OpenLayers applies a lot of, yeah, we call them vector rendering  tricks.  So that rendering of vectors is very, very fast in our opinion.  So what you see here in the background is the blue lines.  This is a fractal.  It's a Koch flake.  And it's made out of 700,000 vertices.  But as you are currently at a certain zoom level, and also you're not showing everything  of it, for rendering we call it oversimplification.  Like we strip a lot of vertices out before even going to the renderer.  And also we have some sort of an internal grid.  So if two or more vertices are happening to go on the same grid, we will discard the  second one.  So we have to render only as few points as possible, also depending on the resolution.  Quite some nice vector rendering stuff.  You know earthquakes happen like this year in Italy.  So it may be important to analyze data about earthquakes.  This map here shows OpenLayers vector styling features using clusters and also advanced vector  styling features because you can also change the original geometries and render something  completely different.  So as I hover over one of these clusters, they expand to the original earthquake locations  and the stars you see are scaled by the magnitude of the earthquake.  So with these advanced styling features, you can achieve good-looking maps that are easy  to analyze the data you're looking at.  Yeah, but not only can we do cool vector stuff, we can also do cool raster stuff.  So what you see here is an example that uses Bing tiles in the background, aerial images,  and it's calculating here the so-called vector green, no, it's the vegetation greenness index,  and it's doing it in your browser.  So it just analyzes every pixel and you can change the threshold down here.  So if you do like this, I can manipulate all the rasters in my map to change color in this  case.  And this is all done by the raster sources we have, so we can put in any raster source  like a WMS or in this type, pre-rendered tiles analyzed and further, and it's all running  in your browser.  This is stuff that used to be done on dedicated programs, but it can also be done on the web  using OpenLayers.  So what's new?  Andreas, tell me.  Good question.  What's new?  We've been working a lot in the last year.  Here you can see a screenshot from a GitHub.  You see the top eight contributors during the last year.  And some statistics about that since version 3.9, which was last year at the Foss4G conference,  we had contributions from developers from four different companies, also from two individual  contributors.  They came from seven different countries.  And we have also many contributions, as you can see here, from GreenKeeper.io.  But why is a bot making commits to OpenLayers?  And even more than me in the last year.  This is a bot that works on Git repositories, basically, and it keeps our dependencies up  to date.  So whenever some software we depend upon releases a new version.  Like for example, the great R3 library by Vladimir Arbush.  Yes.  So when a new version comes out of that, we get a pull request with a commit by that bot.  And then we can check it.  And here we most possibly merge it then.  Okay, so we're comparing now between last year's Foss4G conference and this year's Foss4G  conference.  And if we look at GitHub statistics again, we saw that we had more than 2,000 commits  in that period.  Almost 1,200 files were changed.  And contributions were made by 21 contributors.  But I know you like we promised some cool stuff and new stuff and not like details about  what we committed and how often we renamed files just to, you know, there's a lot of  changes.  So what's actually new?  What's really new.  Okay.  Let's finally do it.  We won't see much on this example, unfortunately.  But one thing we added since last year is Rusty reprojection.  But the tiles we wanted to reproject are not loading or only some of them are loading so  you don't see anything.  But you can imagine there are many different projections.  The world looks different in any projection.  And this slide was meant to show you how that works using some world projections like this  one here or also local German projections like this one.  But you have to imagine the image.  You can do that.  You want to show the online example?  Maybe even there's time left at the end of the presentation.  Let's move on, maybe.  Another thing we added is vector tiles.  And since it first landed in 3.10 or 3.11, I think, we have made many performance improvements  to it.  So as you can see, this is really smooth as you pan the map around.  Zooming is really smooth.  There's no more lag.  And always keep in mind that this is using Canvas 2D and not WebGL.  So this means it also works on devices that do not have WebGL available.  Yeah, you can also do the following.  You can render now geometries anywhere.  So what we see here is vector tiles in the background.  And if I click on some of the features over here, like this building, for example, what  happens now is that I get the geometry, a query for the geometry, and then I just render  it to some random Canvas over there.  So this is not a map.  This is a Canvas that could be anywhere.  A typical use case for this would be if you want to create a dynamic legend next to your  map that is rendered with the actual styles you're using.  Yes, and let me just add one thing to the slide that you showed that didn't work correctly.  We can now reproject Raster in the web, Raster data.  Let me just repeat that.  It's just awesome.  So also, we strive towards, well, more feature or comparability with what we had in OpenLayers  2.  So in OpenLayers 2, we had a lot of very sophisticated functions to, for example, rotate geometries.  And we also now support this in OpenLayers 3.  So there's a small code example showing you how to do that.  It's nothing so exciting, but it's really easy now to transform an existing OpenLayers  2 application to OpenLayers 3 because we're nearly at feature parity.  So we can include now cart2db tile sources.  This is how you do it.  And yeah, you see how easy it is to style it.  You apply a cart2css styling here and also the SQL that's going to be applied.  And this is basically it.  And then you can use cart2db sources in your maps.  There's also another thing that we added.  So now we support another yes or a right service.  The ArcGIS rest source that we added.  So there's going to be another talk by Bart soon about interoperability.  So we support that as well out of the box.  Another thing was frequently requested from users.  Switching over from OpenLayers 2 was OGC filters for WFS queries.  We have that now as well.  So here you see a filter that's applied to an OpenStreetMap data set, the water areas.  And we filter here for water areas in Mississippi and only for river banks.  So these were the new features, not that many, but we made a lot of other improvements that  you don't necessarily see immediately.  But you see them here.  On the left, you see how we updated params from a time series WMS or also dimensions  in WMTS.  This is something that's used often in meteorology for weather maps.  And on the right, you see how it looks now.  And this is how it should look.  So there's no tiles leaving the screen and entering them again.  It's just smooth transitions between tiles.  And besides these improvements that you can see, there are also many that you cannot see.  We've been working on a major restructuring of the library, resulting in faster builds.  So the source files that go into the library last year were 3.8 megabytes and they were  compressed and minified to 143K.  And this year or a month ago, we had only 2.9 megabytes that go into the build and they  get minified to 140K.  And let's not forget about the features and improvements that were added since then.  And the library got smaller.  So that's good.  And how did that happen?  Yeah, to understand the present and the future, one has to look at the past.  So this is a discussion that Tom McRide and Eric Lim one, who saw in bicycling earlier,  made in 2012.  So Tom basically says, I'm worried that you are using Closury Library because it inspires  big projects to be big and glued together.  And Eric points out, yeah, you're probably right, but there's also a lot of advantages  we can take from using Google Closure Library.  And that's true.  So internally as developers, when we started working on OpenLayers 3, we were thinking,  do we want to reinvent the wheel and have all the browser differences?  Do we want to handle them ourselves?  Or do we want to include some sort of a basic library that helps us doing these things right?  And also includes a lot of cool things to get really the best or the smallest code possible  or the fastest code possible.  You want to add something?  Yeah, but things have gotten better on the web.  We don't have to support IE8 anymore.  We don't have to support IE9 anymore, but it still works in IE9.  So there's no need anymore to have a library that takes away these browser inconsistencies  from you.  And so last year, we sat together at the Foss4G conference, and we were aware that our users  want and do use mainstream build tools and bundlers.  And Closure Code does not integrate well with that.  So we said, let's at least remove the dependency on Closure Library, because then people who  use Closure Compiler can still do so.  But those who want to use tools like Browserify can also do so without problem.  And that's what we've been working on in the last couple of months.  And this effort is now almost complete.  We have removed 98% of the Closure Library.  Will be done in the next couple of weeks.  Out of the event system we had in Closure, we added our own lightweight event systems.  We made the metrics transforms that we use to transform coordinates, to screen coordinates,  way more efficient, and we also have a more efficient class inheritance.  And we were able to get rid of all this legacy code for outdated browser.  And finally, also the code looks better.  It's easier to contribute to OpenIRS because it is now a JavaScript code that looks like  JavaScript and is JavaScript as it was meant to be.  So and now what's next?  This is how your OpenIRS application could look when we have finished the transition  away from the Closure Library.  Because one plan is instead of what we have now, so like in OpenIRS 2, you can currently  create custom builds of OpenIRS.  So you take the full build and strip out things that you don't need.  In the modern JavaScript world where you have modules, it's the other way around.  You only include the parts that you need by requiring them explicitly.  So instead of including OpenIRS and then using what you need and still having there what  you don't, you create your application like this.  You only include the modules that you require in your application.  Then there's more things to come, like more rendering improvements.  There will be a talk about vector tiles in the afternoon where we'll be showing some  of that.  But this is it for now for this introductory talk.  Thank you very much and I hope there will be questions.  Thank you.  Perfect time.  Questions?  You mentioned the vector tile rendering support on Canvas 2D.  How about rendering them in Open in WebGL?  Is that on the way in the work?  So OpenIRS does have a WebGL renderer.  It currently supports only point features.  There has been work going on during the summer from an individual contributor.  He's trying to bring support for WebGL rendering for lines and polygons as well.  But I cannot make any promise at this point whether it's going to happen.  But one thing I can say for sure is that with all the rendering tricks that we apply to  rendering to Canvas 2D, we are very fast.  And the fastest Canvas 2D library that renders vector tiles.  Okay.  More questions?  No, you don't.  Of course.  Hi, I'm Ivan.  You know me from the LiveLed team and last year OpenIRS was LiveLed.  So let me say congratulations on the features.  I am very jealous of the rasterly projection, really.  Is there anything from LiveLed that you wish you had?  Because let me say this straight.  From LiveLed, we want to have a lot of things that OpenIRS has.  Is there something the other way around?  And it's a good question.  And for me, it's always a bit like comparing apples and oranges.  But one really cool thing about LiveLed is that it's so simple to get started with it.  In OpenIRS, you have a bit of a learning curve to get started.  But then you have a verbose toolkit that allows you to do a lot.  And with LiveLed, you can get started immediately.  And that's one thing we are still working on.  So we are still trying to improve the API and this going to be a lot of discussion also  to have.  But we are working on it.  I think we'll never be as simple to get started with as LiveLed.  But as I said, the target audience is also maybe a different one.  Yeah, originally I had a different question, but picking up on that, I can fully underline  what you just said about the best of the two worlds.  Because actually I do code in both of them.  And it just depends on the project.  And so I wouldn't like, like you said, it's apple and oranges.  But the actual question I was going to pose to the OpenLayers team was one of the features  I was most excited about when I started out with OpenLayers was the style functions.  So I'm having currently a style cache, which is not that big because I don't have to fortunately  support that many layers in this particular project.  But once I want to go down to, say, zoom level 18 or 20, and it would have lots of styles,  I probably have to implement something like in browser index file, something.  Would have to look into that.  So my question is, is there any idea about actually implementing that in OpenLayers itself  so it can be used with it, or would there rather be something like for part library?  You mean something like sprite images for symbols?  Or I think I didn't understand the question.  No, actually, pre-rendering some styles to actually load them out of the cache so that  the function itself don't have to return it each time.  And we're talking icon or image styles here for points.  When you pre-load your images on the application level, you can get that out of the box.  So you can create your icon styles either with a source that points to an image, or  you can construct the style with an image that you have loaded already.  So you can do the pre-loading on the application level.  This is also something that's nice about OpenLayers.  We tried to make simple and meaningful defaults, but there are several levels at the API where  you can hook into and customize things to your needs.  And using pre-loaded image elements instead of pointing the icon style to a source is one  of the things you can do.  So you can do that already if you do this at the application level.  Okay.  Thank you.  So here you will find these guys around here at least at the terrestrial and bundler's  booth.  And we change for the next talk.  Thank you.  Thank you.  Thank you.  Thank you.  Thank you.  Thank you.
foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_0_1019.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_1020_1643.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_1644_2003.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_2004_5423.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_5424_6647.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_6648_6815.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_6816_6935.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_6996_7043.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_7476_14159.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_14160_15695.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_17724_18515.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_18516_20399.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_20400_25067.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_25068_26027.png foss4g-2016-1223-what_s_new_and_cool_in_openlayers-hd_28008_29939.png