 Welcome to my presentation on the state of the nation and mapping. My name is Rick DeBoer. I've done software for 20 years. I've done C++, Java, Ruby on Rails. Until five years ago, I got to know Drupal. I haven't looked back since. I now only do Drupal. Why? Because in my professional career, I've never had more fun and I've never seen better results than when using Drupal. We see that all the time at the Flink Collective. We do small sites, big sites, commercial sites, non-commercial sites, government sites, and every time we're delighted about how well Drupal performs in such a wide variety of applications. If there's any doubt in your mind, or in your boss's mind, or in your boss's boss's mind about plunging into Drupal, then I suggest you watch the video of Chong Wu's presentation yesterday. We showed how a big corporation, Sun Corp, went from zero to 30 Drupal sites in just a few years and with no regrets. So why this topic? Well, simply, I love maps. I think maps are beautiful and maps are also very effective. Above all, they're very easy to make in Drupal. But most importantly, they're really attractive to use for your visitors. Maps will help your business. I started my mapping journey six months ago and I started digging into Drupal, what was out there. I embraced modules, I discarded modules, I patched modules, and I wrote modules from scratch. And so did the rest of the community. As a result, it is now easier to make beautiful maps than it has ever been. I like to share what I learned in six months with you in 60 minutes. I've got three takeaway points. These points are my KPIs. My sponsor, which is me, will not buy me a return ticket to Melbourne if you don't remember these three things. So here we go. Number one, think maps, not tables. Every time you see a map, sorry, every time you see a table, I want you to think, I can turn this into a snazzy map. Number two, leaflet. We don't know what leaflet is yet, but just remember leaflet. And number three, you can do this. You can make beautiful maps that look a million dollars in Drupal using only six modules and no coding. Quick outline of our presentation. First, I'm going to talk a little bit more about why I think maps are useful, not just in Drupal, but in general. And secondly, a bit of a field trip. I'm going to show you a few maps from around the world. And I want you to see how you feel about those. Are they good? Are they bad? And then I want to fast-track you through the jungle of Drupal map modules to present you with a set of six modules that will work 90% of the time for 90% of your customers, now and in the future. And finally, I want to put my money where my mouth is if the internet works and show you those six modules live in action here on stage. So why would you want to use maps? Because maps engage. Maps draw you in like no amount of numbers can. And engaged visitors care. And they need to care before they do something on your side. Dries said in his keynote that in order to run a business on the internet, you need to first attract, then engage, influence, convert, and retain. Well, maps are a very strong way, I feel, to engage people. But it's not just pretty pictures. Maps also help to analyze data. They alert us to outliers. They reveal correlations. And I'm going to talk about that a bit more in my demonstration, that second aspect of maps, the analytical power of them. But whether it's a pretty map or a very analytical map, in both cases maps send the visitor on a journey leading to actions. And at the end of the day, that's what you want. You don't want your customers to just look at your website. You want them to do things, like pick up the phone and buy your product or your service. Does anybody care about this? Don't think so. But you've got to use maps well because maps are strong visual elements. They play a role in the image that you create and the perception that you create for your website and therefore for your business. So that may work out well, or it may work out not so well. So I want to take you on a little field trip. Oh, sorry, I forgot to mention about the image. If I see a Google map, I know 2006, then I think, well, these guys are probably a little bit lazy or a bit boring or just plain corporate. But if I see a really creative modern map, then I think, wow, these guys are with the tight guards. These guys are cool. So here's a little field trip. You can look at these maps anyway you like, but in order to judge them, use either your own criteria or these, if you're not quite sure. So think for yourself, is this map functional? Does it visually engage? Does it tell a story? Fingers crossed that this all works technically. So hopefully, if I click on this... Yay! Anyone remember the Great Fire of 1666 in London? Well, there it is on a real map. This is actually a real map. So you can scroll it and you can zoom in. This is done by the wonderful guys of Stamen. It's so high-tech that it doesn't work on any browser but Chrome. And actually, there is so much computation going on. I don't know whether you can see it at the end, but try this at home by all means. If you look close on the screen, then you see all these pixels changing from chimney-rare to pumpkin-orange and banana, and it's just fascinating to look at. And after a while, your machine actually heats up. The fan kicks in because that's how much computation goes on here. So, hot or cold? Hot? One arm? That was cold? Don't like it? Who thinks it's hot? Yeah, me too. I think it's red-hot. It definitely visually engages. Functionally, well, you can't really use that to go from A to B and navigate beyond the road, obviously. But does it tell a story? It does because when I see this, I think, whoa, if I ever need visualization, I'm going to call these guys because they clearly have the technology. So, yeah, interesting example of a map. Okay, this one. Maybe that one I can get live on screen as well. Yay! Okay, this is part of a website, actually. And this part is a map of print shops and design studios all over the world. What the guy has done, he's used like a printing font to match the topic, which is kind of cool. And then also the canvas of the map is a toner-style font. But it's not as simple as it may seem because you see all these balloons here. Balloons here. A click on one. It zooms in to the next level and all the underlying markers explode out. Until when I'm here, in this case in Chicago at the lowest level, we see the individual print shops. We can click on these and we get a link to the website. So it's a very natural and beautiful way, animated way to use maps to navigate the site, basically, because I'm using a map rather than drop-downs to get to a particular site. Who thinks this is a fail? No one. Cool. Yeah, fair enough. Who thinks it's a pass? Majority. I think it's a pass as well. How about this one? This one I can't see live because the site isn't live yet. This is done by someone who contacted me and said, Rick, Rick, Rick, I'm using your modules. I made a beautiful map of places where you can buy a good drink in Belgium. Yeah, so he did the right thing. He started off with the first two of my recommended modules and then I said, oh, you really have to use the other ones as well because you can get the beautiful marker clustering and you can navigate your way through Belgium. You can actually see that Belgium is there. So, unfortunately, this was the slide where he was going to redeem himself, but he never got back to me. So, sorry, young Frederick. Okay, what about this one? Let's see if I can do this one live on... Okay, this is actually four square and this is what you get when you're in Koojee and you type in Colbeer. And so, yeah, okay, it's a very attractive map. It's a Mapbox map. Four square ditched Google last year in favor of Leaflet, the rendering system, and Mapbox, the tiling system. So, very attractive looking map. Markers, well, they have just numbers in them. What do they mean? Not sure. But the thing that annoys me most, four square is all about me, right? It's me surrounded by my friends and the restaurants. But where is me? I don't get a marker, right? And on top of that, we had a good laugh at the previous slide with all those markers on top of each other looking like a scaly fish. Well, this is no better. But hold on, I can zoom in, right? So, zoom in, zoom in. Oh, yeah, I've zoomed in, but now my markers have gone north. Oh, pan, pan, pan. Do you see the difference between this one and the toner map? How easy the toner one was and how cumbersome this is. First, I still don't know where I am. I mean, I'm new to Sydney. Where is Koojee on the map? Yeah, yeah, yeah, not right on my parade. Okay, so... Thanks, mate. 22 is actually manlier, I think, mate. Oh, okay. You put me off my thread, no? So, yeah, what do we think? Hipposquare, who thinks this is really hip? Do you think this is pretty ordinary? Yeah, I agree. With all your millions for Square, you could have done better. This very cute-looking website is about New Zealand fruit stalls. So, you can sign up there and you can say, I'm selling fruit there and there, and you can put your marker on the map. It's a really cute site. I mean, I love the design of it. Also an attractive map. Again, leaflet and map box. So, the same as Foursquare. But what Foursquare failed to do, this husband and wife did brilliantly. Look at the markers again, click on it, bang, you zoom in, zoom in some more. Okay, I want to know about that fruit stall. I get extra information. The black currency is a taxonomy, so I click on the taxonomy, get other blackberry things that I might be interested with. Again, with a beautiful map. So, you see how easy this all works, and how easy it is to navigate this site. Plus, oh, we didn't get the marker, did we? Let me maybe have to zoom out a bit. Okay, I don't know, but normally the marker comes up as well. So, you see yourself in relation to the fruit stalls around you. So, very well done, I think. Yes, yeah, yeah, yeah, the H75 geolocation, that's right. Okay, so Rhyper Rotten. Definitely Rhype, very sweet indeed, I think. Okay, so in summary, what's new in 2013 compared to 2006? Does map still mean Google Maps? Well, I think we've seen some really fresh looks, and none of them were, except one, I think, were Google, so we've got a lot more choice. But there's two other aspects that have changed since 2006, and both of them have to do with mobility. The first one is that people use mobile phones now more than ever, and that means that they want to know where they are, they want to be the center of the map. And in order to do that, like Sean said, you need new technology, which is HTML5. An IP address lookup is not going to cut it if you want to look to show where someone is on a mobile. The second aspect of mobility is that phones and tablets are not as powerful as a desktop. So ideally you want to work with a mapping package that is optimized for mobile, that is lightweight, and doesn't require huge downloads or huge CPU power in order to bring the maps to you. So when I started digging around in Drupal Land for modules that would help me with my maps, I soon found that there's many to choose from, but there's really strong dependencies as well. So you can't say, OK, I'll pick that one for my coordinate storage and then I'll pick that one for filtering and I'll pick that one to show the map. It doesn't work like that because one module will only go with one or two other modules. I also found that some really obvious things that I thought every mapping module would have like calculation of proximity, filtering by distance, that sort of stuff, that they would all have that. No, not so. And of course, like any other set of Drupal modules, they have different levels of maturity, different levels of the size of their issue queue. So it is really a jungle out there. There's an attempt made on the Drupal documentation site that's this URL that shows in a tabular form the various modules, what they can do, what they can't do, what they interface with, et cetera. I'm not going through that because if you know of specific needs, then focus in on those and then soon you'll find that a number of them will drop by the wayside if you want to get deeper into that. I moved this whole story about the anatomy of maps to the appendix due to lack of time, but if you are interested after this session to read some more, I encourage you to look at those because it's got some interesting quotes from people I met on my journey as well about what they did, how they started off with, say, open layers and then ended up with leaflet for various reasons. It also explains a little bit about the four or five parts to every map and how those map to Drupal modules. For now, I want you to just remember two use cases. One is pretty much the traditional way, like the maps we've seen so far, whereby the coordinates are entered by the users of the site, either the administrator or people from the public or authenticated users that sign up and they put location-related info in. The other use case is the one I'm going to demo, which is where the data comes from an external source. This could be a feed or a spreadsheet someone gives you. In fact, that's what we found. Somebody said, you know how to do maps. You've got a spreadsheet, so show me. That's where that whole analysis of the data really comes out and you can really see how the maps start to navigate your mind, basically. It's not just looking at the terrain of navigating the site. The maps that we'll show in a minute help you think about the data and that can only be a good thing. I said there's many moving parts and you can read about all of that and the pros and cons in the appendix. However, I don't want you to go away thinking this is going to be hard because it's not. If you just have the right set of modules, then it's easy and that right set of modules has already been picked for you. Here's the great mix. Talk a little bit about that. There are at least four modules for coordinate storage in Drupal. This one, the latest version, is my favorite because it does one thing and does it really well. It also sets you up for the future. We're talking here about markers only, but if you want to do, say, the boundary, the border of a country or a suburb, then you can use polygons and that's all covered by this module as well. The second one is views. To some of you, this may be bad news because views is a bit of a cockpit. It's a bit of a beast, but you will have to tame the beast. I'm sorry. You're side builders and views goes into core version 8 and you wouldn't want to be a side builder if you don't know all of the core modules, right? If you don't know a whole lot about views yet, then now is maybe a great time to start. The third module is leaflet. Leaflet is a Drupal wrapper around the leaflet JavaScript library. It's one that is very lightweight. It's been written from the ground up to support mobile. In fact, it's only a download is about 28Ks and if you compare that to one of its competitors or alternatives maybe, let's say open layers, that one is, I think, 900Ks. Maps are built up of tiles of about 20Ks. If a map has 10Ks, so you've got 200Ks of tiles, then leaflet has already shown you four maps in the time that open layers takes to just load its JavaScript. So that's a big difference. If you use those first three, then you sort of get to the level of four square. So you don't get a marker showing your own position. You don't get coloring of markers based on a taxonomy or something else. You don't get centering options. You don't get clustering. So the next module brings it up one level above the mediocrity of four square. And then those other two are really small modules that give real bang for your buck leaflet more maps. I think it's 100 lines of code or whatever, but it gives you 20 more maps just from a drop down. You don't have to switch to a different set of modules to get a different map. You go down and you pick the one you like. So I like to rip into the demo if everything works. So a little bit about this data set I'm going to show. This data set was given to us as a spreadsheet with the idea of turning that into a map or multiple maps and see what we could find out about that data set but what would reveal itself. The data set is a weight loss program that was done in the Melbourne area in two towns, Thomastown and Dandenong. And it contains four groups. So there's the control group, people that did not take any special diet or did do any special exercise. Then a diet only group, an exercise only group and a diet plus exercise group. And we follow these people on their quest to lose weight through time. The website here is just a standard out-of-the-box Drupal 7.19 install. No tricks, no use, no caching, no styling, no nothing. Okay, and the map is here, hopefully. Cool. Okay, so I thought I'd start with just a satellite view. Zoom out a little bit so that you can see, yes, this is indeed Australia. We've got 41 markers under there. That's sort of 40 people taking part in the program. Number 41 is us there. So that's the HTML5 thingy that's located us. And I also attached here at the bottom, just for debugging purposes, the data that you see in the map. It's quite useful for debugging purposes. When you go live, you get a bit of that because, well, boring. Okay, so I've also put in some controls on the right. There's five of them. And these allow us to slice and dice the data in different directions. The first one is for the various groups, control group, diet only, exercise only, and diet plus exercise. And then there's a few sliders for weight. So the first one is for start weight, and then the second one is for the weight at each of the weigh-ins. So the weigh-in is also a slider there, and we can progress this through time. So to give you an idea about the slicing and dicing capability, I can, for instance, look at all the people that start with the weight over 88 and then come out with the weight under 88. And it instantly zooms in, and we can see instantly that in Thomastown there's three people that do that, and in Denderong there's six. And you can instantly ask yourself, why is that? Why do people in Denderong have a higher weight to start with, but then they tend to lose it more so than the people in Thomastown? So we're already starting to elicit information from that data set through maps. Okay, just going to put that back a little bit. Okay, and the clustering, of course, works beautifully. Every time I pick it up, I go, ooh, it's a little bit. But the clustering here is perhaps not so great if you want to compare those two sub-data sets. So we've got Thomastown and we've got Denderong, and we want to see them on the map simultaneously. And with clustering, you can only zoom in on one town, of course. So we kind of want to zoom in on both at the same time. So I'm going to have to log in as an admin. So in order to do that, I'm first going to enable another attachment. So I'll create a second map, which is basically a copy of the first one, except that this one will filter by Denderong. So I'll just enable that one. And then I'm going back to my first map. And at this point, it's probably a good thing to drive into a little bit of detail. So this is a standard views interface, and we know we've had all... We saw all these other modules, and all of them have some simple configurations. All of those configurations are channeled into one additional setting in your familiar views interface. This is the format selector that you probably know. Normally, you would not see the map Google Viya peak geolocation and the map leaflet in there. That's provided by the modules that are installed. If I had installed open layers as well, then there would be a third one saying map Viya open layers. Going to the settings, then the first thing we have to enter is the name of the field that is providing the coordinates. The reason why this is not a simple dropdown is for the esoteric cases, whereby a module may provide the coordinates in a kind of non-standard way, and then the table will have a non-standard name, and therefore we can't have a simple selector. We have to give the name like that. In this next selector, though, we can just show the fields from the view. So what we're showing in there is... In the view are the ones that we see here in this dropdown. So it's things like their name, the group they're in, the gender, their address, start weight, end weight, etc. They show up here in this dropdown for the differentiator. A differentiator is any column or any field in the view that you select that you want whose values you want to differentiate the marker colors by. Obvious examples are a taxonomy, content type, but it can be any of the columns in your view. In fact, it can even be an expression. That's what I've done here. I've created an expression in views, normal way, called weight loss, and that's simply the difference between the actual weight at the weigh-in and the start weight. You could have argued that maybe that should have been a percentage rather than just a difference, but then we get into divisions and multiplications and it sounds way too much like coding, and this is a no coding session. Just the difference. The difference between start weight and end weight is the weight loss. We can specify ranges. Over 10, we say it's green. If you lose between 5 and 10 kilos, then you get the yellow marker. If you lose between 0 and 5, orange, and if you gain weight, you're in the red zone. You can add as many of those associations as you like. Here are a few centering options. The one that is currently on is the auto box, and we saw that when I went into the map, it zoomed in exactly to the level to put a frame around all the markers on the map. That's why we had Coogee all the way up there and Melbourne all the way up there. That form of centering is now not appropriate, so I'm going to pick this one of the five others. I want two separate maps. I don't want Coogee to be in that because I want to concentrate on Thomas Town. This is where leaflet more maps comes in. It does one thing and one thing only, and it's this drop down. Without it, the leaflet model gives you one map. With leaflet more maps, you get 20 more. We've had the satellite map. Maybe I'll try the street map. I want two small maps, so I'm going to turn this into a 275px. This is the only configuration you have to do for the marker clustering. It's the radius within which a bubble guzzles up all the markers around it. If you make it really big, then you get a big radius. Now I'm going to leave it open because I don't want it at all. I never thought I would say that. Yes, but luckily this is a small population and we have lots of colors as well. There's two ways that we get around that. I forgot one thing. Of course, live demo effects. I now have to add a filter so that only the people from Thomas Town are shown in this top map. That's called the locality. Thomas Town applied to this display and I think we should be in business now. Save. Would have been nicer if views put me back to my map, but it doesn't. Here we are. Lots of colors and two different maps, map styles, if all possible. At the top we've got the Thomas Town area and the bottom we've got down and on. The colors are, as I explained, still a bit confusing at the moment because there's so many markers. Let's use our filters a bit more. The control group. They start with zero in the first way in. They haven't lost any weight. In the second way in, they haven't lost any weight. In the third way in, one person lost a couple of kilos. That's what you expect for a control group. How about the diet only? Go back to the first one. After months or whatever it is, a few oranges, so lost some weight. At the end of the program, a few greens appear, so they've done a bit better. Finally, of course, diet plus exercise group at the same point, lots of greens. You kind of expect that, but you can imagine using data sets where you have no idea what is there hidden for you, but with a simple number of sliders and colored maps, you can reveal so much information. Was it all smooth sailing though? Is there more we can discover? For instance, this lot here, they started off like so. They ended up with lots of green. What happened in the middle? Oops, a few people regressed. Some yellows have turned orange. A couple of green ones went yellow. What happened? Any idea, anyone? That's it. If you look at the balloons, then this Clarence Simpson, by the way, all the names are fake, to protect the innocent. She had a way in on the 25th of January, so that's after Christmas and in the Australian summer holidays. This person, Leonie, she had a way in on the 15th of January, so I think you're right. That's something that we would never have found by just looking at a bunch of numbers and maps have helped us to dig up that information. What do you mean? How accessible? From what kind of... Don't know is the answer. Yeah, basically, you'll have to draft the leaflet guys, the open layer guys. For debug purposes, definitely. Yeah, it's... Sorry? I guess I could do. I haven't been on a project with maps and accessibility requirements, so I can't really comment on it. But for myself, I like a table at the bottom to debug, because if a map shows up a blank canvas, you go, what's going on? Is the internet down? What's happening? And then the table will tell me whether the data is there or not. Okay, I think I'm going into my closing words. So, as you have seen, I've introduced a few other goodies. The first one is address field and geocoder. The spreadsheet that we got doesn't have Latin along in it. I mean, who's going to type in Latin along for an address? In fact, it didn't even have states and country in it because it was done for Victoria and everybody knew it was for Victoria. So, the addresses in there weren't even complete. They were just street names and towns. But using geocoder and address fields, you're able to geocode the address into Latin along. It happens under the wraps. It happens, for instance, when you create a new piece of content that has an address on it. Then the moment you save, it will go out to the internet to serve as you provide. The default one is Google, I think, and it will give back the Latin along and stores it transparently on one of the fields and you don't have to worry about it. In combination with geofield. Basically, geocoder is the bridge between geofield and address field. Yeah. Address field knows about the way addresses are done in the various countries. In Australia, it will know that a postcode is four digits and not letters as well. In different countries, it may be in a different way and it knows that. The thing I was particularly impressed with was, and I can't show this, but I alluded to it earlier, if you have a spreadsheet to turn it into maps, you first have to turn it into Drupal content. You use some sort of importer for that and the go-to module for that is feeds. When I imported the spreadsheet into Drupal content without setting anything, geocoder kicked in, picked every address from the spreadsheet, sent it off to Google, sent it all that long and after the import, everything was there. It's brilliant, really impressive module. Okay, so then you don't have to rely on the Drupal module. Okay, yeah, cool, thanks. So the second module that I sneaked in is views global filter. It's kind of your normal views exposed filters on steroids. With views global filter, the settings that you make remain valid across the entire website. So if you have a number of views and there may be tables or maps or whatever, you don't have to make the selection over and over again. So let's say I have a music site and it's got lots of bands, lots of eras and lots of areas and I would just want to know about Beatles in New York in 1967. So I would change those, make those three selections and the rest of the site will be filtered by that until I change it. So then I see my videos for that period of the Beatles only. I see the biographies, I see the concert listings, I see the top 40 all filtered by the initial selection. But on top of that views global filter adds another of a number of interesting widgets because it honors the original widget that was specified on the content type. So for instance you love hierarchical select, for your taxonomy I do. If you have that on the content type then when you may create a normal view, then it's gone. Because views does its own widget. But with views global filter it will honor that widget. Same way to complete the lux. And also the same with slide with style. That's the one that was used to do those sliders. One little problem with slide with style it uses a range. We set for a float or an integer, you don't want to be filtering for one particular value. You don't want to filter all the people that are exactly exactly 70.5 kilos. That doesn't make sense. You want to have a range. Slide problem, views doesn't accept ranges. Not as contextual filters, that's how views global filter works. It takes advantage of the views contextual filters. That's where the last module comes in. It makes views understand ranges. And that sort of completes the picture. A few things we haven't shown. We only showed markers. You can do some really cool stuff with polygons. And with the marker algorithm works great and all the clustering in that up to about 5,000 markers. Then things start to fall apart a little bit. And of course, people have already come up with new solutions and they tend to involve doing all of the clustering on the server and then send the result back to the browser because all this stuff is happening in the browser using JavaScript. So I've put some references in the further reading slide, which you can see here. Also some really cool markers. The Nicholas Millay or Nicholas Mullet website has some really nice markers and you can customize them as well. Change colors and so forth. So thank you to all these people who came kind of on my journey with me. Some of the sites you've seen by the people mentioned here and of course Drupal and Drupal open source in general is such a great way to do softwares because you get so many people you get to know so many people and work with so many people without even seeing the face like I don't know any of those people except one and she is not a Drupal person. So yeah I find it always interesting. So I'd like to thank you for coming and staying till the end. I have one more thing to ask you, actually three. Remember those three points? What was the first one? That's right. Maps, not tables. You see a table, think maps. What was the second one? Leaflet, very good. And what was the third one? That's right. You can do it. Now go home and go do it. Thank you very much. Any questions? Oh, okay. Yeah, leaflet ones do. Oh, sorry. Did everyone hear the question? Oh, the question was do the maps work in mobile and that they support the pension zoom controls and the leaflet maps do. I think the answer is probably in the gray area that is between really tight clustering and really loose clustering. Remember I entered the cluster radius? I guess if you play with that by making it bigger or smaller then you may find a setting that suits your particular data set and coloring. Coloring the individual markers. Yeah, one of the maps that come up when you have leaflet mobile maps installed are a number of open street maps and in fact one of them is Open Pista which takes the base layer and then puts terrain on it and then puts the ski slopes a map of ski slopes over the top of it. Yeah, that's quite a... Now the clustering provided by this module is purely by the radius by the number of pixels so it will gobble up the visitor marker as well even though that is a different type of marker compared to the data markers. Cluster detection. Yeah, I mean the JavaScript and the math behind it is quite impressive. I had to look but I had to close it down because it was doing my head in. So it's really impressive what's happening. Not at the moment. Now, there are a number of parameters already in this particular clustering module at the JavaScript level but there's no UI except for the radius at this stage. Are you a coder? No. Shane, find a coder and let it... have him contributed. Yep. Yeah, there's a... Geofield latest version has a filter, a number of filters for views and everything is based on views so if you filter, you can filter in the view by proximity. You can give a central point and then say give me all the points within a radius of 10,000, 100,000 km of this point. Oh, I don't know of an off-the-shelf solution for that. You had a question already? Someone else? Right. And that satisfied the government requirements? Mm-hmm. Okay. Yep, two good solutions. Thanks for sharing. What do you mean by directions? Oh, and it will tell you the root. I haven't come across that as part of the basic options within this set of modules. Yeah, I've used that sort of stuff myself but now it hasn't come up as out-of-the-box options when using these modules. Okay, yeah. OpenLayers has been around for a while and there's quite a few modules that I started with maps and OpenLayers. I was baffled about how hard it is. I mean, it starts off with if you want to create one map you have to create two views. You go, what? For a beginner to get your brain around that. And Vin Jones, one of the people that I'm thinking there, also went on a similar journey. He had to use OpenLayers initially at least because that's what the company worked for used. And he also said it was quite buggy, it was hard to use. But then in the end there was one specific thing about OpenLayers that he liked or that he was required to supply that had to do with a layer switcher done in JavaScript or something. And so in the end he chose OpenLayers. But he himself also says for my money, start with leaflet and it will do 90% of your job, 90% of the time. It is there in the JavaScript but it hasn't really been brought up the surface in the leaflet Drupal module. Yeah. But leaflet is pretty new. It came on the scene in Drupal I think September, October. So there's a lot of activity and no doubt someone will provide the facility soon. Yeah, so you're saying it comes about naturally purely because all the people flock to the city and so the population of the state is pretty much the population of the city. Yeah. Maybe. I haven't researched that. But how would you mention that like a drop down for a polygon? Yeah. Right. Right, import that and say yeah, I like it. Yeah, that would be a cool feature. Yeah. Right now I don't know how to do that. But love to work with you on it. Yeah. It leaflet market cluster does it beautifully. It when you have 20 markets at the same location like 20 people living in the same, I don't know apartment building, whatever then it shows them as a sort of spiral and so each of the markers is clickable and will have its own properties. Yeah, looks good. All right. Thanks very much everyone.