ArcGIS Runtime SDK for .NET: Building Apps

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome to this afternoon's session about the ArcGIS runtime SDK pinettes building apps my name is Mike Rance command one of the product engineers on the team that builds the arcgis runtime sdk feed on this and I'm joined by Morton Nielsen here as well the lead dev for the the SDK that we called the dotnet SDK the session the soft minute is all about specifically about the arcgis runtime sdk for dotnet you've heard a lot of the conference already this year about arcgis runtime 100 the new architecture that we've employed and re-engineered in the ArcGIS room from 100 and the session structure this year at the dev summit mirrors that architecture so we've got a series of sessions specifically about the SDKs and then we've got many more sessions about functionality that cuts across all of the ArcGIS runtime SDKs so a big part of that we engineering effort was to implement support for maps and layers and routing and analysis in the ArcGIS runtime core and that means all of those features are available in all of the ArcGIS runtime SDKs so the session this afternoon we'll take a look at an overview of what the arcgis runtime sdk pedasi dot that is a look at the architecture as well how we build the dotnet sdk how it's exposed to you in a public API we'll think about working with the SDK and then take a look at how you work with the SDK highlighting some of the changes perhaps between the 10 to X generation and the 100 series I want to take a look at local server which is a component of the arch s from Tom SDK for net and some of the changes there as well in terms of how you work with the local server let me take a look at xamarin as well as a specific new feature a highlight in the new version of the ArcGIS run pond SDK p.net and some online resources and a roadmap for the future as well so neighbor view them the ideas are on table SDK per dotnet is all about building native apps native apps for Windows native apps for Android to native apps iOS apps that run on your device so you build the app you're in working with our ArcGIS run carnet API I talked about the new architecture of the archers on time 100 and it really focuses on that arcgis runtime core that's partners available to you through the dotnet api all of that functionality you make cools down into the device great support for native capabilities of the platform whether you're working on windows android or iOS but also the arcgis runtime provides great support and integration with online workforce as well so more than identity management working with online services working with your web GIS whether that's in arcgis online or within your enterprise as well so more specifically about the ArcGIS longtime sdk for dotnet and what we consider to be an sdk i've talked about the arcgis longtime core The Archers runtime dotnet API the SDK also comprises a toolkit as well as so components and utilities that we make available to you as an open-source toolkit on github that's very much part of the SDK it's a supported part of the SDK but we open source the code to you on github and to allow you to work with it in a ritual way to customize it for your needs the SDK also comprises an API reference as well so we spend time a lot of time writing triple slash comments in our code that gets compiled to API reference we host that obviously it's available to you within Visual Studio experience in the object browser but also we host that online in our developers website that you can browse and find out information about how the each API type is specifically works as well as that API reference we also provide guide documentation so that's conceptual documentation about fundamental patterns and practices layer types how to work with maps how to release and deploy your app how to license your app so lots of great information in there samples and demos as well we've got github repos for samples that specifically show how to use the API types and they're very focused way how to work with a map how to open a map for a portal how to save a map but also demo apps as well so more fully features larger applications that show how to build apps with the API in different kinds of work Fleshman might be routing or it might be editing or 3d by the integration as well so the SDK comes with ID integration integrates into Visual Studio that's available to you whether you're using nougat as a way to reference your reference the API well maybe as a Visual Studio extension that you install downloaded from the arcgis developer's website that includes a series of project templates to help you get started quickly with your applications and then finally the SDK includes the community so that's all of you folk plus us as well interacting the Indian S at the conferences exchanging in discussions really kind of building the community and helping you out in gear that in the forms so what's the artist runtime SD cave the dotnet version 100 then well it grew out of the 10 to X series of arches long time SDKs so there was a real engineering effort that went on at that art just long time core level to read more than some of that bonk championing expose it in a way that was consistent across all of the artists from Thomas decays what we're trying to do is minimize the amount of code each API had to write specifically to call into those core functions and that one of the great benefits of that is that that functionality is implemented in the corn then it's exposed in all of the runtime SDKs consistently and together at the same time and also much quicker as well so we released 100 since they would be working on new features and they're coming online really quickly we've got an update coming out or a couple of updates coming out this year that you'll see additional features rolling out much faster than we could have done previously with the 10 to X series so the ArcGIS runtime SDK p.net version 100 includes a number of api's to building native apps yet the windows presentation foundation Universal Windows platform apps are uwp API for building the new Windows 10 Universal apps also ap is for xamarin Android xamarin iOS and then also xamarin forms that we're supporting xamarin forms on top of Android iOS and uwp so it's a great really great SDK for you to work with we've moved beyond the the Windows realm onto Android and iOS said it's the best cross-platform SDK that we have of course I'd say that and one of the great one of the great benefits about being a cross platform SDK is but still gives you the ability to use the native UI framework on those devices so taking full advantage of being a native app on Android iOS or Windows and then also I talked about xamarin forms being and there's actually an abstraction there that allows you to share more of your UI logic as well as your business logic across those platforms and I hand over to Morton he's going to talk a bit about the architecture right I just wanted how many here have not heard about Zemin well our goal that's really really quick it came out of mono it now Microsoft bought salmon last year it allows you to use our net code share code against the native api's pretty much most of its here already touched a little but about it that most of your business logic can be shared because you have all the standard doneita libraries available to you control already know this I'm just going to move on however and if you guys saw this thing we chose to do 2017 launched couple days ago and they said if you download which is through 2017 before March 14th you get 60 days free access to Zaman University really really great resource for online training lots of lots of in-depth classes about how to use Ameren actually pretty expensive to get access to and really all you have to do is just hit the download button you need to install it actually and you plug this putter that offer pops up and you can sign up for it really great stay when job but you have to do it before March 14th so just a little tip there how many here are not really know what the universe' platform is everyone has already heard about Microsoft's new Windows platform that's amazing amazing I'm really glad but again just to recap it's this new one call it runs everywhere it runs on my Windows PC I have a little cheap tablet I have a phone there's a hollow lamp or have little IOT device here the Windows runs on all of them and the same core and that's actually the same binary you built on Windows Universal we're running all these devices and if new devices comes out in the future that we don't know about as a good chance at the runtime will run on there too so we don't have to do anything so here's example of some of those devices and what they look like Raspberry Pi next play with those Xbox and run on Xbox but I kinda want to go a little bit in the depth of how we build this because I think it also tells a good story about how you can build your apps on top of it of course you have your operating system on the store for different platform those windows that the windows runtime inside windows for the newer universal there's iOS and Android of course and on top of that we have this C++ core that Michael was talking about this is where all the meat is where all the fun is and we build on top of that we actually write one common set of net code that calls into this so the yellow and blue code is completely shared from our point of view the C++ team sharing their code as well for cross-platform C++ code so it is literally the same code all the way through there's hardly any difference for the way to implement thing on top of that the UI stack on the different platforms are actually a little bit different so if you demo on Android you a XML iOS you can use storyboards and the uwp has its own version of demo so we had to have a small piece off the API that is different from platform to platform and that's where that's the UI it means the map you control and that means that's the part where you might not share code but all the stuff in the blue box is where you share a code so that means all your business logic can be shared across those you have to learn the SDK it's same thing I went over however if you don't want to do that we have salmon forms salmon forms is an abstraction of uwp iOS and Android it does not at this point support WPS but it allows you to write bammel on all these platforms and share that UI across all of them so it's the right ones it is a can be a little bit of least common denominator sometimes so if you're really about pixel perfect and really really feel native to each platform salmon forms might not be for you but if you have to get a quick app out at a really low cost it's a really really great option for something like that there's first cons and it's constantly improving Semoran forms and then last which is through 2017 add a bunch of extra really great support for it like the signer support and those kind of things all right please really just this is how you lose your thing about it there's the core piece that's really all black box to you but there's big giant blue box that's where you write on with all your code and then a little bit of UI code unless using salmon forms and that can also be shared so let's get started let's do something how doing a fair amount okay well I think the great news about working with archers from time SDK 100 is that no install is necessary to get started so all of the api's have been published as nuga packages on nougat org easy to find you can just type in as we don't guess long time as your search term on nougat Dorgan you'll find all of our nuga packages for the api's that means WPF u WP summon androids I'm an iOS summon forms local services the local server toolkits with us anymore and bigger packages I think I'm okay a lot of neutral packages and they work directly within Visual Studio using the nougat package manager so install straight into your solution or into your project but we do it we do also provide a visual studio extension that you can download as well so you can log on to the ArcGIS developers web site with your developer account download the Visual Studio extension install that into Visual Studio and that does provide some simple project templates for each of those api's or each of those project types the Visual Studio extensions actually interesting because it includes the niggar packages so rather than have two different mechanisms and mechanisms for providing the api to you one online as new get one local or some other referencing system we've made them included them within the visual c extension as nougat packages what the extension does is create a load local nougat source so within Visual Studio you'll see an ESRI nougat source and you can reference the nougat package from that local source I said that the Visual Studio extension contains the simple project templates there's actually a separate nougat package now for local server as well so that's a slight difference from the tech 10px generation that we'll talk about in a minute and also the open-source toolkit so the open-source toolkit isn't compiled as a nougat package or built as a nougat packages on nougat org we released a beta earlier this week for the 100 API so you can go out and take a look at that today it includes already a compass legend table of contents a sign-in dialogue andö PF feature data field each field and a scale line control as well right now that's available for WPF and UWP and we'll be adding new go packages online with xamarin supporters awesome so I talked about downloading the SDK from the developers site that's your point of entry into the ArcGIS runtime SDK code or net the toolkit source is on nougat and again hub repo the samples as well and github repo as all the demos as well and then there's some other resources as well for helping to get started with the SDK the need developer labs that are talked about in the plenary earlier this week there's a dotnet section with three developer lamps written in dotnet that build on top of the same design data design developed workflow of the other labs and the not a high-level Doc's as well so actually one up from the doctor SDK on the developers site are a series of high-level Doc's for example working with web Maps working with web scenes licensing information like that you can find as a high level on the developers side so I hand over to bought enough to take a look at building off first app thank my I actually got a surprising number of questions about support for which is three 2017 which was released two days ago so I figured let's live on the wild side and actually do this demo in 2017 and see if it works one thing that won't work is the template integration that Mike talked about so you will not see if I go file new project here in 2015 you should see some of these project templates and these are just started Sam is like the active runtime app these will be integrated into 2015 currently not in 2017 the next update will have that sorry we didn't release in the two days we've been slacking with a conference so this not in here but I'm actually going to start blank because I want to show you like to get set up so I'm just going to start a new BFF this looks just like 2015 so don't really worry too much about that bit and they call it it be that some woops caps lock have some in demo and so I need another gift right now pretty much all the code you will see will work on all the different platforms the mark-up or you go to P won't be slightly different it will be very very similar to Simon forms markup and native Android UI your iOS UI will be quite different but again all the code that I'm actually writing will be the exact same thing it's all of this applies so let's first get nougat pad so normally you would go in to add references but there's another one which is manage nougat packages and that's actually the one you have to go into now it's not in the add references so don't go in there and I can just say browse and anything actually I can just click in the drop down if I install the SDK I will have an s3 section right here and I can click that and will show all the packages that are installed and when you get version 101 released that you will be able to still pick this and then take different versions but right now now couldn't work only one version installed but I can also go through if I didn't install it I can just search for the package name and here they are in this case you will actually see ten to seven is also listed over here so that's how you act all you have to do is just click install it goes and downloads it you will notice though the toolkit says version 10 choose 7 and Mike just said release the new version which we did but it's a beta so you have to check this little thing up here says include pre-release and wants to do that now toolkit exercise 100 0 0 1 beta 1 so that's how you get that so just a little FYI might look a little hip in that first you would also see a bunch of specific packages for each platform technically you don't really have to worry too much about that you can just take the top one here this will pull in the right platform dependencies and you can see in the dependencies that if you're doing WPS it will take the ESRI Q's runtime WPF one and if you do I also download that one it won't download all of them just the ones that your solution actually needs so that's actually this one is actually not we just released this one that points to all of them it is not in this set up today so there you have to go and pick the WPF one I'm actually going to cheat I'm just going to add the toolkit one because that will actually point to the WPF one and also install all that cascading installs which is really so you see here I'm going to install toolkit to be delicate and the WPF bit so it's smart enough to figure out the dependencies they're really accepted at one dependency that npad's gates to all the other ones don't like to go and download it it's finished and I'm clicking my references I now have it here that's all I have to do so I'm just going to hit a quick little pill make sure things looks good it's shirred and I'm just going to open the folder and I'm going to show you what happens so here is my app there's the runtime there's a toolkit but if it also installs these all the length the language resources but there's also a nut case runtime 101 folder this is what you used to actually have to go through a deployment tool to do the pills coming out does that for you and there is a 32-bit folder in here for the 32-bit DLL and then the question is the widest in there the ninja support 64-bit where's the 64-bit DLL we do but this app is not a 64-bit app and that's something to be aware of when you do a WPF app it is actually not a 64-bit app by default there is a little thing in your project Simmons's prefer 32-bit and we're smart insane oh you're making a 32-bit app why would we deploy the 64-bit so it's trying to be smart about this I just uncheck that and hit build and now there's a 64 bit folder as well so it's smart enough to not do that or if I make it only 64 bit then it doesn't install the 32 one so just be aware of that all right first thing I'm going to do is something that's technically not necessary but it is a good practice I am going to initialize the runtime do that the first thing when the app launches up initialize it if you don't do that when you start calling into the API this will automatically happen but sometimes if this print of the code that are the the bindings I got deployed something is wrong with them or didn't get deployed for whatever reason or you pointed to a different installed folder for that that's not there then you can get a very very obscure error for instance tration parse the sound with the sam'l parsing error because they couldn't figure out what the control was because they couldn't find an initialized correctly so it's a good thing to always put this initialized call in here because then you get the error right there before doing anything else and it'll tell you exactly what's wrong another thing that could happen is we require the visual C++ 14 libraries to be installed at the system requirement we do not deploy them for you so if your sometimes go to deployment on a machine that doesn't have that installed that would actually crash with any are telling you that so this air this this call will actually also throw right here and say that there's dependencies missing right let's write some code so I am just going to go all Sam here and the first thing I will do for those have done you star iti before it's pretended register on namespace I'm just going to put in a little map UCF see all my toolkit controls here it's kind of neat and let's call it that view I'm going to set the map to I'm just going to use some MVM a.m. style coding so I'm just going to bind to a map property that will create in a second and I'm getting up a funky squiggle that doesn't mean anything right now if that happens once in lastly on this machine anyway let me just quickly create a little property here just going to cheat and put all my using sin so I'm declaring a map property and I'm just going to create a new map with the the streets might picture base map and I'm going to zoom in on this egg is going to be at the conference center as a starting point I'll just set the data context to this it's not the actual imitative to the map we'll take this off a little prettier maybe I'm like and let's run the app so you could declare the math and markup as well I like to do it in code because I feel like the map is the model object in the sense and that's the one that I work with them I for not creating from portal and get it that way I'm going to go there I have my first app it's a nice mixer map can I expand the window like that it's quite dark on this map maybe we should change it that's very easy create about the street selector instead I might be a little easier to see on the screen there you go cool that's fun but not that interesting let's create ethics pulling a toolkit to while we're at it I'm just going to add a little compass control here and it the combat spatially just shows what's north and you can set it heading to any number you want but the clever thing is I could just set it to the rotation value off the map view itself so I just find straight over to the map view and so if I run this we should now have a little tool control as well it's gone you don't see it because it's clever it's when I rotate the map it pops up in the corner I can see that up there let me head up there if i zoom back to North it disappears again that could be turned off there's a property for auto hide but you can just turn off but it's a nice little experience you can right coach if you tap it points that it resets the back to North it's nice little gaming to have anyway I do want to write a little more in fun map oh I'm just going to copy a little bit of this code in here and I'll explain this in a sec that was right cheating a little here so I create a have a new have a map map it a little more advanced code that creates set up a whole map for me let's change this to the streets again like that so this is the basis the same piece of code but I created with new thing we have is called the feature collections and these are probably already seen these in a web map and online and I created a dynamic table on the fly and I'm just adding one a text field here that's a point layer assign it a renderer like this circle Winston's color red the red dots and I'm going to add that to the map of a racial layer so we have a base map and we have operational layers the base map goes into a little more optimal but rendering performance mode for those so it's good to actually not just put everything in operational layers but but keep the ones that you kind of want to operate on it gets a nice separation between what's just a base if you want to switch out the different street maps for instance that's a great way to separate them because you can just assign a new basement but have a base map picker that way the next thing I want to do is I want to be able to add something to my table so I'm just going to be through the simple thing and have a click event or tab oven if I tap the map I am going to create a new feature in here with some crab the first feature collection here from the table I'm going to create a feature from the table assignment geometry to where I clicked so that is when this case had just set the text up location but it could be anything and I get a squiggle here for because this adding a feature is an asynchronous operation and to await that I have to actually clear that my method is async we where when you do a thing would that's kind of a no-no because it could really bring it down your app if this add fail so it's also if you're forced to do anything void it's better not to but if you're forced to which I am because it's an event I can't get around making this award method the good thing to have a catch and then maybe it has some error message to the user here so a sink of all a thing away makes writing multi-threaded code super easy but it doesn't make multi-threaded easy so there can be some caveats with that so at least catch in whatever it will come back here on the same play cool see this works so I could create an in-memory feature layer that I can now modify who like that points we can add so on so forth but it's not really that interesting because let's try to the app down and launch it again all this is going to be gone how do I persist this data and feature collections to meet because they can actually be part of the web map so if only I could create a web map from this map wouldn't that be nice so let me try that and say if I close it maybe let's try and close my app I can just sterilize the whole map to Jason and write it to disk so just write a file called map but Jason and put it in so if you have a hundred thousand features from each collection table this is not a very good idea it becomes a very very large JSON object but for just a little bit of data they want to store rehydrate this place is a really neat way to do it and then the only thing then have to do is one of the Matt launches again instead of creating a new map we could just say hey if that file is already on disk let's just read it in and return that benefit so the first time this file doesn't exist so I'm going to add a couple of points that I'm going to shut down starting in and there they are pretty neat and this way let's look at what's inside here math let's open that up there's all the J's this is the entire map this is a standard extra wet map that can't be shared with anyone I put it on disk right now but it could be open by the JavaScript or it could be open by another run time could be open by a pro including these feature collections that are in here so let's actually do that let's make this available to other people so I'm going to first add a little button to my app and say let's publish this map just going to put a button here this when you click it let's publish it this to the portal for sharing it's surprisingly easy I'm just explained this code here there's sitting a portal M talking to in this case is just the standard are gifts that come portal and we'll skip over this don't come back to this bit but the first thing I want to do is to publish something to the portal I have to have a credential have to be signed into the portal as a user and none of you can't publish maps because you know images create a portal without a user will get an anonymous user but if you force a portal creation with a credential then you're that person so I'm just going to use our authentication managers challenge town or two to reuse that but still into the system to actually determine me a token for a certain user so once I have the portal which I create really all I have to do is save with the portal dev summit you should probably give it a better tag our description let's do how about doing date time but now so you can see this is not fake I have to specify a few tags ultimately a thumbnail as well and that's really all I have to do now the moment I do this the map will be associated with the portal and the map has an item on it in this case be a portal item so I could check well if it already has an item just call save I don't have to do all that other stuff you know Mary goes up to the portal and face it and if it don't have an ID mole I guess have to create a new they have to call save as instead of say if I were to call save on a thing that are saved when it doesn't have a portal item so able throw and say there's it's like having like a no file name for a file you can't save it until you define the file so that's pretty standard let's try that and by the way here is my current content in my portal I haven't done maps since 2015 apparently let's add some more this is published a portal oh I forgot something I do not have a child hunter because it's not out of the box but it's with the toolkit the toolkit provides a challenge enter you can grab you can change it to your liking if you don't like the UI or experience but we provide a generic one that handles all the authentication methods we know off so really I just set it up with with an authentication handler it means to take the UI I said it should be calling back on because it has to pop up a UI and often the challenges might come on a background thread you can also write your own that also always returns the same username password if you just want hard code something in probably not best practice but it can be done with a quick simple it also provides you a way to store your credentials into the credential manager so but if I ask again oh there is one thing I log into my I get the option to click here so when we do the demo I'm gonna have to don't book to do it again and should now publish here my content we French there it is dev summit 2017 that's pretty easy hopefully my data is in here there's a date time talk about right it wasn't fake you and little luck there's my thoughts one thing I did forget I did not set it up for saving it's for saving the location that I was at so it might be a good idea here to say math dot initial view point is I'll just grab the curtain one let's get initial viewpoint or current viewpoint I'll just use the print bounding box and that way the portal can associate a viewpoint with it the view the initial viewpoint is actually part of the web map so when I save it to Jason they wouldn't actually remember that but the portal item consists of two things the web map and made a data about the web map and it goes into that metadata and then when we call save here it's smart enough to also take that and put into the item itself that's outside the web map so for what you'd do this again I should probably leave this map along to eat I could just open it from the portal but instead of from disk right now I'm reading it from a disk but if I did something like this that's more thoughts I would publish again look it actually remember my credentials from last time that can be turned off in the channels that we don't want that kind of functionality let's go back to my content then I'll refresh and open to the timestep changed if you noticed there we go right where I left off let's add some more along this here and I came out because it already had an item associated with and I just clicked published now it's not creating a new web map so if i refresh here we should see those dots there we go pretty neat speech collections are a new functional that wasn't their intent to it's been in the platform and we had a way to convert them into graphics but there's a really good way to put them back and publish them the future collection can also by itself be published to the portal so it can be reused in various maps so that takes all that data out of the map and into its own thing it's not a replacement placement for feature services they have each their pros and cons this is really neat for just sharing a quick look at their data a data result that you want to share with others there's another reason if you have a map that might suddenly be featured by CNN or something and goes viral feature collection can actually be more efficient than a peaches server because if they all make the same query to get the same hundred features or something there's no reason to have this huge overhead of doing a sequel query until in JSON because the feature collection is just a dumb JSON file on disk that's being served out so it can actually help scale really well to these which doesn't get a million requests for it so your feature server doesn't get bogged down just have to serve up a pre generated basis is the equivalent of the query result that's just pre generated and saved to disk so there are some some nice benefits for having things as a feature collection that way yeah I think that concludes my demo for building your first app and getting portal future collections so soon if you think things bad right excellent things wasn't great demo of building our first app there now let's take a look at using the local server so the local server is a component that's available to use with the ArcGIS runtime SDK for net one of the things that we're promoting it for is for use as a way to provide geoprocessing and an analytical capabilities with the IHS runtime SDKs so specifically available for the Windows and Linux platforms working with dotnet that means it's available with the dopey F API it's the local server SDK itself is also available for the Java and cute SDKs one of the changes from 10 to is that we don't bundle it in within the the SDK so the Visual Studio extension that i talked about downloading and the arcgis developers site doesn't include the local server it's a separately available component mount i've got a dope EF application in front of me here you can see the zamel and the map view if we switch to the nougat package manager for this solution you can see that I've really reckoned the WPF nougat package here but also what I also want to do is reference the local services package so the API for actually working with a local server and working with local services within the dotnet SDK is a separate nougat package that means in here if I search for local server and switch to the Browse tab then I see the local server nuga packages so every are just run time dot local services is the noodle package for use with the dough Kiev API and for working with local server so I can install that to my project here and we pick the version 100 I should obviously view the license I understand the licensing and understand the ESRI license terms for this but I'll just accept the license and install that nougat package into my solution so we can see that successfully installed the local service if I switch back to the install tab now then we see the dough Kiev and the local services nuga packages are both installed into my solution so I can jump over to my map view model and actually start weddings liking some code against this if I want to create a local geoprocessing service I can just instantiate a new local local geoprocessing service there that's that string that at once that will be the path to a geoprocessing package created with an arcmap so actually that's that's how I start working with the local server and creating local services if I was to build this solution and just check that I've written my code correctly I actually get a build warning down here so we can see that it tells me the arch s long time local server SDK is not installed although I've reckon to the nuga package I actually need to download the one-and-a-half gigabyte ArcGIS runtime local server SDK that includes all of the local server functionality well I've already done that in fact so what I'm just going to do is jump back to regedit and we name this registry key so I faked up the fact that I didn't have the didn't have the SDK installed and if I rebuild that build successfully and I'm actually able to now start building a not just runtime SDK for dotnet there were PF application but local server functionality now Morten puts in his demo about how the nougat package is automatically and the referencing system is automatically building the deployment for you within your output folder if I take a look at the output folder for my project now we can see that up just one time 100 folder in there contains the same content that you saw in in Morton's application so the client 32 resources folder in this case but actually if I go back up one level you can see that there's also a local server folder as well so that local server folder then contains all of the deployment in this case just a 32-bit deployment but that's built based on the on the fact that I've reckoned that nuga packaged and it starts to flowing back into my application if I switch back to visual studio and just say show all files one thing that I one thing that I can do is actually control what gets deployed for the local server so by default it will just deploy the minimum required to post a local map service but actually in my case I wanted to do some gear processing so we can see the manifest file here and there's a geoprocessing item here and if i just set that to true that will start to deploy the local server geoprocessing content as well and then there are some additional options under that geoprocessing so some of the extensions map server results network analyst if i want to do some python scripting then i would change the python scripting deployment option as well and then next time I rebuild my solution that's deploying additional components into that deployment okay so that was a demo of using the local server component without just runtime SDK dotnet and look at highlighting some of the differences between the way we worked with it in ten to ten to X versus the way we work with it in 100 and now let's hand over to Morton is going to take a look at building xamarin apps already are you ready not really suitable times melt Bank yeah that's nice - go for it so there's this great feature that's been rock-solid since the beta and the only time I've failed in my two sessions here right now on my previous session where I did but then it's not really being like heavy right now but we'll talk to it let me just change one thing I am going to while before I start I'm just going to know so I'm just going to do a quick little overview of them are in but I just want to kick this off because it might take a little while we had a demo theater session for an hour Tuesday that's recorded I would recommend watching that it goes into much more depth about building xamarin apps but I just want to be able to miss that one from giving all of you of what it was a salmon F actually could look like and what I have here is you guys saw the indoor routing app for iOS that was showed at the plenary that actually grew out of assemble we had that that was actually a cross-platform xamarin app it was act assignment but it was only built for iOS but we do have a simpler version of it in our github repos and you will see that there are three projects down here one that's Android one of this and one of this uwp these are the project heads that has the specific UI for the platforms but all the platform code is up here in the business logic and that's actually most of the code is there's code or how to do geo code how to calculate a route how to get the data and provision them at what the layers and map definitions all that stuff is up in the shared code and so each of these project heads are actually referencing that and you would see in here I'll have just standard sam'l for my UI here it will be using normal binding to bind to my new model that is up in my shared business logic for Android you might see for those ton Android before there's an A XML file which is format that computer interview is no different but we also to provide a forms version come on and actually hear these three projects as the Android the IRS and you WPA projects are just standard projects they're just file new projects and that's all they are everything is in the form scripts and the what's left there is really just the UI which is just this little page and a little little helper classic variant doing an autocomplete custom control that wasn't part of the common form set really really neat way to build the app but I think the coolest thing is and I think it actually just worked now is this is an iPhone app running on my Windows Device it blows my mind every time I do this and to show that it's real I'm going to go here and I have a set of breakpoint on geocode so I'm going to enter Q maybe receptionist boom I have a breakpoint right here I can inspect I can see the text but I can actually do i phone debugging on my windows it is really running on this Mac so it's sending the map over to the Mac to run the simulator over here but then it equivalent of remote desktop in it back so I can keep my Mac close the way it's supposed to be and just stay on Windows and not having to touch it after it set up it's really really nice similarly here's the Android app I can debug the same thing I'm just going to launch it right now but it's the same map it looks a little bit different get to try to adapt it to something that looked like Android what I mean the same stuff applies here maybe I want to direct or iam this a director provides a nice feature it's been raining a lot more in California lately so it actually gives me an alternative route it tries to optimize indoor and outdoor see if we get a calculation here PC is a little bit bug down do it here there you go there's an ultimate route that's the debt the black dashed line that takes you a little bit of a detour but tries to reduce as much time outside as possible so you just have to run across the street and into a building so a little bit of a detour but then you don't get as wet here's the running on you WP you can see is very very similar maybe slightly different actually think I have it here here's a 3d version of it which just stopped working but we can also do this in 3d so you can see the changes but let's try something a little more fun because now that I had a uwp version I have a Windows Phone here anyone has a Windows Phone I thought so oh there's one that's one it would run on there but that's great I have this little called dragon board qualcomm dragon board it'll run on here run on raspberry but why not run it on this thing because just because just because I can and that's really the only reason to do it it's because I can so this is this is the demo that requires very good Wi-Fi for you to see what I do so hopefully let's see online let me know if the convention drops oh there you can see so usually when when you're turned on it starts scanning the room and try to figure out where am i where am I have it been here before I'm just going to remove this menu I can kind of click here you see there's a scanning going on and after a little while it starts to recognizing wait I've seen this place before sometimes it takes a second up to actually because I think I already have the app somewhere in this room come on it's a little quicker earlier and we look more around did someone move the room around so you can see it stuff is scanning where it gets to create the mesh of the whole room which makes it able to interact with them pushed up on the walls have balls roll around down the staircase oh I think it exits to go through see how it scans and whoa what's that up there there's my F and so I can grab here move it I think I just managed to put it inside the wall that was kind of unfortunate let's put it some else oh wow this property on you my right now it's still doing the skin there's my app now I got ya just yes I feel like I have a booty late voice here let me speed this up a little bit there we go now it seems to be about half a second behind me but I can assume in and so the exact same at but it has to change anything the whole week what's what's that Oh looks like a little bit you kind of watch out there I think you have a little bit of Thunder cloud over your head and there's a little bit of a t-rex sitting over there behind the chairs to just be a little bit careful and there's some limits and so I can put ads around the room have like my virtual desktops I think it's pretty neat and I didn't have to do anything to the app at all although and just deployed to here and that's I think it's pretty powerful thing about the universal platform that it just works whereas the Samer and your code just works we still have to build different apps and tweak them for the platform and have a Mac to build the iOS one it's really really powerful feature oh there's one more thing like symmetry we do we obtain no we don't we got set into this and we have more demo nothing the system is not sure one more thing because I mean this is the flat bit app over here I think I put an app right here so we don't provide an API for rendering 3d condom in the whole and policing out at this point we can just render the 2d s which is not that interesting but unity provides a great environment we can actually write net code to write my apps and I can take my you WP runtime and call into it for these all the API forget data for doing Geo codes and routing this waiting phone app to load right here takes a little while on it did not start where'd that go maybe it's behind me sometimes you get a little lost where did I put it and we launched something about two slides where you find the demo sorry so I get back to the slides where you find the demo yaks over there there's the duck by the way you guys already live come on don't fail me now okay I'm back as you can stack up again yeah okay so a couple of great demos about building xamarin apps and really highlighting the cross-platform capabilities of the ArcGIS runtime SDK for building for Windows Android and iOS and sharing a great deal of your code across all those three platforms so take a look at migrating from 10 to X to 100 then there's some really cool things in the 100 version that you couldn't do intend to X so we talked about some of the re-engineering effort that went on to really enhance the internals of the ArcGIS longtime core and we also brought out some new functionality than the 100 release as well one of those things was that cross-platform support with xamarin so building for Android iOS and windows using c-sharp but also the rec reader raster data so directly supporting raster data multiple raster formats really great high performance capability within directly within the ArcGIS runtime and also that's Morton showed in this demo in the building apps section actually opening maps from the platform from online from pro and saving those back as well as the excellent integration with ArcGIS online or not just portal also vector tile base maps as well as support for these excellent vector tile based maps which give great performance great footprint on disk so really small footprint on the device but also they scale really well on high resolution devices there's a couple of things that aren't supported any longer Windows 8 one store apps and Windows 8 one phone apps we're not supporting those any longer with the 100 we also support only dotnet 452 and above for to building your apps there's also some notable features on the roadmap so there were a couple of features in the 10 2 X 10 to 7 release that we had temporarily removed from the 100 release and we'll be bringing those back in updates this year the shapefiles kml related tables and time support they're not in the initial 100 release but they'll be coming out in in updates this year we've just published a guide document on our developer site about migrating from the 10 to X release to 100 so I encourage you to go and take a look at that if you're going through that process licensing model so there were some licensing changes in between 10 to X and 100 I won't cover all of this now but there's if you go to the developers to ArcGIS comm site and go to the ArcGIS runtime licensing section you can read all about the licensing for deploying your apps without just one time and then the quick look at the road map so one of the things we have been working for working on century released 100 release is better support for software rendering so we know a lot of you are interested in deploying your apps or in virtualized environments virtualized desktops and in the 100 release we didn't support software rendering which meant that your virtual environment needed needed Hardware graphic support so it needed a hardware GPU support within that environment we've added support for software rendering so when it detects that it can't find a hardware device it falls back to software rendering so you the user gets a slightly degraded experience potentially it's running it's using more CPU resources rather because there's no GPU available but it means that your app keeps running in that environment so we're really pleased with that and that's looking very promising at the moment Google Studio 2017 integration you sure you saw Morton using the nuga packages within 2017 there but the visual studio extension that's downloadable from the developers site currently doesn't work with in 2017 but will be will be working on that and releasing that in an update coming up with next the nougat practically males do integrate the nougat packages yet they work like just a template yep a simpler cool out API so showing cool outs on the map when you tap on the screen on a feature popping up a simple cool out with a button for an action an image for an icon and then a title and subtitle it's a really nice cool app API across the course the API is and then those are some of the specific net features that are on the roadmap there's more cross black one-time features coming up on the roadmap as well so the toolkits we're coming out of beta and becoming full product releases being able to take an entire map offline at the moment we support the ability to take a DNA - based off line from the sync enabled feature service and being able to take a tile cache offline from a tiled tile cached map service with the ability to actually take an entire map offline with geodatabases with your tile packages with vector tile packages that's a really nice feature coming up improved raster support full support for the dynamic layer capability or not just server map services improved labeling support as well including support for the arcade expression language coordinate notation for matter we're converting between degrees minutes seconds or MGR s grids and geometries and a number of new layer types or additional layer types WM TS web tiled layer s 57 and related tables and lots more there's a really really exciting features coming up on the roadmap this year and there's a road ahead session today at 2:30 which would encourage you to get it hear more about the one of the inventors in that session yeah do you want to work that's what so I can see over there the performance looks pretty bad for here in here that looks much better but here I have my terrain like I really get to stick my head into the mountains and get a feel for the terrain but I can call into the run time just by looking at a spot and then take tap and it's going to use to run time to do a geocode very versatile I can actually click and go around like get the address with these places and they should actually be are correct so just an example of how you can take the run time and actually using something probably wasn't initially intended for but it actually works great and very simple piece of things are add to the app to the Unity app unity was just is using exact available mono but it uses the universal runtime when it runs on the hololens under the covers since we are universal app or library it just works that way all right and we are right that were one minute over time but that concludes the session on they'll just run time SDK panetta softly thank you very much for attending [Applause]
Info
Channel: Esri Events
Views: 9,287
Rating: 4.8974357 out of 5
Keywords: Esri, ArcGIS, GIS, Esri Events, SDK, Universal Windows Platform, iOS, Android, .NET
Id: _KBcHw9HZ50
Channel Id: undefined
Length: 61min 23sec (3683 seconds)
Published: Thu Mar 30 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.