Tracking Slippy Map Analytics
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Sampson, Dustin
Google Analytics is a great tool for monitoring and reporting on website traffic and user interactions but what it doesn't tell you is that 75% of the time your user's zoom in two levels every time they start to use your map or that external soils layer you added is taking an average three seconds to load. Client side map monitoring adds the missing chapters needed to complete your geo-analytics storybook.We'll briefly walk-through how to setup your slippy map to start tracking analytics, what can be tracked, and what can be discovered.
 So we weren't tracking analytics for our clients. And, you know, we use the traditional stuff. We use Google Analytics, Canada to track, you know, how many people aren't looking at our cat tracking website, or we'd use New Relic to determine that, okay, that app, the bottlenecks in our app on that $10 server, you know, you can see, you get things are running out a month. But nothing specific to web maps or the web mapping experience. Web maps are a huge investment. You spend a whole bunch of time on data, prepping the data, getting it in the database, and then you spend all the time on the layers, making the layers look pretty, and then you spend a bunch of time on the web, or actually mapping the app itself, and then let alone all the other moving parts that make it work. And then once you're done, you sit back, you know, like any proud parent, you tweet about it, you tell your friends about it, you know, it's a pretty good map. But like any good parent, you want that A plus bumper sticker on your car. That's what web map analytics will do. It takes it to the next level. You got to make the changes based on informed decisions. A classic example is this, is from a government website in Canada with, you know, loads of tools, loads of tabs. Well, maybe you don't need that many. Maybe all you need is a zoom in, zoom out button. Don't get me wrong, analytics aren't the be all end all to all your problems. You know, it's not the mountaintop guru that's going to answer all your questions. It's not going to tell you why X happens, and more than likely the detailed data is inaccurate. But what it's going to show you is it's going to show you trends. You're going to see the changes over time, what's going on. It's going to prove or disapprove any assumptions you have, and I'm guessing most have made assumptions about their web maps, and it's going to provide the metrics to justify changes in the future. So what map analytics are useful? I think to start, if you're going to start tracking, start tracking the simple stuff, the obvious stuff, start tracking map activity. Where are people zooming? Where are they panning to? Map layer load times, you know. I'm thinking more tile layers in this case. And then map tool usage. So I have this friend Dan. He's got this cool mapping platform. He couldn't make it here because he just had a baby a couple of days ago, so I thought I'd throw him into my presentation. He's got this new platform that he's created for web mapping, and it makes it super easy to create new maps, add data, style layers. And his layers are all being pre-tiled and cached, but every time the user makes a change to any kind of style, the whole thing has to regenerate again. And in some cases, you know, clients are the size of the geographic area is like the size of British Columbia. I'm not sure who knows the size of British Columbia. It'd be millions of hectares, I'm guessing. And so the potential re-render process can be huge on that. So in addition to that, all of these clients are creating unique maps. So nothing's really the same. You know, I create a forestry layer and then replicate it for someone else because someone else might want to style it a little differently. So in Dan's case, his best scenario is how can I predetermine what areas should I be pre-generating and leave everything else to generate on the fly as a needed basis? So in this case, it's probably best to look at map activity, track where the users are spending their time, how often. And for example, in this map here, you know, rather than regenerating tiles for the whole United States, generate just for the San Francisco area, find the hot zones. So, you know, with this kind of case, you're assuming that you're still going to get pretty good map load time for most of your users and you're going to obviously decrease your processing time, huge, in this case. So that's assuming that. So as we mentioned before, you know, you don't want to make the assumption, the classic, you assume you make an asset of you and me. So at the same time, picking on Dan again, he could also be tracking layer load times. He reads it and rates this new layer for the whole US or San Francisco area and then he needs to verify his assumption. So with the load times now, he is tracking are his users having better load times or are they not? Maybe he needs to tweak his process a bit more to find a good balance of user experience, load times, and then decreasing his server load. Or he could find it's an epic failure and scrap the whole thing and start back to square one and, you know, I guess that's the way it'd be. But regardless of what he's doing and what his decision, it's an informed decision. It's not just an assumption or a guess. So to look at layer analytics in general, I think it's to monitor them ongoing is important. And I think it's especially important for new maps. Track the layer load times. You know, there's cases where, you know, that neighborhood layer that you have generated the tiles for and you're loading it in your map and you're serving it up, maybe way faster if you get it from a third party source because they have better servers, network, you know, content delivery network, whatever the case may be. But on the reverse side of that, you may have the opposite. You know, I've worked on maps where you've pulled in orthophotos from the government and for whatever reason, it's a lot slower. It'd be faster for me to download, process the tiles and serve them up myself. Another good thing on monitoring the layer loads would be tracking the load of multiple users hitting your system at the same time. From one or two people, you know, you add is going to be fast, but if you start adding a whole bunch of people on there, it's going to start slowing down the user experience for the user. And also monitoring the health, you know, you first get your map up for the first time, it's going to be lightning fast. But over time, you're going to have more user base, you know, you might start building up other craft on the server and it starts slowing things down. And tool use. Tool use isn't necessarily the case for everyone, but I think it's important for a lot of users that, you know, you get excited about a new web mapping platform and you know, I'm going to add every single tool there is, every tool. And I think it just confuses people and it's frustrating and it's intimidating to people, especially maps, you know, you look at general public type maps. And I think tracking which tools people use and how often they use them is a good indication to justify if they should be there or you should remove them. Or you may find that, you know, a combination of three tools could be joined into one if you start tracking analytics. And then it makes that more efficient for the user as well. But regardless what you do, it's back to the same thing. Make the decision, make an informed decision of taking these tools and stripping them down to one tool. So how do we track map analytics? Well, it kind of depends on the platform you're using. It could be as easy as a plugin like in the case of OpenGeo, you have MapMeter kind of built in as a plugin. Or it could be Google Maps API for work where it's already pre-built in. There's a dashboard and it's tracking a whole bunch of analytics for you already. But not everyone is using enterprise level systems. So what are your options? Well, there's Google Analytics. You can use it to expand on Google Analytics or something that we've been working at SparkGeo just recently is SlipTix, basically SlipyMap Analytics. So I wouldn't mind just running through a couple examples on this, maybe one for Google Analytics. So more than likely you're already using Google Analytics to track your website. As part of the API that you're loading into your website, it has a nice little function for tracking events, custom events. It allows you to define some categories, some actions, options, labels, values, that kind of thing. And you can track things like zoom level or in the case of the tool usage, you can track tool usage in your accounts. But for this example, I want to just go through and just count by zoom level how many times are each zoom level on my map getting hit. So I'm not sure how many people have set up the analytics part themselves, but generally you register through Google Analytics website, you register your website, and they'll give you a little code snippet and a tracking code that you need to embed in your website. If you're on a large team, it's more likely it's already there and you don't want to be adding it twice. So just maybe either do a look around or a find in your project. For this example, I want to use leaflet to, for this, so I want to include that. Creating the map and layer is nothing different than any other leaflet map, so there's nothing new here. But what I want to do is, because I want to track zoom level, I want to bind to the zoom end map event. So every time that zoom end is triggered, I want to send that information, that zoom level back to Google Analytics. And that's it. So right now it will track. So if we jump to, oops, I'm going to find where my cursor is. So maps loading, that's fine. Zoom in. So I can see that I'm already connected right now, obviously. I'm not sure how many people are familiar with the interface for Google Analytics. For the real time, you can go into events. So it was a guy at zoom level seven. And go back to the map. It's a little extreme zoom in, but it starts popping up more and more. So that's just the real time stuff. More than likely you're going to let it sit for a while, start collecting analytics, come back later, and then go in. In this case, I've created a custom widget. So if you're really keen on things, you can create a custom widget for your dashboard. And then just outlays. These are my zoom levels. These are my events. How many times have each one been hit. And then the nice thing about this, I can check by date. So if I find that there's a busy weekend or a busy week of lots of traffic, I can see where people are going, that kind of thing. And back to that tool example of tracking tools, it's the same thing. So it's much different than what this would be. So every time the tool is clicked, you'd send that click event information back to Google Analytics. And then you could add basically another widget to this. Is that just a JavaScript input that you did to do that? To add it into here? Or just this chart? Yeah, to add it to do that. Yeah, when you sign up with Google Analytics and go through the registration process, at the end of that, they'll give you a little code snippet of basically dynamically loads the Google Analytics libraries. And it tracks the zoom level? So in my... I'll just go back. So in this case, I'm actually tracking the zoom level on the bottom there in the red. So you did a busy class? Yeah, well, it's not custom. It's a pre-existing event inside Leaflet. So I'm binding to that event, so every time it's basically, every time it zooms, it sends that information back to the server. And you know, there's a whole bunch of events that you can bind to. You can bind to load events for layers. You can bind to click events from markers on the map. There's a lot you can track. So SlipTix. So SlipTix is a project that we started, I'd have to say, very recently at SparkTO. And we basically, we wanted to start building better maps. And you know, Will, a colleague of mine, when we're always talking about, oh, we assume this is the way, you know, this is... this is coming in fast, or we think this is slow, but we never had the answer. We never had the empirical data, basically, to prove that was the case. So we needed to know what was happening on our maps. And so we needed to track analytics on it. Google Analytics is great. You know, if you just want to track simple stuff like that. But I think we wanted to take it kind of to a new level and track more geo-analytics. And to do that, we needed something, I think, different. Because I'm not sure what exists out there for SlipTix map analytics, but I don't know of any. I'm not sure if any of you guys have run across any other kind of platforms. We needed it to be easy to implement into our existing maps and easy to implement into new maps. And also support kind of the major libraries that we use, which is leaflet, open layers, and Google Maps. We understand this probably going to be a performance tip, but we want to keep that to a minimal as possible. And obviously, the more you're going to start tracking, the slower it could potentially get. Basically, SlipTix was born from that. Like I said before, it's slippy map analytics. The other nice thing about it is we're not tied to a specific vendor. I can see how fast the British Columbia government layer is coming into our map. I can see where, you know, wherever the layers or wherever the information is coming from, I can see where it's happening. I'm not tied to necessarily my own data. So in this case, I want to run through a quick example of doing an A-B testing of a layer. It's similar to Google Analytics. You know, you'd register on the SlipTix website, you'd get a tracking code similar to Google Analytics, which I'll talk about a bit later, and then you include the SlipTix client library. And because it requires leaflet, you can see just added in just like any other JavaScript library. In this case, I want to test four different layers that I've kind of randomly selected. There's standard leaflet tile layers, so there's nothing new here. And that was part of the requirement of what we wanted for the library. We wanted to keep things as minimal as possible, minimal changes as possible. I guess there's one addition. I got lied. There's the SAID. So the SAID is our way of tracking, well, it's basically our way of identifying that layer in our user interface. So you don't supply SAID, everything works fine, but you're going to have a URL. You're going to have the source URL template in your reporting. So this just cleans it up a little bit. So in this example, I want to select a layer. So I randomly select a layer of the array. And then I create a map instance just like you do in any other leaflet map. But now this is where the tracking ID comes in. So the tracking ID is tied to your website URL, not necessarily the map specific. And also I've put an SAID in here as well to uniquely identify that map. So, okay. And then finally add the layers of the map just like you would at any other time. I'm just going to jump to, if I had my cursor again. I'm not sure which layer this is, but there's a new layer. And then I can go into, so when the layer loads for the first time, so it's SlipTix, take a step back. So SlipTix registers your site. So you go to the website, you're going to see SlipTix site in there. But there will be no maps. And as soon as the layer loads for the first time, it registers that map in SlipTix. And then you can go through the kind of the reporting page later. So, I can find it. So I registered this earlier before the presentation. There's zero maps at the time loaded. So there's my A-B test. It's been loaded once. And then I guess I start getting into analytics. So if I go down to, well, in this case, I haven't moved anywhere yet. If I make her see again. So it registers that layer, specific layer. I'm not sure what that one says. Can anyone read that? Fender? So we're tracking the average speed loads, how many times it's been loaded, how number of activities that the user does on the map while that layer is loaded. Average is max min, that kind of thing there for that. And then you can change date to switch to hourly or set a range or whatever. So if I go back in again. I'm not sure if that's the same layer. So I'll do it again. So we've got a couple different. So then it just keeps, starts tracking the information. And then from here, it's like any other analytics. You know, you step back for a while, let it do its thing, come back later and start looking at what's going on. And then you start seeing them. This case for the A.B. test, you might want to track the user engagement. How engaged are they with that specific layer? Are they looking at it? Oh, yeah, that's nice. And then leaving or are they spending some time on it? But then you can then you look at the case. Well, they're spending time on it. Is it confusing because they have to zoom around and look around because the layer is not clear. But that's a whole other map psychology of why they're not doing it. So, but we're tracking the what. So we're in the early stages of this now. And back to the case of Dan's case, it will also track the number of activities at specific zoom levels as well. So you can see, is this the zoom level busy? Zoom level 20 never sees anyone. So it kind of gives you an indication for the caching to make your caching better as well to keep track of that. So that's showing you where on the map the person is zooming. Yeah, I'm not sure. Yeah, I got the it's just small, but it basically starts showing you hot zones of where the activity is. Right now it is a heat map. It's just I only have one point or two points or something. So that's how many that's zoom level 13 that so it displays the most active zoom level to start with. And then let me go back. My cursor again. Only have the one zoom level in this case. So I've been zooming enough, but it will list all the zoom levels that it has been at. And then what how many how many accounts for each level? I guess we don't need itunes. So to kind of summarize things up, tracking map analytics is going to help make your maps better. It's going to make it from good to great. If you're interested, start tracking simple things to start with, like I said, track the map movements track layer load times track the tools. Start with that and then extend your collection from there because you're going to start asking more questions and then you're going to have to find out how to answer those questions. Well, you might want to start tracking other stuff on your map. You might want to start tracking map clicks or just in general the whole for all app like the buttons, which buttons people are clicking. How do you do that? Well, that's you start binding to events and stuff like that. So SlipTix itself, we haven't done that piece yet, but it's basically to come. And, you know, these ones aren't necessarily there's lots of options out there if you either use one or use a combination, you know, use combination Google Analytics and you use and SlipTix or whatever you want. But I think to take anything away from this make the informed decision. I think that's ultimate goal. Questions? I'm not sure if you get a... We're very early on it right now, so we're sorting out development wise and then we haven't sort of feed, but we've been kind of throwing around free to start to a certain level depending on how much usage and then we're going to start to pay after, but we're still kind of working on that. Yeah, it was the ID that you... You had some ID... What is it? SPID or... SAID. SAID for identifying the maps. You can also use that. Could you give 10 different maps in your system the same SAID if you wanted to combine the results or could you automatically... Or could the SAID say be identifying a user account in fact when you load a map for a given user so you can see what maps a specific user sees or how much this user does versus this other user? SAID could be anything. It could be... It's up to you to... We call it an ID, but it's kind of more of a label. Like how do you want to label it? There is... I'm trying to think. I'm just looking at ways to aggregate the data in sensible ways if it's not just... If you have one... Each map is not used by... If you have... Each map is specific to one person potentially. You have lots and lots of maps. Like I said, we're super early on this development and we're looking for any feedback. So if anyone's interested in giving what they would like it to do or suggest features or beta test or... Go to the website slipticks.com. There's a kind of a sign up there. You can leave a note in there that if you're interested in giving a... Basically kicking the tires and giving us a spin. If anyone else has questions maybe... After. Yeah, if you guys want to just hit me up. Sorry. Thank you.
 So we weren't tracking analytics for our clients.  And, you know, we use the traditional stuff.  We use Google Analytics, Canada to track, you know, how many people aren't looking at our cat tracking website,  or we'd use New Relic to determine that, okay, that app, the bottlenecks in our app on that $10 server,  you know, you can see, you get things are running out a month.  But nothing specific to web maps or the web mapping experience.  Web maps are a huge investment.  You spend a whole bunch of time on data, prepping the data, getting it in the database,  and then you spend all the time on the layers, making the layers look pretty,  and then you spend a bunch of time on the web, or actually mapping the app itself,  and then let alone all the other moving parts that make it work.  And then once you're done, you sit back, you know, like any proud parent,  you tweet about it, you tell your friends about it, you know, it's a pretty good map.  But like any good parent, you want that A plus bumper sticker on your car.  That's what web map analytics will do.  It takes it to the next level.  You got to make the changes based on informed decisions.  A classic example is this, is from a government website in Canada with, you know,  loads of tools, loads of tabs.  Well, maybe you don't need that many.  Maybe all you need is a zoom in, zoom out button.  Don't get me wrong, analytics aren't the be all end all to all your problems.  You know, it's not the mountaintop guru that's going to answer all your questions.  It's not going to tell you why X happens, and more than likely the detailed data is inaccurate.  But what it's going to show you is it's going to show you trends.  You're going to see the changes over time, what's going on.  It's going to prove or disapprove any assumptions you have,  and I'm guessing most have made assumptions about their web maps,  and it's going to provide the metrics to justify changes in the future.  So what map analytics are useful?  I think to start, if you're going to start tracking, start tracking the simple stuff,  the obvious stuff, start tracking map activity.  Where are people zooming?  Where are they panning to?  Map layer load times, you know.  I'm thinking more tile layers in this case.  And then map tool usage.  So I have this friend Dan.  He's got this cool mapping platform.  He couldn't make it here because he just had a baby a couple of days ago,  so I thought I'd throw him into my presentation.  He's got this new platform that he's created for web mapping,  and it makes it super easy to create new maps, add data, style layers.  And his layers are all being pre-tiled and cached,  but every time the user makes a change to any kind of style,  the whole thing has to regenerate again.  And in some cases, you know, clients are the size of the geographic area  is like the size of British Columbia.  I'm not sure who knows the size of British Columbia.  It'd be millions of hectares, I'm guessing.  And so the potential re-render process can be huge on that.  So in addition to that, all of these clients are creating unique maps.  So nothing's really the same.  You know, I create a forestry layer and then replicate it for someone else  because someone else might want to style it a little differently.  So in Dan's case, his best scenario is how can I predetermine  what areas should I be pre-generating and leave everything else  to generate on the fly as a needed basis?  So in this case, it's probably best to look at map activity,  track where the users are spending their time, how often.  And for example, in this map here, you know,  rather than regenerating tiles for the whole United States,  generate just for the San Francisco area, find the hot zones.  So, you know, with this kind of case, you're assuming that you're still going to get  pretty good map load time for most of your users  and you're going to obviously decrease your processing time, huge, in this case.  So that's assuming that.  So as we mentioned before, you know, you don't want to make the assumption,  the classic, you assume you make an asset of you and me.  So at the same time, picking on Dan again, he could also be tracking layer load times.  He reads it and rates this new layer for the whole US or San Francisco area  and then he needs to verify his assumption.  So with the load times now, he is tracking are his users having better load times  or are they not?  Maybe he needs to tweak his process a bit more to find a good balance of user experience,  load times, and then decreasing his server load.  Or he could find it's an epic failure and scrap the whole thing and start back to square one  and, you know, I guess that's the way it'd be.  But regardless of what he's doing and what his decision, it's an informed decision.  It's not just an assumption or a guess.  So to look at layer analytics in general, I think it's to monitor them ongoing is important.  And I think it's especially important for new maps.  Track the layer load times.  You know, there's cases where, you know, that neighborhood layer that you have generated the tiles for  and you're loading it in your map and you're serving it up, maybe way faster if you get it from a third party source  because they have better servers, network, you know, content delivery network, whatever the case may be.  But on the reverse side of that, you may have the opposite.  You know, I've worked on maps where you've pulled in orthophotos from the government  and for whatever reason, it's a lot slower.  It'd be faster for me to download, process the tiles and serve them up myself.  Another good thing on monitoring the layer loads would be tracking the load of multiple users hitting your system at the same time.  From one or two people, you know, you add is going to be fast, but if you start adding a whole bunch of people on there,  it's going to start slowing down the user experience for the user.  And also monitoring the health, you know, you first get your map up for the first time, it's going to be lightning fast.  But over time, you're going to have more user base, you know, you might start building up other craft on the server  and it starts slowing things down.  And tool use.  Tool use isn't necessarily the case for everyone, but I think it's important for a lot of users that, you know,  you get excited about a new web mapping platform and you know, I'm going to add every single tool there is, every tool.  And I think it just confuses people and it's frustrating and it's intimidating to people, especially maps, you know, you look at general public type maps.  And I think tracking which tools people use and how often they use them is a good indication to justify if they should be there or you should remove them.  Or you may find that, you know, a combination of three tools could be joined into one if you start tracking analytics.  And then it makes that more efficient for the user as well.  But regardless what you do, it's back to the same thing.  Make the decision, make an informed decision of taking these tools and stripping them down to one tool.  So how do we track map analytics?  Well, it kind of depends on the platform you're using.  It could be as easy as a plugin like in the case of OpenGeo, you have MapMeter kind of built in as a plugin.  Or it could be Google Maps API for work where it's already pre-built in.  There's a dashboard and it's tracking a whole bunch of analytics for you already.  But not everyone is using enterprise level systems.  So what are your options?  Well, there's Google Analytics.  You can use it to expand on Google Analytics or something that we've been working at SparkGeo just recently is SlipTix, basically SlipyMap Analytics.  So I wouldn't mind just running through a couple examples on this, maybe one for Google Analytics.  So more than likely you're already using Google Analytics to track your website.  As part of the API that you're loading into your website, it has a nice little function for tracking events, custom events.  It allows you to define some categories, some actions, options, labels, values, that kind of thing.  And you can track things like zoom level or in the case of the tool usage, you can track tool usage in your accounts.  But for this example, I want to just go through and just count by zoom level how many times are each zoom level on my map getting hit.  So I'm not sure how many people have set up the analytics part themselves, but generally you register through Google Analytics website, you register your website,  and they'll give you a little code snippet and a tracking code that you need to embed in your website.  If you're on a large team, it's more likely it's already there and you don't want to be adding it twice.  So just maybe either do a look around or a find in your project.  For this example, I want to use leaflet to, for this, so I want to include that.  Creating the map and layer is nothing different than any other leaflet map, so there's nothing new here.  But what I want to do is, because I want to track zoom level, I want to bind to the zoom end map event.  So every time that zoom end is triggered, I want to send that information, that zoom level back to Google Analytics.  And that's it. So right now it will track.  So if we jump to, oops, I'm going to find where my cursor is.  So maps loading, that's fine.  Zoom in.  So I can see that I'm already connected right now, obviously.  I'm not sure how many people are familiar with the interface for Google Analytics.  For the real time, you can go into events.  So it was a guy at zoom level seven.  And go back to the map.  It's a little extreme zoom in, but it starts popping up more and more.  So that's just the real time stuff.  More than likely you're going to let it sit for a while, start collecting analytics, come back later,  and then go in. In this case, I've created a custom widget. So if you're really keen on things, you can create a custom widget for your dashboard.  And then just outlays. These are my zoom levels. These are my events. How many times have each one been hit.  And then the nice thing about this, I can check by date.  So if I find that there's a busy weekend or a busy week of lots of traffic, I can see where people are going, that kind of thing.  And back to that tool example of tracking tools, it's the same thing.  So it's much different than what this would be. So every time the tool is clicked, you'd send that click event information back to Google Analytics.  And then you could add basically another widget to this.  Is that just a JavaScript input that you did to do that?  To add it into here? Or just this chart?  Yeah, to add it to do that.  Yeah, when you sign up with Google Analytics and go through the registration process, at the end of that, they'll give you a little code snippet of basically dynamically loads the Google Analytics libraries.  And it tracks the zoom level?  So in my... I'll just go back.  So in this case, I'm actually tracking the zoom level on the bottom there in the red.  So you did a busy class?  Yeah, well, it's not custom. It's a pre-existing event inside Leaflet.  So I'm binding to that event, so every time it's basically, every time it zooms, it sends that information back to the server.  And you know, there's a whole bunch of events that you can bind to.  You can bind to load events for layers.  You can bind to click events from markers on the map.  There's a lot you can track.  So SlipTix.  So SlipTix is a project that we started, I'd have to say, very recently at SparkTO.  And we basically, we wanted to start building better maps.  And you know, Will, a colleague of mine, when we're always talking about, oh, we assume this is the way, you know, this is...  this is coming in fast, or we think this is slow, but we never had the answer.  We never had the empirical data, basically, to prove that was the case.  So we needed to know what was happening on our maps.  And so we needed to track analytics on it.  Google Analytics is great.  You know, if you just want to track simple stuff like that.  But I think we wanted to take it kind of to a new level and track more geo-analytics.  And to do that, we needed something, I think, different.  Because I'm not sure what exists out there for SlipTix map analytics, but I don't know of any.  I'm not sure if any of you guys have run across any other kind of platforms.  We needed it to be easy to implement into our existing maps and easy to implement into new maps.  And also support kind of the major libraries that we use, which is leaflet, open layers, and Google Maps.  We understand this probably going to be a performance tip, but we want to keep that to a minimal as possible.  And obviously, the more you're going to start tracking, the slower it could potentially get.  Basically, SlipTix was born from that.  Like I said before, it's slippy map analytics.  The other nice thing about it is we're not tied to a specific vendor.  I can see how fast the British Columbia government layer is coming into our map.  I can see where, you know, wherever the layers or wherever the information is coming from, I can see where it's happening.  I'm not tied to necessarily my own data.  So in this case, I want to run through a quick example of doing an A-B testing of a layer.  It's similar to Google Analytics. You know, you'd register on the SlipTix website, you'd get a tracking code similar to Google Analytics,  which I'll talk about a bit later, and then you include the SlipTix client library.  And because it requires leaflet, you can see just added in just like any other JavaScript library.  In this case, I want to test four different layers that I've kind of randomly selected.  There's standard leaflet tile layers, so there's nothing new here.  And that was part of the requirement of what we wanted for the library.  We wanted to keep things as minimal as possible, minimal changes as possible.  I guess there's one addition. I got lied.  There's the SAID. So the SAID is our way of tracking, well, it's basically our way of identifying that layer in our user interface.  So you don't supply SAID, everything works fine, but you're going to have a URL.  You're going to have the source URL template in your reporting.  So this just cleans it up a little bit.  So in this example, I want to select a layer. So I randomly select a layer of the array.  And then I create a map instance just like you do in any other leaflet map.  But now this is where the tracking ID comes in.  So the tracking ID is tied to your website URL, not necessarily the map specific.  And also I've put an SAID in here as well to uniquely identify that map.  So, okay.  And then finally add the layers of the map just like you would at any other time.  I'm just going to jump to, if I had my cursor again.  I'm not sure which layer this is, but there's a new layer.  And then I can go into, so when the layer loads for the first time, so it's SlipTix, take a step back.  So SlipTix registers your site. So you go to the website, you're going to see SlipTix site in there.  But there will be no maps. And as soon as the layer loads for the first time, it registers that map in SlipTix.  And then you can go through the kind of the reporting page later.  So, I can find it.  So I registered this earlier before the presentation. There's zero maps at the time loaded.  So there's my A-B test. It's been loaded once.  And then I guess I start getting into analytics.  So if I go down to, well, in this case, I haven't moved anywhere yet.  If I make her see again.  So it registers that layer, specific layer.  I'm not sure what that one says. Can anyone read that? Fender?  So we're tracking the average speed loads, how many times it's been loaded,  how number of activities that the user does on the map while that layer is loaded.  Average is max min, that kind of thing there for that.  And then you can change date to switch to hourly or set a range or whatever.  So if I go back in again.  I'm not sure if that's the same layer. So I'll do it again.  So we've got a couple different.  So then it just keeps, starts tracking the information.  And then from here, it's like any other analytics.  You know, you step back for a while, let it do its thing, come back later and start looking at what's going on.  And then you start seeing them.  This case for the A.B. test, you might want to track the user engagement.  How engaged are they with that specific layer?  Are they looking at it? Oh, yeah, that's nice.  And then leaving or are they spending some time on it?  But then you can then you look at the case.  Well, they're spending time on it.  Is it confusing because they have to zoom around and look around because the layer is not clear.  But that's a whole other map psychology of why they're not doing it.  So, but we're tracking the what.  So we're in the early stages of this now.  And back to the case of Dan's case, it will also track the number of activities at specific zoom levels as well.  So you can see, is this the zoom level busy?  Zoom level 20 never sees anyone.  So it kind of gives you an indication for the caching to make your caching better as well to keep track of that.  So that's showing you where on the map the person is zooming.  Yeah, I'm not sure.  Yeah, I got the it's just small, but it basically starts showing you hot zones of where the activity is.  Right now it is a heat map.  It's just I only have one point or two points or something.  So that's how many that's zoom level 13 that so it displays the most active zoom level to start with.  And then let me go back.  My cursor again.  Only have the one zoom level in this case.  So I've been zooming enough, but it will list all the zoom levels that it has been at.  And then what how many how many accounts for each level?  I guess we don't need itunes.  So to kind of summarize things up, tracking map analytics is going to help make your maps better.  It's going to make it from good to great.  If you're interested, start tracking simple things to start with, like I said, track the map movements track layer load times track the tools.  Start with that and then extend your collection from there because you're going to start asking more questions and then you're going to have to find out how to answer those questions.  Well, you might want to start tracking other stuff on your map.  You might want to start tracking map clicks or just in general the whole for all app like the buttons, which buttons people are clicking.  How do you do that?  Well, that's you start binding to events and stuff like that.  So SlipTix itself, we haven't done that piece yet, but it's basically to come.  And, you know, these ones aren't necessarily there's lots of options out there if you either use one or use a combination, you know, use combination Google Analytics and you use and SlipTix or whatever you want.  But I think to take anything away from this make the informed decision.  I think that's ultimate goal.  Questions?  I'm not sure if you get a...  We're very early on it right now, so we're sorting out development wise and then we haven't sort of feed, but we've been kind of throwing around free to start to a certain level depending on how much usage and then we're going to start to  pay after, but we're still kind of working on that.  Yeah, it was the ID that you...  You had some ID...  What is it?  SPID or...  SAID.  SAID for identifying the maps.  You can also use that.  Could you give 10 different maps in your system the same SAID if you wanted to combine the results or could you automatically...  Or could the SAID say be identifying a user account in fact when you load a map for a given user so you can see what maps a specific user sees or how much this user does versus this other user?  SAID could be anything.  It could be...  It's up to you to...  We call it an ID, but it's kind of more of a label.  Like how do you want to label it?  There is...  I'm trying to think.  I'm just looking at ways to aggregate the data in sensible ways if it's not just...  If you have one...  Each map is not used by...  If you have...  Each map is specific to one person potentially.  You have lots and lots of maps.  Like I said, we're super early on this development and we're looking for any feedback.  So if anyone's interested in giving what they would like it to do or suggest features or beta test or...  Go to the website slipticks.com.  There's a kind of a sign up there.  You can leave a note in there that if you're interested in giving a...  Basically kicking the tires and giving us a spin.  If anyone else has questions maybe...  After.  Yeah, if you guys want to just hit me up.  Sorry.  Thank you.
01_Dustin_Sampson_720p_0_3323.png 01_Dustin_Sampson_720p_3324_4055.png 01_Dustin_Sampson_720p_4056_8663.png 01_Dustin_Sampson_720p_8664_13163.png 01_Dustin_Sampson_720p_13164_13691.png 01_Dustin_Sampson_720p_13692_16583.png 01_Dustin_Sampson_720p_16584_16763.png 01_Dustin_Sampson_720p_16764_18143.png 01_Dustin_Sampson_720p_18144_19391.png 01_Dustin_Sampson_720p_19392_19763.png 01_Dustin_Sampson_720p_19764_24455.png 01_Dustin_Sampson_720p_24456_26687.png 01_Dustin_Sampson_720p_26688_27875.png 01_Dustin_Sampson_720p_27876_28379.png 01_Dustin_Sampson_720p_28380_28859.png 01_Dustin_Sampson_720p_28860_29303.png 01_Dustin_Sampson_720p_29304_29363.png 01_Dustin_Sampson_720p_29364_29447.png 01_Dustin_Sampson_720p_29448_29543.png 01_Dustin_Sampson_720p_29544_29591.png 01_Dustin_Sampson_720p_29592_29651.png 01_Dustin_Sampson_720p_29652_29867.png 01_Dustin_Sampson_720p_29868_31883.png 01_Dustin_Sampson_720p_31884_32639.png 01_Dustin_Sampson_720p_32640_33923.png 01_Dustin_Sampson_720p_33924_34883.png 01_Dustin_Sampson_720p_34884_35375.png 01_Dustin_Sampson_720p_35376_36383.png 01_Dustin_Sampson_720p_36384_37007.png 01_Dustin_Sampson_720p_37008_37163.png 01_Dustin_Sampson_720p_37164_37811.png 01_Dustin_Sampson_720p_37812_37859.png 01_Dustin_Sampson_720p_37860_37907.png 01_Dustin_Sampson_720p_37908_37979.png 01_Dustin_Sampson_720p_37980_38002.png