 I said it copied over the first time but alright everyone sorry for the late start unfortunately because we've lost the local environment on there there's some sort of demo we kind of stuff I was hoping to do that we may not be able to do we'll maybe try it again later if time still allows. I'm Martin Anderson Klitz from Digital and Kidna and as I mentioned before we're here to talk about location and mapping in Drupal. So just quickly what this presentation is is a high-level primer on mapping and location within Drupal websites. It grows out of kind of some personal things I was doing with location mapping in Drupal but you may have different experiences and and maybe some of that can come out of discussion at the end and this definitely is a work in progress so if you have any feedback on the presentation by all means let me know. At this point it's not detailed step-by-steps instructions so if you're looking for a how-to of kind of like you know these are the 10 steps to get you know geofield and whatever running on your website this is probably not exactly what you're looking for but there are some resources at the end that have some more detailed information that may be what you're looking for if that is in fact what you're looking for. So it's also not an exhaustive look at everything that's available it seemed like these were sort of the main things that people are using but if any of you have kind of a favorite solution for location or mapping by all means let me know because it'd be good to hear about your experience for sure. So I want to set some context around location and mapping again just this idea of making sure we're all on on the same wavelength here so what are some use cases for location mapping in a Drupal website so one of them might be a static map on kind of a brochure website where you just want to show where the store's location is as an example. Another one might be a dynamic map so users who are currently logged in so every time you visit that page it would be slightly different and another one would be showing relative location data so retail locations within a 10 kilometer radius of your current position would be an example of that one. Anybody have any sort of use cases outside of those sort of high-level buckets that they would want to talk about as far as something they've been wanting to achieve? Sure. So maybe other ones like things like near or in like looking for something in Ontario or something near Burlund. Okay. And obviously Buffalo is near Burlund. Right. It's not in Ontario. Sure. Now in that use case so when you're talking about in are you talking about being able to use sort of like a state or province as a logical constraint? Yeah. Any area that a user could freeform come up with. Okay. I'm looking for this in Ontario. Alright. I'm looking for this in Northern Canada. Okay. It's that kind of construct of how you take that general term and get location information. Sure. Okay. Well I think a combination of some of the location things that we're talking about and then views with filters is probably what you're looking for but maybe we can come back to that later on. Some of the core concepts we already touched on before so mapping and geocoding. Geocoding really just being taking how we describe something, the address and turning that into data that we can use to plot something on a map. So let's dive in and look at some of the options available. First let's start with the actual sort of the services that we use to build the things. So mapping options include things like Google, OpenStreetMaps, Leaflet, Bing, Yahoo, MapQuest. There's a bunch of them. So when you're choosing between them, you might want to think about some things like customizability, things like OpenStreetMap. You can actually sort of skin a little bit or choose what level of detail or information you want in there. The other thing to consider are some of the license restrictions. So things like Google you may only be able to show so many impressions a day of their maps before they actually want you to upgrade to a paid license that can be quite expensive. Other things are if you have sort of a private area of your site where you're wanting to use those maps, sometimes that can set you a file of some of those license restrictions. So depending on what your use is, the site that you're planning to use it on, you may want to look at does that actually line up with the given solution. Most of the ones that we're going to look at today are either entirely based in Google or sort of default to that, but some of them have options in terms of different services that you can use. And then it's a similar situation with geocoding. A lot of the same considerations, although they're also you might want to look at things like speed, uptime, accuracy. The other one with geocoding is will they actually let you store the results? So some of them will let you geocode, let's say up to 5,000 times a day, but they want you to geocode that same address every time a user asks for it. They don't actually license you to store the results of that in your local database. So that's, again, maybe something you want to consider. So in terms of the Drupal options that we're going to look at, there's a few here. I guess we'll just dive right into them. RAW embed is something that we'll just briefly touch on. It's not really something I'd recommend, but it's sort of good to know that it's an option available if you have some really weird edge case, where you need to get a map into some place and none of the given solutions really seem like a good fit. So you can just go into Google Maps, bring up the address or bring the map onto the place that you want to feature, get the embed code from Google Maps or whatever the service, and then go into Drupal and sort of paste that into, you know, your node or your block or wherever it is that you need to get that in. The one thing to make sure of is that the text format filter that you have allows for, you know, the iframe tag or whatever it is that it's using. Otherwise, it will just filter it out and you won't see anything. But as I say, it's probably not something I'd really recommend. It's simple to set up. There's very low hassle in terms of setting it up, but in terms of if you ever need to update it, it's, you know, you basically have to completely redo it. And there are other considerations like if you give an editor access to update that map later on, then you've basically given them access to, you know, put iframes or whatever anywhere throughout the site, essentially. So it's really not an ideal way to solve that. The next option is called Simple Google Maps, very lightweight module. Again, it's completely relying on Google. But effectively, what it does is it creates an iframe that does a search on whatever piece of text that you give the address, essentially. Pretty simple. But you don't always know for sure if it's going to be accurate. And particularly if it's something where you're going to give users the ability to, you know, add these to a note or something, you don't really know for sure that what you're going to get out of this is the expected input. So again, simple to implement. But in terms of control, it really doesn't give you a lot. If Google Maps brings, puts the app or the pointer on a given point, there's no ability to sort of say, no, it's across the street or tweak it at all. It's basically, you know, you get what you get. And then the other thing is it's only for one sort of note or location at a time. Location map is similar. But it actually gives you a little bit more control. So you can actually drag the pointer around if you need to fine tune the location again. So in terms of the pros and cons, it's pretty similar that way. But as I say, it does have the added benefit of giving you that extra bit of control. The next one's going to talk about our location in GMAP. So anybody who had done a lot of location stuff in Drupal 6 will probably be familiar with these because they were basically the standard in Drupal 6. It's really a combination of modules. So the location module is what sort of stores the location data. It will do the geocoding for you, and it also provides an API for other modules to do things with that locative data. And it has a series of submodules for adding different integrations or doing things like adding, you know, emails and phone numbers, specifically attaching those to the location. And then the GMAP module actually provides the mapping interface. It'll bring in the Google Map. But it looks like getLocation, which is another one that we'll talk about, is actually also able to work with locations. And that's sort of a theme that you'll start to see as we talk about these, is that it feels like they're sort of recommended combinations, but really most of the location modules are really a bit they're storing coordinates. And so getting them to work with different mapping solutions is definitely something you consider, but you'll probably find it easiest if you use them together in sort of the intended combination. So in terms of what's good about this combination, it was really the first solution within Drupal to be designed for doing proximity search. And as a result, so it has sort of longstanding views integration, but it doesn't have as many options as some of the other ones that we're going to talk about in terms of being able to use different services. And location and GMAP were sort of late to the game with Drupal 7. And that's why some of the other ones started to spring up as new solutions. And, you know, when I was doing some testing recently, when I got to the geocoding tab of the location setup, I got this fatal error. And when I went into the issue queue was an issue that had been raised like two years ago, and there's still no resolution. And it's like a white screen of death, basically. So it's pretty serious error for that to not be addressed for two years. I think tells you a little bit about sort of how actively it's being maintained. So for myself, I would say there's probably definitely sort of word of warning about using this one and depending on it. But I think a lot of people still use it because they probably built a site in D6. And then when they migrated to D7, it just was easier to keep the, you know, the overall architecture as much the same as possible. And then the other thing is, at least for myself, I find that the way that it manages things is maybe a little bit non-standard. Sort of the fields show up regardless of content type, and it just doesn't really necessarily feel as much like a Drupal 7 solution. It feels like it's a legacy solution that's been ported forward to Drupal 7. Another one that you can look at is called geolocation field. It provides a field designed to be a simple method for getting your coordinates and data. So it's, this one was really built with simplicity in mind. And for me, it's actually a really good solution. One of the things that's nice about it is it the map widget that it gives you for locating a place has a text field that you can use for like a Google Places search. And so you could type in, you know, Rogers Communication Center and it'll drop the pin right where that is. You can tweak that if you want. But the other thing you can also do is say, get my current location. And it's one of the few, one of the only options that really has that sort of right out of the box. Geofield, which we'll talk about later, has an extra module that you can drop in for HTML5 input. But to me, the way these things work together as part of a single input is really, really elegant in terms of, you know, if you wanted to provide this as an interface for users to get location data into your website. It already has a stable D8 release, which I think is reasonably impressive, although, as we'll see later, it's really not being used very much for obvious reasons. The other thing is that the D8 release currently doesn't necessarily have all of the same features as the Drupal 7 version. So in terms of what's good about geolocation, it's, I think, a pretty powerful module. It's really easy to set up. It works with all fieldable entities, so not just nodes, but you can use it on users, probably taxonomy, terms, you know, anything fieldable. And as I say, to me, that input that it has works really, really nicely in terms of being a good solution for location input. And if you wanted to start today on a Drupal 8 website, this is really a good solution. In terms of cons, it is tied to Google right now and out of the box, so if you needed to use something else, then it's not ideal. And the other thing that may not line up geolocation with what you're wanting to do is that it doesn't, on its own, store any address information. So it's really about just the coordinates. So if you needed to have the address and the map, then this actually isn't as good a solution. You'd have to almost have a separate address field for that. There's also a module called get locations. So by default, this one was designed to sort of create a map per node, and then it also creates a map per content type so you could have a content type of restaurants, give it location information, and then a content type of, let's say, movie theaters. And by default, it would create maps for all of those nodes, but then one for all restaurants and all movie theaters. Again, it's reasonably easy to set up, also out of the box based on Google Maps, but it does have options available if you wanted to use it with leaflet or other options. In fact, as part of the setup for this one, you actually have to download your own set of markers, but if you go to the project page, it has a long list of different markers that you can use. It has options for markers you can use for aggregation. So if there's a point or an area of the map where it has a cluster of points that can actually substitute in a different one, you can choose among those. So it's got a lot of really good options for being able to customize how it display things. And it also works with, it comes with a module called, or get locations fields, and that works pretty nicely, but it can also work with other location modules. So you can use it with geo field and address field and some of the other ones that we've talked about. If you wanted it to just do the mapping for you, but you also have the option to use the get locations fields. And to me, that one works really nicely too. The get locations fields is interesting because like what we talked about with geo location, it has that text input where you can search on an address and it'll get the information from Google, but in addition to getting the coordinate data, it can also pull in all of the address information. So if I searched digital echidna in there, it would bring back not just the coordinates, but it also bring back all of the address information and populate that right into your fields, which is really nice because you can very quickly add information but have a lot of that data that you can then use for filtering options or whatever you might need to do. So get locations to me is also a pretty strong contender. But one of the drawbacks of it is that it doesn't have any D8 release just yet. So again, depending on how soon you're looking to jump into the eight, you may want to watch if it looks like this is starting to have that. The other drawback to this one is it doesn't currently have any kind of a solution for that HTML five input of being able for somebody to say get my current location. So you've got to provide that. But as I say, the flip side is it does pull in all of that address information to you, which I think if that lines up with your use case is actually a really nice solution. Now Geofield is the one that I feel like is getting the most buzz within the Drupal community right now, particularly for Drupal 7. I was at DrupalCon LA and there was a talk that you'll actually see later on in the resources that they talked a lot about Geofield and some really sophisticated stuff you can do with it. I think it was a university where they had old photographic aerial photography of a particular neighborhood. And with Geofield you can do all kinds of really custom things, particularly when you use it with open layers, which is a mapping solution where you've got complete control of even what the backgrounds and stuff are. So they had taken these old aerial photography or aerial photographs of the neighborhood this university was in and were able to turn that international map that people could sort of scroll around and browse, which was pretty cool. So Geofield itself is just the container for the coordinate data, but it works with other modules. So typically you would use it with something like address field and geocoder. With something like address field and geocoder, so address field being the container for the address information and then geocoder would provide a button that you would hit that would then pull that into coordinate data. You can use it again with different mapping solutions, but open layer seems to be the one that most people are using it with because it is so powerful. And then it has a bunch of other options including things like proximity search with either the built in Drupal search or with solar. So Geofield, very customizable, as I say, it's got a lot of momentum in the community. It seems to be particularly people who are really hardcore into location and mapping. This seems to be their go-to right now. But if you go this route, it's by far the most complex in terms of how to set it up. There's a full page of documentation just to even be able to start adding the location data to your nodes with a solution. So it's definitely not for the faint of heart. And then the other thing is because it's using those different pieces, I don't find they necessarily work as well together as some of the other solutions. So like with geolocation, how it had, you could use the option of the HTML5 widget or the address search. Because with Geofield you can have an address field and you can have an HTML5 input, but you have to tell Geofield, at least by default, which one you want it to use. If you wanted, you could probably write some custom code that it could say if one is missing, use the other, or if it gets both, which one to use. But that would be a custom solution. Right now there's no sort of integrated way for it to use both those things intelligently. So a bit of a word of warning there. So in terms of how these things compare, this probably can't see very well unless you're close, which is unfortunate. Couple of things that I wanted to highlight here. So some of these are in very active development. So if you look at something like get locations, just how to release this month, whereas something like Geofield has been more than six months since the last release, location map, more than a year. So those are the kinds of things. If you're picking a solution, also try and pick one that feels like it's still actively developed. Geofield, as you can see, of all the ones that we've talked about, at least as far as location from the location side, is by far the most in use for Drupal 7, but the surprising, or sorry, I guess location, but Geofield of the newer ones anyway. And then also on there, you can see at the bottom, I'll see if the, Michael, let me get there, some of the sub modules. So location and get locations have a lot of different sub modules that give you extra functionality if you need it. Geofield doesn't really come with sub modules, but it has a lot of different integration in terms of other things in the community that you can tie in to make it do extra things for you. So all of those I feel like are really robust solutions. I'll have this presentation online. So if you wanna look at this after, it's sort of unfortunate that on the projector, it doesn't translate pretty well. And here's a similar view for the mapping. Again, just to give you a sense of, I think to some degree for both of these, they go from, I'll say the simplest method of handling, in this case, mapping on the left to the most complex on the right. And to me also, they get a little bit more complex and then when you get to open layer, it's just, I mean, it's a huge leap upwards in terms of the amount of configuration to get that working. So as I say, not for the faint of heart, you could also look at doing something like starting with Geofield and using leaflet or get locations as the mapping solution. And then maybe later on, dropping in open layers if you wanted to do something that was more complex. But I guess it all depends on what your use case is and what it is that you need it to do. Now, this is the part where I was hoping to get into my local environment and give you a sense of the UI for some of these. We can try it, but did you wanna talk about any of the other questions about what we've talked about already? Other solutions people have used that aren't here that wanna talk about at all, good to go. Okay. All right, so maybe the first thing I'll just give...