Xamarin Evolve 2013: Building Mobile Cross-platform Geospatial Apps

thanks for coming so my name is Nick Landry and today I’m going to talk about geo spatial development so more specifically I use the term geospatial because we’re gonna go beyond just Maps or a lot of people people a lot of times people think about geospatial they think oh it’s just all about the maps in fact one of the things I want to do today is go behind behind beyond those Maps all right so my name is Nick Landry I’m a Senior Product Manager infragistics you guys familiar with infragistics yes who was familiar actually who actually knows that we have iOS controls native iOS controls no one right well now now you know we do you can come talk to me of my booth afterwards the reason why I mentioning this also is not just because we’re at a conference like xamarin evolved but also i’m the product manager for nucleus which are if’s controls i basically manage all of our mobile products so quickly about me so I’ve speaking a lot of events have been doing this for a while specialized on a bunch of things so to me mobile and geospatial or my two primary loves for do so doing a session on mobile geospatial was just like a perfect fit for me that’s why I’m really excited to come and talk to you about this I’m actually an MVP on Windows Phone development kind of ironic given that i’m doing a session primarily around iOS and Android but it does reflect the reality of where we are today this is 2013 and you can’t really qualify yourself as saying like oh I’m a windows phone developer or I’m an iOS developer or I’m an Android developer truly what you want to be able to say and I think that’s why you’re here as well it’s say I’m a mobile developer so today it’s going to be mostly about Android and iOS I’m not really going to cover Windows Phone just have a quick little thing about it but that’s not a purpose in my talk you’ll get all the materials for this by the way so the one thing you need to remember is active Nick net that’s my blog so it’s going to redirect you to my blog at infragistics and that’s where i’ll be posting the slides probably sometime either later this week or early next week and all the demos also i will be posting as well so at least everything you’ll be you’ll see today you will get the code for you can also follow me on twitter at active Nick it’s a really loud music next door it’s probably Miguel doing his entrance again or something I really appreciate you guys coming for this one you can learn anywhere what’s new in iOS okay so some quick assumptions I I assume that you know some of the basics of xamarin development because I’m not really here to teach you those basics so if you’ve seen the training you’re fine if you’ve played with it a little you’re fine but I’m not here really to answer a lot of the questions about how Zaman’s tools work I’m going to focus on some specific niche areas primarily around mapping and then making rest calls the geospatial services and things like that I also assume that you’re a dot net developer so that you already know C sharp it could be vb.net or c or f sharp as well of course at you know visuals video maybe zamel in general not that I use them all and it’s talk but that’s it fits your profile of who you are it helps if you know mobile development sometimes on other platforms but then again we’re all here to learn so it’s not a really big problem I also assume that you know a bit about rest like at least how to call them maybe not i’ll be showing you some techniques here that are pretty easy on how you do this from any data platform including sam runs iOS and Android but I do assume that you don’t know anything about GIS development so that’s pretty much my starting point so if you’re a mobile developer you’re starting mobile but you want to learn more about the mapping side of things geospatial side of things that’s what I’m going to cover today so if you do know about GIS there’s some parts probably that will sound a bit familiar to you for the iOS part this is no secret it’s not just my role is basically apples rule you’ll need a mac as you know already so if you didn’t catch that already be prepared to get a mac and I also assume if you want to learn the the cross-platform techniques and best practices on iOS and Android and of course all that stuff can be used on Windows 8 Windows Phone as well so I’m not here to talk about phonegap and i’m also not here to tell you about how to design a good mobile app that in itself is like a month of training okay so I’m going to give you a very quick overview of the GIS world initially I thought I had only 45 minutes for this talk based on the original schedule apparently I have an hour so that’s going to give me a little more breathing room so that’s good and we’ll look at all so why GIS matters for mobile developers and for mobile users then we’ll start looking at a lot of different imagery options that you have on different platforms because there’s a lot of choices out there it’s not just about using the map kit on Apple and that’s it so we’ll talk about some of those and beyond maps there’s geospatial services we’re going to explore and then I’ll give you a simple cross-platform demo it’s not rocket science but it shows a lot of the key essentials that you need to master when you build an application is going to be map driven and so my G is a very is a very simple demo that i have on iOS and Android I have a little prototype working a windows phone as well because that was

my starting point and it’s going to focus mostly on geocoding services as well combined with mapping and then hopefully at the end I’ll have some time for Q&A if not I’m around until tomorrow afternoon so you can come see me at the booth infragistics so when we look at the mobile platform options of course when you think mobile developer most people will usually think Apple Android those are the two dominant platforms to an extent windows is still a player windows phone is actually growing Windows 8 is gaining market share blackberry is in a tough spot so it’s a bit of a tough situation as a xamarin developer if we can call you that as a salmon developer of course the prime platforms you’ll be working on our iOS Android and Windows but then there’s also the big dilemma of html5 so this is more just a positioning slide of course that is show like this one everybody knows that we’re not really covering the bottom part of the session of the the slide here the whole html5 mobile hybrid phonegap and everything it has a time and a place for certain scenarios but I’m a personal believer that Zaman’s approach is actually the right one kind of forcing you to rebuild your UI in your native application but then trying to share as much gold as possible so for today that’s going to be my primary focus or the two platforms on the left with a little bit of prototyping on Windows Phone as well okay so let’s give you a quick overview about GIS because GIS is more than just about maps and using GPS for example to find you on a map so what is gif so first of all GIS stands for geographic information systems or some people will use a geospatial information systems think of it as software and sometimes even hardware but primarily you can do a lot of with software today it’s software that will combine a lot of different technologies to achieve a goal so it’s software that’s going to leverage Maps first of all so the maps going to be shown they could be raster maps made from tiles or they could be vector maps that are actually drawn in real time you’re going to need some imagery as well so some services will give you satellite imagery or aerial imagery or hybrid imagery hybrids means where the satellite picture actually has labels on top of it then you’ve got a lot of things like a data processing geocoding so these are all features that you can have in terms of taking your data and in working with that data but that data is going to have a geospatial component attached to it geo spatial component is nothing fancy it simply means that either directly or indirectly you can put that data on the map you can associate a latitude and longitude for it or multiple latitudes and longitudes if it’s in the area that you’re talking about then you’ve got additional services you’re going to be working with for example like routing and directions where to go from point A to point B it’s not necessarily a straight line we’re not Birds we don’t fly and even if you fly off to go to airports so it’s all about driving routes and then making sure that you fit within the streets and of course spatial data itself is a key component here spatial data doesn’t just mean the data that has a latitude and longitude attached to it it means any kind of data that may be indirectly has a geospatial component so a product a product could be geospatial data because that product is made by a company or its manufactured somewhere or it has an original and the destination also where it’s going if somebody buys that actual product then that’s another component that gives you geospatial spacy data that gives you geo spatial components attached to it that data you’re going to have to store it somewhere so whenever you store it is you’re going to have to put it in some kind of spatial storage you can do it all manually or you can use geospatial compliant databases for it things like see my sequel server sequel Azure all have support for geospatial searches so that means that you would be able to do a query like something for example saying I have a point that I’ve geocoded based on an address and I want to find all the locations that fit within that radius within the three-mile radius or withing a bounding frame so these kinds of queries are called geospatial queries so for this you’re going to need some kind of engine it allows you to do this kind of search then ultimately once you’ve stored your data in a database and you can do processing on it you can geocode it you can drive routes and everything ultimately the system is supposed to do something that’s going to be related to business so that’s where something like reporting and analytics fits into this that’s where it becomes very standard very standard reporting or bi tools that you’re going to be using for this the only difference is that very often you’re also going to have a map that’s going to be part of that reporting whether it’s a static map or even if it’s a dynamic map and then finally the last components is location services this is where some hardware comes into play traditionally it required a little

more expensive hardware to do this now we all have a GPS in our pocket I still remember because I was a windows mobile user back in a day because I’ve been an MVP for nine years so before that it was windows mobile than Windows Phone and I was so excited when that first phone I think it was an HP phone like one of the the compacts basically had a GPS built in I was like wow this is unbelievable when you think about it we got a GPS on the phone now we all take it for granted but if you grew grew up you know with the phones and everything you realize that how far we’ve come I mean in in 2006 my wife would always get lost all the time whenever she would drive somewhere she would get nervous she she was a wreck you know if I’m she had to drive in an area where she couldn’t go I bought her a GPS like a garmin gps device to put her car that was one of the best gifts that i could have ever given her and I’ve given her plenty of jewelry trust me okay but as a techie gift because she’s not a nerd at all as a techie gift that GPS device was unbelievable now of course she doesn’t use it anymore we get built-in GPS built in our cars we have it on our smartphones so location service is actually something that becomes a key tool because it could be to track assets or it could be too for the users to position themselves and know what data they have around them so why is is G is important so there’s a in GIS circles there’s a statistic that runs around and nobody has really been able to pinpoint what study it came from but it’s kind of a something that’s taken for granted in GIS circles that there’s about seventy to eighty percent of business data that has a geospatial component attached to it whether it’s direct or whether it’s indirect whereas data in the end you can put it in tables you can put it in grids and yet grids are great we sell a ton of them so that’s great but there’s more than grids in life especially when you build a user interface sometimes that data belongs better on a map so whether it’s customer locations or supply chain knowing where stuff is or whether it’s just plain social media where users are out there and you want to be able to know where they are they want to know where they are what’s around them how they can interact with others geospatial components we people kind of expect them more and more as part of their applications and I think that’s why you’re here you want to learn a little more about how you can integrate this in your apps so mobile is a natural extension of that because of course when you think about geospatial you can think about a computer system but ultimately the person would be sitting at a computer in an office not moving from there it makes a lot more sense on a mobile device where people actually out there there in the field and they’re actually moving because it’s all about location if the location never changes it’s kind of boring if the user and the data moves a lot then you have a perfect scenario and that’s where mobile comes at a play we have access to better imagery that today people have new perspectives on things where they expect things to be on the map and then you can actually personalize that mapping experience by showing them what’s around them was relevant to them and mobile devices now all have location services they all have GPS chips they’re more powerful today there are more they’re smarter devices as well we already know how mobile devices are overtaking the PC combined with tablets as well when I talk about mobile I also include tablets I don’t just mean smartphones and then personal navigation devices are kind of a thing of the past now and more people will just go and install an app on it it’s kind of funny though how perceptions where you could say somebody would be willing to pay two hundred dollars for a dedicated gps app that’s all it does it just does gps and maps and location and yet when they see an app store a GP a navigation software that’s like 40 bucks they go 40 bucks that’s because angry birds is two bucks or three bucks you know so when they see 40 bucks for a software they just go bananas because they’re like this is this is too much but they forget that the device itself gives them already a lot of value what you’re paying for in a GPS ray often was more the data than the actual hardware and things like location-based advertisement using techniques like geo fencing for example are becoming more and more popular geo fencing is where you can actually identify a virtual area geographically and if somebody crosses that area they can trigger something in the device in a nap in platforms like Android and iOS actually do support geofencing so it’ll be on the purpose of this talk because there’s but all the techniques you’re learning here are the baseline for integrating this later so as a developer though what is it that you care about what is it you need to know about so you will need to know about your imagery of course so that we’re going to talk about like how to choose mapping controls what’s available out there with all the capabilities you’re gonna care about things like geocoding and routing as you can imagine geocoding and routing or not things that are going to run just on your phone itself unless you have like a giant database and it’s kind of possible like for example a lot of geospatial software now like navigation software did you get get from tom tom or garmin

on your Android or your iPhone or iOS device or even Nokia Maps now has their own like offline maps they can give you some kind of routing but it requires like a crapload of information to be downloaded to the phone before you can actually use those services properly geocoding is the same thing geocoding for those that don’t know and I’m going to be talking about this today to show you how you can do it geocoding is the process of taking an address in converting that into a latitude and longitude because once you have a map if you want to put a point on that map you want to make sure that the point is not on the map control itself it’s on the map so when you move the map around you zoom in you zoom out the point keeps saying exactly the same coordinates so latitudes and longitudes is basically what you’ll be swimming with when you deal with geospatial apps and geocoding allows you to take an address a location the name of a city a famous landmark and convert that to lat Long’s reverse geocoding is the reverse process where you already know where you are you have the lat/long I mean if I ask you right now what’s the lat/long where you’re sitting right now we have no idea i mean our phones can tell though so that means you can technically ask your phone and say hey where am i now and then the phone will be able to use reverse geocoding to tell you well you’re actually in this city at the intersection of this and that or the closest address is this so reverse geocoding is converting a lat long to in actual location humans can recognize spatial search is something that’s a little beyond this talk because it requires the database first the data and then after that doing the searches data services you’re going to need data somewhere maybe it’s your own data maybe the users will generate the data as they move around so if you think of a running app a running tracker well a running tracker the app generates its own data itself and then you’re going to store the data either locally or in the cloud so you’re going to have to deal with data and data services you’re gonna have to store it somewhere and I gotta type over there on the fast thing that’s not exactly what it was supposed to say but it’s more like global reach actually they’re supposed to say here so the global reach is you want to make sure that your app is also going to work across the globe you don’t want something that’s just going to be like us bound because especially now we have means of publishing apps in dozens and even hundreds of countries right away so while hundreds let’s just say 100 to 200 countries very easily so you want to make sure that all of these users are going to be able to use it location services also is is part of the developer story so I’m going to be talking about some of them today primarily the imagery side of things and the geocoding side of things there’s actually another session tomorrow and I’ll put a reference at the end that Wally McClure is doing on maps on iOS and Android and we topped to make sure that there’s not too much overlap between our two sessions there’s gonna be a little bit but most of it is actually going to be different coverage so you’ll be able to go see ass doggy is going to talk more about location services and different map controls and things like that now what were two key GIS players because there’s a lot of companies that are making a lot of money with this there’s a lot of key players that you have to deal with so if I ask you about mapping what’s the the first mapping company that comes to mind a lot of people will say well Google guess everybody uses google maps right that’s true Google Maps is by far the most popular mapping platform for consumers however for example if I were to ask in the enterprise in the enterprise you would actually find a lot more bing maps and in government you’re going to find a lot more ESRI azeri is actually the top GIS player in the world they have over thirty three percent market share in solutions for GIS for software for servers for cloud for information maps and data these guys are like the number one Nokia Maps has rebranded around here a lot of people water likewise Nokia Maps so important why do we even care about me this is just like a Windows Phone thing that’s because a lot of people are not aware of a few years ago nokia acquired this little company called navteq in navteq before Google entered the fray here a navteq and I forget the other one it was not tom tom is the one that was acquired by tom tom anyways teleatlas yeah so navteq and tele atlas were the two companies that basically owned virtually all geospatial data in a world for consumer access so every device you were using every GPS device got their data license either from navteq or from teleatlas it was a bit of a bidding war with stuff going along garmin was going to purchase them eventually things settled well and by the way google maps for years was using tele atlas data so they had a multi-year agreement to use tele atlas data then eventually Google broke off decided to manage their own data acquire their own data with their vast resources so Google became a player by not just being a technology consumer of data but also managing their own data

and then Bing Map so Google has their own now Bing Maps gets the their data from navteq which means now it’s Nokia so a lot of people think that the the Nokia Microsoft relationship is all about nokia going all in with Windows Phone but there’s also a reverse situation where Microsoft is all in with Nokia’s map technology so for those that wonder if Nokia is still going to be alive because Windows Phone only has a few percent market share I can assure you nokia is doing very well thank you very much because navteq is a huge moneymaker for them because it’s a massive platform that has a lot of data that generates a lot of revenue garmin all of their data comes from navteq and Nokia Maps TomTom their mentioned here because they’re the ones that ultimately acquired tele atlas but as a developer you’re not going to care too much about tomtom because they don’t really make their data available easily for developers well with one exception that’s where Apple gets most of their data Apple maps apple doesn’t create their own data themselves they basically license a bunch of technologies they acquired some companies as well for the core tech the core software but the core of their data comes from Tom Tom so when you use Apple maps using tomtom data now don’t go and think that tom tom is not good because of the wonderful success of Apple maps let’s just put it in mild terms it’s more like the implementation that Apple did and they’ve actually acknowledged it because the last thing they wanted was to put a stain on tom toms reputation with their data it’s actually the implementation that Apple did that’s what Tim Cook apologize for then doesn’t there’s mapquest good old mapquest you guys remember mapquest yeah they’re still around they’ve lived there more they’ve modernized they’ve got data as far as I know they get a lot of data if I remember correctly try to remember if it’s if they get it from Nokia Maps or tele atlas or tomtom can’t remember exactly but they also work with open Street as well open Street is an open source project so this this is basically crowdsourcing location data where people could contribute not just like open source is all about contributing code while open source crowdsourcing mapping is basically contributing location information so that they could build a network of maps and information around the world without necessarily having an expensive infrastructure and of course the quality is so so some places it’s great since the places it’s not but the beauty of it is that it’s free so as a developer that sometimes can be an interesting option because you know if it’s free it could be a good entry point especially if you will want to afford that some of the other mapping services so where does that leave us so that means even in a mobile application and don’t worry I’ve got plenty of demos coming into this you’re going to have to choose to put a map control in there so let me just help you to read this table here so this is showing some of the key map providers here you’ll notice TomTom is not here because they don’t provide controls Apple maps is here and then the four key platforms on mobile at our iOS Android Windows 8 and Windows Phone by Windows 8 we mean the tablet side of things we can see that there’s two colors that are used here so first of all who has what if something is green it’s considered to be the the expected platform it expected mapping platform on that mobile device so that’s why for example on iOS Google is just as home at Google’s feels just as home as it does on Android on as it does on iOS because Google was the main platform for the map kit for years it was the key app that people were using so using google and on an iOS device still feels normal of course Google Maps being Google technology feels right at home on Android it’s kind of a given on Windows Phone there you can kind of fake it sorry on Windows 8 you can kind of fake it because with win jsu could leverage some of the Ajax controls from google but then it would just be able to win j/s and it’s not a perfect implementation on Windows Phone there’s nothing native somebody has created like their own app to to put Google as an app on the phone but there’s no actual control you can use you would have to yourself create something custom and there’s no easy as DK that you can use bing maps of course very at home in a Microsoft world there are some old implementations of microsoft created there’s an old control from 2010 i think that microsoft created for iOS but it’s not been supported I’ve been upgraded there’s a open source project on codeplex on how to use Android Maps but it’s more of a JavaScript rapper or rather a native rapper around the JavaScript version and it’s also an old version so we can’t really say that iOS feels that big maps feels really at home on iOS and Android why is this important by the way because when you’re building a cross-platform mobile app you’re going to be in two kinds of scenarios if you’re building a consumer application the consumer app of course has to fit at home to feel at

home on the device so that’s where picking a mapping platform that users will expect and appreciate is very important so if they’re using map kit with Apple maps every day or google maps before or an Android then things like Google of course they’re going to feel more natural you want to make sure that you pick something that it’s going to feel at home on that device you’re gonna try I’m gonna try to shore a technology that people are gonna wonder like why am I seeing Bing on Android you know and then inversely if you’re creating and that’s where it’s important if you’re creating enterprise apps that’s where sometimes you’re gonna have the same pool of users especially with bring your own device where people some of them will use iOS some of them will use Android some of them will use Windows 8 Windows Phone so they can use anything that’s where you need to have a certain consistency where if you have one mapping platform at one place another mapping platform at another place then suddenly it’s going to feel weird because people might collaborate with each other one employee might talk to another employee and they’re using their own devices but they’re not getting similar results on their phones or their devices because one of them is using a geocoding from google and the other one is using a geocode or from bing you would assume of course that all geo coders work perfectly and they always return exactly the same thing but we all know of locations where Google works better in other locations where big maps works better and so on so that’s why depending if your consumer and if your enterprise and most of times I assume some of you will work on both it’s important that you can pick the right technology to go on your mobile platform Nokia Maps of course well okay Zuri first so ESRI is pretty much like a very good situation they support a lot of platform as you makes their money on the servers so when you look at the way that they support like a lot of different platforms yes they have a native SDK for iOS yes they have a native SDK for Android and they actually have a beta right now for windows 8 so you can build Windows Store WinRT apps and then finally Windows Phone they also have support for that as well they have a few more they have adobe flex flash is JavaScript control so they have a lot of different controls that are supported and esri unfortunately though there’s two problems here first of all it’s not really free because it’s a really premium offering so usually it’s mostly large corporations governments that will use them there’s some stuff you can use for free and i have a few links for that at the end but the other problem and that’s where i have my second little thing there xbee means that you have xamarin bindings for those because of course if you’re a salmon developer you care about using a library that you can natively important your salmon projects so you can’t just use any native library very easily yeah sure you could create your own bindings but that’s that’s a lot of work especially if you want bindings it will feel natural that are not just a pure compatibility layer so I personally prefer to use official bindings that are provided by a company rather than trying to create my own so sadly ESRI doesn’t have anything there I know they’re thinking about it esri is actually an infragistics partner we’re talking to them and I can tell you that it’s it’s something they’re considering and they’re looking at it so if you see as recent orioles that would work well for you let them know if they get more pressure from the market it’s something that might come Nokia Maps is purely a Windows Phone thing Apple maps is purely an iOS thing so there’s bindings for that as well open Street is that’s where it’s a little hard because open Street is purely a web technology they don’t really have controls for it so for example I’d infragistics we have advanced controls that we make for silverlight WPF and jquery and we have a map control we’re using our controls you can actually easily integrate them on in your apps for WPF silverlight html5 and they do support street we don’t have the mobile version yet that’s another thing i can tell you we’re working on it’s on my list but today if you want to be open straight on iOS mapquest actually has an sdk for it and since mapquest supports Open Street then technically you could use both mapquest and open Street on iOS and Android so where does that leave us so that leaves us where first of all the easy solutions where we don’t have to jump through a lot of Hoops to code things it leaves us with google maps and with apple maps on android it’s a no-brainer it’s going to be Google on Apple on iOS well you can go either way you can go Google or you can do android or you can do Apple so in this session i’m actually going to focus more on the Google SDK and whereas the map kit from Apple maps if you want to know more about this one tomorrow Wally mcclure will actually cover it in this session so you get to see both of them so in reaching that decision though like why why would you use Apple maps on the iOS side of things of course why would you use Apple maps vs google maps in terms of the sdk google maps used to be the

technology on iOS but of course it was the map kit the map kit is an api created by Apple the data came from google now they replaced the data source with Apple maps which is a combination of things from tomtom and others but the mat kit itself is still the same API so that’s why if you were using an application built with a map kit before on iOS it’s still going to work with iOS 6 and up that is now based on Apple maps so if we look at both sides of things we got google maps and we’ve got apple maps there’s pros and cons on both sides it’s not all good for google and all bad for apple trust me and sometimes some scenarios you will reach your conclusion conclusion that it’s better to use google on app on iOS other times you’ll reach a conclusion that you better use apple there’s a link at the bottom there by the way there’s a great article because this this this company is created like some advance map based applications for iOS and they’ve shared a lot of their findings in their studies with both of the technologies so if you want to read the article I’ve put the link at the bottom there so first of all if we look at the google side of things well one of the pro sides of course is it’s good old data google maps is very very mature set of data the maps are matured a very extensive they have better hybrid and satellite imagery they do have 3d buildings that are supported and there are some scenarios like for example on the Apple the map side of things the data is good but it’s apples implementation that’s not mature if you look at how they create hybrid maps for example Google uses semi-transparent roads on top of the maps whereas on Apple maps the roads are actually opaque so sometimes it makes it hard to see the actual imagery under those maps so it’s a quality issue you can rotate and tilt the map very easily there’s a whole camera system but there’s no tile overlays so let’s say you want to create your own on Google side let’s see you want to create your own tile set of data so if you have a custom tile set you want to add on top of it to create your own layer you actually can’t do it on Apple but you can’t on google but you actually can on Apple maps on Google you could put an image at a specific location and it’s going to stay there but you can’t create an actual quad key of tiles and overlay it directly on the in the app you can have you have a lot of any features is a location search api that’s open everything is also free here there’s no quotas since Apple only makes it available to iOS devices and developers then they’re not putting any quotas on how many geocodes you can make how many calls to the maps whereas on google maps there are some quarters and i have a slide about those after my demos you have some advanced api’s you can use for geocoding directions places it’s going to be very consistent between iOS and Android as well or as if you go with Apple maps you can have a different experience on both sides the quarters of course can make things a little more expensive and one of the problems with using google maps is because it’s not part of the native is decay it’s actually going to increase your app sighs so it’s been observed that if you integrate Apple Google Maps SDK in your iOS project you’re probably going to end up with a nap bundle that’s going to be anywhere from two to six megabytes larger so Google is working on that it’s something but of course on Apple maps is not a problem because it’s part of the base is decay so there’s no increase really other than using a normal control so the data is good on one side but the SDK is better on the other the map kit is actually very mature it’s been there since iOS v1 so the map kit itself is it works very well people know how I would work there’s a lot of resources as well out there so there’s a bigger community of people that are familiar with it whereas the Google SDK it’s fairly new it just came out like first beta was in December and then it’s been available since februari I think and then there’s been a few updates but that’s the cool thing though his Apple can actually Rev there’s a lot for a google can Rev there’s a lot faster whereas Apple they’re kind of limited to updating the map kit whenever they drop a new version of iOS so it’s like once a year only whereas Google I think they’ve already done six updates on it since it came out so you can expect probably google to catch up on the sdk quality and i can assure you it’s a lot easier to build a better as DK than to fix issues with the data source itself and right now Google Apple maps that’s where a lot of their issues are as with the quality of their technology and in terms of the data in the back end so if we look at a simple solution design like this imagine a you’re supporting iOS Android and Windows Phone then you could standardize around Google Maps as your provider for iOS and Android and then for Windows Phone you could use something like Nokia and bing maps but the location data would all be the same so in this demo here i’m going to show you iOS android with google maps both from the imagery but also a geocoding point of view so

i’m going to show you a simple demo show you how it works in so i have an ipad running here i’m running the app natively because the whole integration between a mac in windows box right now requires network and the hotel network is just so not compatible with this infrastructure right now so i basically have the app already deployed on this and i’ll show you the code after that that I’ve built I’ve actually built it all in with visual studio and then deployed it via a Mac but for this part and here I’m skipping the map the mac to show you the app natively so if i go to my g is here so again this is dependent on the network so what I’m using here is an app that has the Google Maps SDK that is used so the maps that you see are actually google maps and then it’s a very simple application there’s nothing on the other two tabs at the bottom it’s more actually you can’t see them on the display here but it’s actually a tabbed application but there’s only one tab that has data and sadly my might I have a text box at the top but you can’t see it let me see if I rotate well it’s just a text box a text field and I keep losing my connection here there we go alright so what I have here is I can switch between map views so I could go a hybrid or sorry hybrid and then or satellite actually they’re inverted here so this is hi this is satellite and this is hybrid hybrid actually has the labels on it so now I’ll just zoom out to North America like this and then here at the top I’m just going to do a an entry you can’t see it but I’m just going to type in a dress that’s my old office in Manhattan was actually at 291 Broadway manhattan new york all right and then but i have a button here at the top and i’m going to click geocode and when i click geocode it actually calls a geocoding service at Google and then it puts a nice little pin on my map so you can see it here I’m going to switch back to Rhode view and then I can go and zoom in and because it’s google maps it’s gorgeous you’ll see now it looks nice but then look at the google maps control when you zoom in what happens boom you go full 3d and then the cool thing is it actually supports tilt so i can use two fingers to actually tilt my map and then i can even rotate my map if i want so it looks a little jittery on screen there but trust me on my iPad it’s like super butter smooth and I can still tap my push pin to see the custom pin that I’ve inserted okay so there’s two key things here does the map control itself and then there’s the integration with the Geo coder to make the call so I have the same thing running on Android so let me first show you how this is built on iOS individual studio and then we can explore how to do it on Android so for this I actually use visual studio so there’s two things here first there’s integrating the Google Maps SDK on iOS and the beauty is that Google has provided one xamarin has some bindings for it I don’t know who created the bindings is it google maps or is it xamarin but the bindings were great and you can actually just add it from the component store so if you from xamarin studio or from Visual Studio you can just say i want to add new component browse around the component store and then you can add a google sdk from there the first thing that I wanted to do though is it’s all about code sharing right so what code can I really share here so the map control itself is going to be kind of proprietary to each platform because there’s an sdk for android for google maps on android this is an SDK for iOS and then on Windows Phone of course i would use something probably like Bing Maps or the new Nokia Maps control that’s on Windows Phone 8 but the key thing that I wanted to reuse here was my geocoding call because for the Geo coder actually have to call a rest service at Google and then with that rest service I simply want to call it asynchronously and then whenever I get my results I want to raise an event and all that code that’s the code i would like to reuse so how do i do this so i have this nice little piece of code and what I did first is just truly test the power of the cross platform thing I built the whole thing in Windows Phone first so since Windows Phone is my I would say the platform I’m most comfortable with that’s simply what I did I created it and then I created this class so here’s how it works so first of all it uses JSON json.net library from Newton soft you guys know about this one who doesn’t know about this library okay it’s really awesome you should definitely try it and I’ll show you how it works and there’s also another cool trick on how to integrate the estimate to parse you JSON calls so I use this in my project this is also a library that

available from this xamarin store so that means you can easily add it so for the windows phone 8 project I just want to be a new get I added json.net and for Android and iOS I simply did add new component from the salmon store and it automatically got this library so I created my own namespace for it because that’s the same namespace I’m going to use the other two projects so it’s my classes reuse this active nicki is the google maps and then I’ve got this class call the google maps geocoded that i created so the key components here that we first have to focus on is how to geocode something so the first thing is the results you’re going to get so let’s see it the order in which you would be doing things the first thing you need to know is what is the API that you’re calling this is the JSON call the rest call so it’s going to be mapped google api is calm / map / AP is gioco json address equals something and then sensor equals true this is simply a statement that you have to put in either false or true depending on if you’re making the call from a device that has a location sensor or not i think it’s an information thing I haven’t really seen it fail or something but so what I’m going to do is I’m just going to copy this beautiful little string here okay i’m going to copy this so what would you do here you would go and let’s open a browser window and then i’m going to paste this in here but i’m going to go edit it to put something a little more meaningful so address is going to be like i’m just going to put something simple for now I’m just going to put Manhattan New York of course when you do geocoding you can either go very general like a country or a state or you can go more precise like city or an actual address so the more information you give the more accurate your geocoding call is going to be now of course this is JSON I can’t really parse JSON with my naked eyes so what I’m going to do is just temporarily I’m just going to say XML on this okay i’m going to copy this string so i keep it and then if i run this this is what i get so this is what my response would look like so i made a call to the google geo coder manhattan ork okay and then down here this is the information I’m interested in the geometry lat it latitude and longitude in the location right here and then location type is approximate because of course I’m talking strictly about the city center of Manhattan it’s not a very precise location it could be anywhere in manhattan I’m interested in okay so that’s the key part i’m interested in now how do you parse this stuff you know yourself without any problem so this is where it gets a lot of fun who’s familiar with JSON to c-sharp a few of you okay the others are going to love this so you just go to I can never be remembered is JSON to c sharp like this yeah there you go so it’s basically JSON to c-sharp com I should be able to remember this is pretty easy what this does is if you need to deserialize json classes and put them into c sharp classes that you can use in your object model this beautiful little website takes any JSON input whether it’s the actual JSON code or a URL that returns JSON data and then it will automatically give you the c-sharp classes that you need so what I’m going to do is paste this in here of course now I don’t want XML I want JSON so I’m just going to change this these are the two formats that can be returned it doesn’t matter what data you put in because whether it’s Manhattan or Microsoft or hyatt or whatever the format is still going to be the same so it’s parsing just the structure like this and i say generate and then boom I get nice classes so if you want to see what they look like you click copy and then you see them in a nice way right here that you can copy paste so you see address component north east south west bounds location northeast to southwest to viewport geometry and that’s your that’s the public class result and then the root object the root object you’ll be able to rename to whatever you want you can’t rename the other ones though unless of course you add attributes to change the way the serialization is going to work so you just copy paste this you just copy it and then right here in my code that’s what I have at the top of idea quarter class right here so you see I’ve got my address component location north east south west viewport geometry result and then Jim fco coder response so i just had to drop this in here now how do i make the actual json call it’s dead simple so my geocode method that’s the main method the geocode method right here that’s the key one and you’re gonna call in this class okay it’s getting loud no thanks and then so that’s my string right here and I’m going to call the address is the one from the text field that I’ve basically the one that I’m receiving here and then i create a

new web client and then i make an async call in this case i can’t really do a I wanted to initially to use the async task but since it’s not fully supported yet in xamarin and it’s also not supporter of the windows phone 8 you can do a sink but you can’t do a sink tasks so for this one all i did is i simply create a new event where I say when the download string is completed you’re simply going to fire off this handler right here and then I simply call download string async new uri with my geocoding URL all right you would normally handle this stuff this is to do if you’ve seen the handsome let’s call talk you understand what I mean and then once i want to receive my results this is my geocoding work completed I check to make sure that I’m not null and then the beauty of json.net is right here i’ll just have to do gmaps geocode or response that’s the route object that i got i renamed it the gmaps chukoti response so i simply say respond sickle geez json convert deserialize object and then I cast this into a gmaps geocoder response and i simply parse the e dot results in one line of code I’ve actually taken my JSON response and then I’ve deserialized it into a nice object structure that I did not even have to type myself because JSON to c-sharp gave it to me so the combination of json.net in json to c sharp and you can use this by the way for any json call you make so this is not just for geo coding or stuff like that anytime you have to call a rest service the richards json data you can use this it’s wonderful and then then i can go and dig around my response i check there’s a that is there I can see if it’s okay that’s an actual string that’s in the response and then I can check to see my results if the count is greater than zero because of course this is a geocoding API so if you say for example I want you to geocode Springfield you’re going to get quite a few results because there’s more than one location in the u.s. it’s called Springfield I think virtually every state has one so this is getting a little loud I’m sorry so every every state has a Springfield that’s why the Simpsons are actually at Springfield because you can never know exactly where it is in the US and for years they’ve kept us hanging we still don’t know I think that’d be the biggest reveal for the finale to learn which Springfield it is and then what I do is I simply go and check my geometry in there to make sure it’s not null and then all I do here is I simply raise an event so I’m not going to show you the eventing class it’s a standard C sharp code my class since I couldn’t use the async in order to not put any platform specific code in there my class when it’s done geocoding it raises an event so that any client application can then register for that event to receive the geocoding results so what I did first is I built the windows phone version of this and the windows phone version is actually quite simple I did not even bother putting a map in there because the point of this session was not to show you how to build Windows Phone apps I was basically just putting a simple thing where I have a button when eventually the designer shows up okay so I have a nice little Windows Phone project here where I put in a text I pre-populated here I gioco then I get my results down here okay so it’s as simple as that and in terms of the implementation for this all I do is I simply add my active link she is Google Maps namespace geo maps google map co coder and then i initialize my geo coder i register an event for it and I say when geocoding is completed I want to register this event right here go to Google Maps geocoding completed and then when Google Maps geocoding is completed I simply go and extract the location out of there for this I actually take the first result I assume that if I got multiple results in my collection of geocoding basically entries I assume the first one should be more precise normally what you would do is you can provide what we call a disambiguation box so where if you get more than one result what you can do is simply pop the results for the user and say did you mean one of those locations and then they can look at the various results and say oh yeah that’s the one I need they click it and then that’s the one you use because you have a latitude and longitude for all of them okay so I show my results in the text string so just to show you what it looks like on Windows Phone i’m just going to debug a new instance on windows phone emulator here so it’s going to deploy launching task host failed and no white failed sorry oh there we go oh because it’s trying to launch some o because it’s trying to debug on the iphone here that’s why anyways i’m just going to launch the version that i have here it’s right here mobile GIS the windows phone 8 i call it geocode the event pops and

then boom I get my lat long back so i know my service works okay so that’s the beauty of it I built it with net the visual studio I’m all fine now I want to use this in iOS so I’m going to kill the windows phone emulator here and all right now let’s close this on iOS in terms of building the UI I’m not really going to show you how the UI was built I basically built the whole UI programmatically in this one so I’m going to close this zamel here what I did is right here I linked in my iOS project to the exact same file so i created the file first in the windows mobile the Windows Phone project then I remove that file from the project I moved it to a mobile GIS that core folder which is common in the same parent folder as the mobile GIS the windows phone and mobile GIS iOS and not android and okay it’s terminate whatever this is yes terminate a remote session whatever that was and then I simply linked it in both projects and automatically it works so this code simply added it to my iOS project didn’t have to change anything and then in iOS so first of all I’ve got my app delegate right here so you’ll notice I’m in my components i’m using google maps and json.net i’m actually not doing anything with salmon not mobile right now so it’s not really needed and then it shows up in my references here okay and then in my app delegate right here so I’ve got the Maps API key this is actually a key for the maps control itself because to use the map control with Google you actually I have going to have to get a key so for this you go to the Google console the Google API is console on the web and i have a link in the in the deck by the way and then what you do is you create a new project once you create your project you have to shape to say which services you’re going to use inside of that project so right now the stuff I’ve enabled are things like google maps for android google maps api v3 coordinate geolocation that’s the one you need to call the Geo coder Google Maps SDK for iOS you need that and then a google play android developer api so this is my one project and then i have to create a bunch of cheese for it so in my api access right here you first of all you have to create a key so you say create a new iOS key and then it’s simply going to ask you for your app bundle so your your your bundle identifier so for example a calm that infragistics dot my G is ok so you put it in here so this way it knows when the bundle calls it it knows that it’s actually that same application that’s using that key and then it generates a key for you and then once i get that key right here i go and add it as my maps api key so no pictures please I better change it afterwards and then I create I have a map services that is right here that is an object where I say provide API key so at this point every time I use a map control the map services knows which key to use so that I’m allowed to actually pull imagery so if you put the map the map view control directly in your view and then you launch it it runs but you see no tiles there’s no imagery you have a key problem so either the key has not been said or you have a wrong key or something like that go check your key make sure the proper services are enabled on it okay then I have a map view controller so this is the same code you’ve seen I have a map view controller that the code is actually not too complicated so I have my map view my toolbar my text field segment in control to switch between views same code here I simply create a new google map co coder and i say google maps that geocoding completed equals this event handler so actually that code has it even right at myself i was so lazy i went i copy pasted the one from Windows Phone and I put it directly in this one here it works no problem then all I had to do was create a new geo coder right here my handler is down here google maps geocoding completed and then the same thing i extract my location again same code and then on the map view i simply say animate to location then you have to create a location coordinate to the object that’s part of the iOS sdk and you seem pleased in the lap and the long for both and then i create a marker for this one so first I position the map on it then i create a marker and my marker is what’s going to show up so i can tap on it directly on the map so i create a new marker options the position is my lat long the title is custom pin the snippet let’s basically the text that goes inside of that pop up you can put whatever you want in there in this case i just went and I asked for the the full formatted address that I got back from the Geo coder and that’s what I’m

putting here and then on my map I simply add a marker to it in terms of the initialization of the map it’s actually not too complicated itself so there’s a bunch of UI code here because i’m not using the interface builder with this i built the whole thing in visual studio so i could not use interface builder so there’s no zip file there’s no storyboard file it’s all built in a few controller itself so that’s my tool bar code that’s my toolbar buttons with my geo coder right here and my geo coders simply calls geocode button click right here and then that’s my google maps control so to initialize the google map control all I did is I first create a a new camera so imagine that the Google Maps control is in 3d and you have a surface and you have a camera looking at it and you can actually tilt down tilt up and then you can rotate the camera as well to see the view so you create that camera object and then you say from camera in this case i centered it in the center of the United States that’s the actual coordinates of the center geo center of the United States you can google it if you’re looking for it zoom for is because you can have zoom level zoom one is the widest view for the entire Earth zoom 16 or 18 is going to go all the way down not all areas support that level of zoom so don’t set like 18 or 17 try to add exception handling for it because you might ask a zoom level that’s not available in either it’s not going to be any map data some controls can throw errors then i create a map view from the camera and my set my frame based on the balance of my UI i make sure that it’s resizable i also enable my location enabled because it’s got automatic gonna put a little blue dot on the map at your location you can do more advanced work and Wally is actually going to cover this in this session tomorrow to use more advanced local location services but at the very least the map control you can just say my location enabled it goes true and it’s automatically going to Center on not century but it’s going to put a blue dot at your location and then I finally add my map view to as a sub view of my main view controller then finally here what I have is segmented buttons and on my segmented display if I change the value it’s simply a matter of saying map types equals satellite map map type equal hybrid on this one so 012 I simply check to see which of my three segments buttons and I can just go and change it directly on the map view for the Android version because I’m running out of time here I want to show it to you besides you’ll get the code you’ll be able to play with it for the Android version the integration is is if you would think it would be simpler but it was actually harder it was harder because first of all there’s a new API that Google is published so most of the xamarin documentation on maps is around the google android api v1 sadly that API has been deprecated in march so you are no longer able to generate new keys for that api you have to use the Google Maps Android API v2 but the problem is that API actually cut requires google play services to be on the device it’s that those services that are available for developers so that they can easily integrate with google maps with google+ and things like that and for the users on their device that’s what provides a lot of the auto updates that are done on apps the problem with though is that Google Play services can’t run an emulator there are some hacks people of published but it’s it requires pirating software and running some weird stuff and I don’t believe in piracy or hacks so that means that to do development on the android sdk for google maps you need a physical device otherwise your map is not going to work you’re going to try to run it an emulator and it’s going to say Google Google Play services are missing okay so for this one here what I did is instead of building a brand new app xamarin is not updated their documentation but they have provided some an sdk sample for the google maps v2 API so you can actually find that directly via their documentation when you go into maps and location I took that sample and I just tweaked it a little bit to support my geocoding so I use the same map infrastructure in there the key is actually going to be a little bit of a problem as well because instead of simply getting an API key that you put in here in order to generate that key you need to have your sha-1 fingerprint which is attached to your either your developer account as a debugger or to the actual release version so typically each app is going to have a different key store a cheaper per app and let me just show you where to find this so in order to get this what you would have to do is to go into your so C and then go down into users then that’s my user right here appdata local and then you go into

Cameron mono for android and then you get your debug keystore ok and then the way you find out about this is when you go to that Google console API console if you try to create a new android key it’s going to say I need your sha-1 fingerprint in here so to generate this you have to run key key tool dash dash dash keystore blah blah blah with my store key store in this case it’s debug keystore so in debug time you can just use your debug fingerprint but at release time when you create a release version release build of your app then you would use that key store instead so that each app would get their own signature otherwise you’re all going to go against the same quota so make sure that you use one per app so if I come here I’m just going to copy that string right here i’m going to say windows run command okay go up and then i’m going to move down to that folder right here and then it was called sha-1 fingerprint bat so sha-1 fingerprint I’m going to run it then it’s going to ask me for my key password you could hard code the password and go in there if you want the default password is android enter and then this is the string you get back so then what you do is you use this wonderful marque tool and a console and you want the sha-1 fingerprint and then you press ENTER to copy it don’t try to right-click and won’t work you have to press ENTER and then this is what you’re going to paste in here to generate your android key and then once your android key has been generated you get your key for android apps right here so that’s the key that you will copy and inside of your android project in this case I uses android studio for this one you’re going to come to your project properties under the androidmanifest.xml and then down here this is where you can insert that key where it says android labeled and then metadata Android named come the Google Android Maps v2 API key this is where you come and paste that value in your project once you’ve done this now your application can safely use the Google sdk for maps the other thing though is that sample and that’s where it’s a good starting point for you guys to learn it is that xamarin sample also comes with Google Play services because since Google Play services is part of the dependencies of your project you need to add it as a reference unfortunately Google xamarin is not allowed to create to reshape that SDK and to create bindings for it so what they’ve done is they’ve created this project right here in this project will actually create the binding dynamically at runtime for this but you’re gonna have to first copy paste a whole folder structure from your google sdk into a subfolder of that project right here and they have instructions for it in a sample so i’m not going to be able to reproduce the whole thing here so other than that what i have is a sample map activity and it’s basically the exact same code so I’ve got my active energy is google maps right here i have a link to that file you can see here it’s an actual link and then what I do here this is it is you’re just like artifacts from the sample that i’m not using I set up a geocoding button in there and then this actually uses fragments so the new map the v2 API actually use map fragments the map fragments are basically two two fragments what the map view is two views on Android so you can learn more about fragments over here but you don’t have to worry too much about it and then what I do here is I set up my geocoding button and it’s the exact same cojio code what I do is first find by view for to get my button my edit address and then when it’s clicked I simply called GC mass geocode with the address text field to get my results back it’s going to be the same structure here the same handler gioco Google Maps geocoding completed I make sure my response is not know I extract the location again and then i create a new position which is based on a new lat long and then to move my camera to the new location i simply create a new camera update factor add this new lat long position and then here’s where it’s really important because since most platforms including Android are not thread-safe if I try to just run this by animating the map because that handler is running on a separate thread it’s going to fail the call is going to be made and it’s never going to come back so when you try to step through it it’s going to go and then it won’t move so what you have yeah I have to use actually have to use is run on UI thread which is kind of the equivalent of dispatch on.net and then you simply call map that animate camera to this you can either do a move camera

which will jump directly to that one or you can do a nice animate camera where if you have a good connection the tiles are actually going to refresh fast enough to actually see the whole animation but otherwise when you run it on a device especially with this hotel connection you’ll see that you don’t see that then i create a new marker options i set the position set the title set this snippet again to the formatted address and then again with run on UI thread I add the marker to my map all right so to see the final result on this so I’m just going to run the final app right here so is it gonna focus little it’s kind of hard to see there’s a few buttons here at the top one of them is called show map activity this UI is not going to win design awards that can tell you that it’s very basic and I’m gonna go and geocode my same address 291 Broadway whoops man manhattan new york all right click done on this and then oh you can actually see the buttons now that’s cool and then I’m going to say geocode address and then it’s going to jump of course the maps didn’t have time to refresh because they’re not cash or anything but now i’m in new york and i can see my little push pin actually am i assume that all the way in yeah i think i’m at the maximum zoom level right now that’s been configured because you can configure the the maximum zoom level but i can tap on my little push pin right here to see it on screen alright so that’s how the exact same code that i was using for geocoding has been used on Windows Phone on iOS on Android in this case it was just geocoding code but if you’re building a GIS application you’re probably going to have some routing code and you’re going to have a thick infrastructure also to get your data for example from the cloud or maybe from a database or things like that all of that code can be reused after that learning how to interact with a map display a map shows some routes pushpins areas and things like that that’s the easy stuff it’s all just UI code and you get a nice native experience so the Google Maps SDK for iOS to get it you go to that page there the because on this diamond store they have a little getting started section but it doesn’t really give you a lot of stuff so you might you’re going to have to go to the official documentation and that’s where all the code samples are actually using Objective C so I’ve always said that even if those xamarin gives us like really amazing tools to use c sharp if you’re going to use a platform and build for it sooner or later you’re going to have to at least be able to read the language of that platform so if you don’t know Objective C at least try to learn enough to understand how it works because you will have to interpret how objective c works and then figure out how to write it in c-sharp sometimes it gives you different views for normal satellite hybrid topographic you can scroll pan zoom rotate tilt you can programmatically control the map camera have already demonstrated this you can add markers but you can also put a little info windows polylines overlays just images though not entire tile overlays just image overlays at a location and you’ve got different map events like camera changed market a marker it’s not market tap its marker tap and it does require an API key so this is where you get your key for this beyond this in terms of geospatial services if you look at the key ones like Open Street Google Maps microsoft in ESRI for example opens if we look at Google first all the limits they give you are considered to be courtesy limits okay so unless you actually pay them anything don’t take for granted what you will get from them if your app becomes very popular chances are you’re going to have to start paying Google some money for that API use but if your app is very popular I hope you know how to monetize it so that you’ll be able to afford those fees and still keep some money out so for example the Google Maps API you can do about 25,000 requests per day remember this is for the key itself not per user then geocoding API is 25,000 2500 per day the places Search API is about a hundred thousand per day and it you can do no more than one request per second per user so don’t go writing a script that’s going to try to geocode an entire database because they’re going to pick it up on this and then they can start like shutting you down and then Bing Maps actually has some free services a lot of people think big maps is only a paid service but they actually support free use on mobile so if you create a mobile key on their big maps portal you can actually get up to 50,000 transactions per day for mobile and then you can get you can do geocoding because they have a batch geocoder where you can send a whole bunch of of entries online so you can do five batches of 50 geocoding spur day if you want to geocode your data if you’re doing an evaluation it’s about ten ten thousand

transactions put for 30 days and in any case you are not allowed to create a turn by turn navigation app so that means you’re not allowed to use the maps and the route while at the same time tracking where the user is going to update the map so you’re not supposed to do this that’s technically you can do it but legally you can’t azeri is all paid stuff but they do have a lot of free base maps that are great so you can take a look at that and I got some links at the end in an open street again your policy is only one request per second it has to be a single thread no single machine no scripts no bulk geocoding you need to give attribution to open Street in your app and but there is a no-limit version that is run by mapquest which is the same API it’s called the nominative geo coder so that was the demo I showed some libraries that are referenced I covered this there’s something I removed I was going to use some of our stuff like to show grids a grid of result but I decided to skip that for the demo because i knew i was going to run out of time but make sure you come and check me out at my booth i got some information about nucleus it’s basically the best iOS controls for developers we have read with tons of features we these are just like some of the things you can create with our grid it could be a layout view we have charts more than anyone out there so come and check out our awesome charts as well I’m going to skip through this and finally so you know when it gets started developers at google.com / maps is for Google Maps azeri is right there don’t forget Windows Phone and bing maps on the windows side of things and then you can get access to additional libraries from us over there tomorrow while I mcclure at one-thirty is going to do a session on iOS and Android so he’s going to cover the map kit the Apple maps side of things and is going to cover more on location services and he’s also going to have some content on Android as well so we talked to make sure that you would get value out of both sessions and this is a bunch of reference things that you can get when you download the slides so JSON to c-sharp a bunch of links about Google Maps open Street bang maps and esri and that’s it so what you need to remember for now is active in technet that’s my blog is there an evaluation form format here is something I don’t know if there is no really they don’t want to know I’d love to know so you know what ping me on Twitter let me know how you love to session so at active Nick on Twitter and let me know if the session was valuable for you i’ll be posting the slides and the demos on my blog so you can get started and play with it let me know what you build that would love to hear more about your experiences with maps and that’s about it for me so thank you very much I’ll be outside if you want to ask me some questions I’ll let you go on a break for now and I wish you a great rest of the show thanks guys